@flatbiz/antd 4.2.38 → 4.2.40

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 (90) hide show
  1. package/esm/anchor-steps/index.css +1 -0
  2. package/esm/anchor-steps/index.js +5 -0
  3. package/esm/anchor-steps/index.js.map +1 -0
  4. package/esm/anchor-steps-616cd173.js +3 -0
  5. package/esm/anchor-steps-616cd173.js.map +1 -0
  6. package/esm/button-operate/index.js +1 -1
  7. package/esm/{button-operate-6add2cbf.js → button-operate-697b2a94.js} +2 -2
  8. package/esm/{button-operate-6add2cbf.js.map → button-operate-697b2a94.js.map} +1 -1
  9. package/esm/button-wrapper/index.js +1 -1
  10. package/esm/{button-wrapper-c63ea6fc.js → button-wrapper-e833e139.js} +2 -2
  11. package/esm/{button-wrapper-c63ea6fc.js.map → button-wrapper-e833e139.js.map} +1 -1
  12. package/esm/cascader-wrapper/index.js +1 -1
  13. package/esm/{cascader-wrapper-7f1eed71.js → cascader-wrapper-db4a5382.js} +2 -2
  14. package/esm/{cascader-wrapper-7f1eed71.js.map → cascader-wrapper-db4a5382.js.map} +1 -1
  15. package/esm/{cell-render-03055c65.js → cell-render-362e4d87.js} +2 -2
  16. package/esm/{cell-render-03055c65.js.map → cell-render-362e4d87.js.map} +1 -1
  17. package/esm/data-render/index.css +1 -0
  18. package/esm/data-render/index.js +5 -0
  19. package/esm/data-render/index.js.map +1 -0
  20. package/esm/data-render-07c0ab6b.js +3 -0
  21. package/esm/data-render-07c0ab6b.js.map +1 -0
  22. package/esm/dialog-alert/index.css +1 -1
  23. package/esm/dialog-alert/index.js +1 -1
  24. package/esm/{dialog-alert-0ca83448.js → dialog-alert-23b4a533.js} +2 -2
  25. package/esm/{dialog-alert-0ca83448.js.map → dialog-alert-23b4a533.js.map} +1 -1
  26. package/esm/dialog-confirm/index.css +1 -1
  27. package/esm/dialog-confirm/index.js +1 -1
  28. package/esm/{dialog-confirm-b289f5ed.js → dialog-confirm-2656caad.js} +2 -2
  29. package/esm/{dialog-confirm-b289f5ed.js.map → dialog-confirm-2656caad.js.map} +1 -1
  30. package/esm/dialog-drawer/index.js +1 -1
  31. package/esm/{dialog-drawer-525a0bc3.js → dialog-drawer-a741961f.js} +2 -2
  32. package/esm/{dialog-drawer-525a0bc3.js.map → dialog-drawer-a741961f.js.map} +1 -1
  33. package/esm/dialog-modal/index.css +1 -1
  34. package/esm/dialog-modal/index.js +1 -1
  35. package/esm/dialog-modal-7b705b44.js +3 -0
  36. package/esm/dialog-modal-7b705b44.js.map +1 -0
  37. package/esm/dropdown-menu-wrapper/index.js +1 -1
  38. package/esm/{dropdown-menu-wrapper-2c4b6cad.js → dropdown-menu-wrapper-3544d20e.js} +2 -2
  39. package/esm/{dropdown-menu-wrapper-2c4b6cad.js.map → dropdown-menu-wrapper-3544d20e.js.map} +1 -1
  40. package/esm/easy-table/index.js +1 -1
  41. package/esm/easy-table/index.js.map +1 -1
  42. package/esm/editable-table/index.js +1 -1
  43. package/esm/{editable-table-2aa53f04.js → editable-table-2446a059.js} +2 -2
  44. package/esm/{editable-table-2aa53f04.js.map → editable-table-2446a059.js.map} +1 -1
  45. package/esm/form-grid/index.js +1 -1
  46. package/esm/form-grid/index.js.map +1 -1
  47. package/esm/index.js +4 -1
  48. package/esm/rich-text-viewer/index.js +1 -1
  49. package/esm/{rich-text-viewer-5cbe01e9.js → rich-text-viewer-3bf4569a.js} +2 -2
  50. package/esm/{rich-text-viewer-5cbe01e9.js.map → rich-text-viewer-3bf4569a.js.map} +1 -1
  51. package/esm/selector-wrapper/index.js +1 -1
  52. package/esm/selector-wrapper-dc08cc44.js +3 -0
  53. package/esm/selector-wrapper-dc08cc44.js.map +1 -0
  54. package/esm/selector-wrapper-search/index.js +1 -1
  55. package/esm/selector-wrapper-search-f799bcf0.js +3 -0
  56. package/esm/selector-wrapper-search-f799bcf0.js.map +1 -0
  57. package/esm/selector-wrapper-simple/index.js +1 -1
  58. package/esm/selector-wrapper-simple-7b34f7bd.js +3 -0
  59. package/esm/selector-wrapper-simple-7b34f7bd.js.map +1 -0
  60. package/esm/simple-layout/index.css +1 -1
  61. package/esm/simple-layout/index.js +1 -1
  62. package/esm/simple-layout-f43cfc5d.js +3 -0
  63. package/esm/simple-layout-f43cfc5d.js.map +1 -0
  64. package/esm/table-cell-render/index.js +1 -1
  65. package/esm/tabs-wrapper/index.js +1 -1
  66. package/esm/tabs-wrapper-675dc949.js +3 -0
  67. package/esm/{tabs-wrapper-0a2da713.js.map → tabs-wrapper-675dc949.js.map} +1 -1
  68. package/esm/text-overflow-render/index.css +0 -0
  69. package/esm/text-overflow-render/index.js +9 -0
  70. package/esm/text-overflow-render/index.js.map +1 -0
  71. package/esm/text-overflow-render-2ec38800.js +3 -0
  72. package/esm/text-overflow-render-2ec38800.js.map +1 -0
  73. package/esm/tree-wrapper/index.css +1 -1
  74. package/esm/tree-wrapper/index.js +1 -1
  75. package/esm/tree-wrapper/index.js.map +1 -1
  76. package/esm/types/index.js +1 -0
  77. package/esm/types/index.js.map +1 -1
  78. package/index.d.ts +110 -0
  79. package/package.json +5 -4
  80. package/esm/dialog-modal-225b0fe0.js +0 -3
  81. package/esm/dialog-modal-225b0fe0.js.map +0 -1
  82. package/esm/selector-wrapper-ece722f5.js +0 -3
  83. package/esm/selector-wrapper-ece722f5.js.map +0 -1
  84. package/esm/selector-wrapper-search-aad145b5.js +0 -3
  85. package/esm/selector-wrapper-search-aad145b5.js.map +0 -1
  86. package/esm/selector-wrapper-simple-49384d37.js +0 -3
  87. package/esm/selector-wrapper-simple-49384d37.js.map +0 -1
  88. package/esm/simple-layout-08f90dab.js +0 -3
  89. package/esm/simple-layout-08f90dab.js.map +0 -1
  90. package/esm/tabs-wrapper-0a2da713.js +0 -3
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/tree-wrapper/model.ts","@flatbiz/antd/src/tree-wrapper/hooks.ts","@flatbiz/antd/src/tree-wrapper/utils.ts","@flatbiz/antd/src/tree-wrapper/tree-wrapper.tsx","@flatbiz/antd/src/tree-wrapper/index.ts"],"sourcesContent":["import { isArray } from '@dimjs/lang';\nimport { API, ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport { TPlainObject, treeToArray, TSetDefaultDefined } from '@flatbiz/utils';\nimport { TreeProps } from 'antd';\nimport { TRequestStatus } from '../request-status';\n\nexport type ModelState = {\n treeList: TSetDefaultDefined<TreeProps['treeData'], []>;\n treeTiledArray: TPlainObject[];\n queryIsEmpty: boolean;\n requestStatus?: TRequestStatus;\n};\n\ntype ModelActionParams = {\n setTreeList: {\n treeList: ModelState['treeList'];\n childrenName: string;\n };\n resetTreeList: void;\n changeRequestStatus: TRequestStatus;\n treeListAppendChildren: {\n value: string | number;\n appendList: TPlainObject[];\n childrenName: string;\n valueName: string;\n };\n};\n\nconst defaultState: ModelState = {\n treeList: [],\n treeTiledArray: [],\n queryIsEmpty: false,\n};\n\nconst TreeWrapperModel: ModelType<ModelState, ModelActionParams> = {\n actions: {\n setTreeList: (params) => {\n return (state) => {\n state.treeList = params.treeList || [];\n state.treeTiledArray = treeToArray(state.treeList, params.childrenName);\n state.requestStatus = 'request-success';\n };\n },\n resetTreeList: () => {\n return (state) => {\n state.treeList = [];\n };\n },\n changeRequestStatus: (params) => {\n return (state) => {\n state.requestStatus = params;\n if (params === 'request-error') {\n state.treeList = [];\n }\n };\n },\n treeListAppendChildren: (params) => {\n return (state) => {\n const array = treeToArray(state.treeList, params.childrenName);\n const target = array.find((item) => item[params.valueName] === params.value);\n if (target) {\n if (isArray(params.appendList) && params.appendList.length > 0) {\n target[params.childrenName] = params.appendList;\n } else {\n target.isLeaf = true;\n }\n }\n state.treeTiledArray = treeToArray(state.treeList, params.childrenName);\n };\n },\n },\n state: defaultState,\n};\n\nconst treeWrapperModels: Record<string, API<ModelType<ModelState, ModelActionParams, any>>> = {};\n\n/**\n * ```\n * 使用方式\n * const [state, actions] = useTreeWrapperModel('key值').useStore();\n * ```\n */\nexport const treeWrapperModel = (key: string) => {\n if (!treeWrapperModels[key]) {\n treeWrapperModels[key] = Model(TreeWrapperModel);\n }\n return treeWrapperModels[key];\n};\n","import { TPlainObject } from '@flatbiz/utils';\nimport { treeWrapperModel } from './model';\n\nexport const getTreeDataList = (modelKey: string) => {\n const state = treeWrapperModel(modelKey).getState();\n return state.treeList as TPlainObject[];\n};\n","import { TAny, TPlainObject, treeLeafParentsArray, treeToTiledArray } from '@flatbiz/utils';\n\nexport const getExpandedKeys = (\n value: string | number,\n treeList: TPlainObject[],\n fieldNames?: { label?: string; value?: string; children?: string },\n) => {\n const tiledArray = treeToTiledArray(treeList, fieldNames);\n return treeLeafParentsArray(value, tiledArray, true, { value: 'value', parentValue: 'parentValue' });\n};\n\nimport { isArray, isObject } from '@dimjs/lang';\nimport { cloneState } from '@dimjs/model';\nimport { tree } from '@dimjs/utils';\nimport { isUndefinedOrNull, LabelValueItem, treeToArray } from '@flatbiz/utils';\nimport { DataNode } from 'antd/es/tree';\nimport { dequal } from 'dequal';\n\nexport const getVauleList = (data, labelInValueFieldNames: LabelValueItem<string | number>) => {\n let tempList = isUndefinedOrNull(data) ? [] : data;\n tempList = isArray(tempList) ? tempList : [tempList];\n tempList = tempList.map((item) => {\n if (isObject(item)) return item[labelInValueFieldNames.value];\n return item;\n });\n return tempList as Array<string | number>;\n};\n\nexport const array2map = (data, labelInValueFieldNames: LabelValueItem<string | number>) => {\n const list = getVauleList(data, labelInValueFieldNames);\n const map = {};\n list.forEach((item) => {\n map[item] = true;\n });\n return map;\n};\n\n/**\n * value的类型包括\n * string、number、\n * Array<string | number>、{ label: string, value: string | nuber }、\n * Array<{ label: string, value: string | nuber }>\n * 将数组转成对象,深度比较时不用考虑顺序问题\n * @param value1\n * @param value2\n * @returns\n */\nexport const treeWrapperValueDeepEqual = (\n value1: TAny,\n value2: TAny,\n labelInValueFieldNames: LabelValueItem<string | number>,\n) => {\n if (isUndefinedOrNull(value1) && isUndefinedOrNull(value2)) return true;\n const object1 = array2map(value1, labelInValueFieldNames);\n const object2 = array2map(value2, labelInValueFieldNames);\n const diff = dequal(object1, object2);\n return diff;\n};\n\ntype OnTreeDropMethod = (\n dataList: TPlainObject[],\n fieldNames: { value: string; children: string },\n info: TAny,\n) => {\n dataList: TPlainObject[];\n dragNodeData: {\n parentId?: string | number;\n id: string | number;\n index: number;\n };\n};\n\nexport const onTreeDrop: OnTreeDropMethod = (dataList, fieldNames, info) => {\n const dropKey = info.node.key;\n const dragKey = info.dragNode.key;\n const dropPos = info.node.pos.split('-');\n const dropPosition = info.dropPosition - Number(dropPos[dropPos.length - 1]);\n const treeKeyName = fieldNames.value;\n const treeChildrenName = fieldNames.children;\n\n const loop = (\n data: DataNode[],\n key: React.Key,\n callback: (node: DataNode, i: number, data: DataNode[]) => void,\n ) => {\n for (let i = 0; i < data.length; i++) {\n if (data[i][treeKeyName] === key) {\n return callback(data[i], i, data);\n }\n if (data[i][treeChildrenName]) {\n loop(data[i][treeChildrenName]!, key, callback);\n }\n }\n };\n const data = cloneState(dataList) as DataNode[];\n\n // Find dragObject\n let dragObj: DataNode;\n loop(data, dragKey, (item, index, arr) => {\n arr.splice(index, 1);\n dragObj = item;\n });\n\n if (!info.dropToGap) {\n // Drop on the content\n loop(data, dropKey, (item) => {\n item[treeChildrenName] = item[treeChildrenName] || [];\n // where to insert 示例添加到头部,可以是随意位置\n item[treeChildrenName].unshift(dragObj);\n });\n } else if (\n (info.node.props.children || []).length > 0 && // Has children\n info.node.props.expanded && // Is expanded\n dropPosition === 1 // On the bottom gap\n ) {\n loop(data, dropKey, (item) => {\n item[treeChildrenName] = item[treeChildrenName] || [];\n // where to insert 示例添加到头部,可以是随意位置\n item[treeChildrenName].unshift(dragObj);\n // in previous version, we use item.children.push(dragObj) to insert the\n // item to the tail of the children\n });\n } else {\n let ar: DataNode[] = [];\n let i: number;\n loop(data, dropKey, (_item, index, arr) => {\n ar = arr;\n i = index;\n });\n if (dropPosition === -1) {\n ar.splice(i!, 0, dragObj!);\n } else {\n ar.splice(i! + 1, 0, dragObj!);\n }\n }\n return {\n dataList: data,\n dragNodeData: dragNodeData(dragKey, data, fieldNames),\n };\n};\n\nexport const dragNodeData = (\n dorpNodeId: TAny,\n dataList: TAny[],\n fieldNames: { value: string; children: string },\n) => {\n const id = fieldNames.value;\n const children = fieldNames.children;\n tree.walkThroughTree<TPlainObject, TAny>(\n { [id]: undefined, [children]: dataList } as TAny,\n (node, index, _parent) => {\n node['__index'] = index;\n node['__parentId'] = _parent?.[id];\n },\n children,\n );\n const tileList = treeToArray(dataList, children);\n const target = tileList.find((item) => item[id] === dorpNodeId);\n return {\n parentId: target?.['__parentId'],\n id: target?.[id],\n index: target?.['__index'],\n };\n};\n","import { CaretDownFilled, MoreOutlined } from '@ant-design/icons';\nimport { isArray } from '@dimjs/lang';\nimport { cloneState } from '@dimjs/model';\nimport { classNames, extend } from '@dimjs/utils';\n\nimport { hooks } from '@wove/react';\nimport { Button, message, Spin, Tree, TreeProps } from 'antd';\nimport {\n DependencyList,\n forwardRef,\n Fragment,\n isValidElement,\n ReactElement,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { isUndefinedOrNull, TAny, toArray, TPlainObject, treeFilter, treeToTiledArray } from '@flatbiz/utils';\n\nimport { ButtonOperate, ButtonOperateItem, ButtonOperateProps } from '../button-operate';\nimport { DropdownMenuItem, DropdownMenuWrapper } from '../dropdown-menu-wrapper';\nimport { fbaHooks } from '../fba-hooks';\nimport { InputSearchWrapper } from '../input-search-wrapper';\nimport { RequestStatus, TRequestStatusProps } from '../request-status';\nimport { treeWrapperModel } from './model';\nimport './style.less';\nimport { getExpandedKeys, getVauleList, onTreeDrop, treeWrapperValueDeepEqual } from './utils';\n\ntype TreeWrapperValue =\n | string\n | number\n | Array<string | number>\n | TPlainObject<string | number>\n | Array<TPlainObject<string | number>>;\n\ntype TreeServiceConfig = {\n params?: TPlainObject;\n requiredParamsKeys?: string[];\n onRequest?: (params?: TAny) => TAny;\n /**\n * 响应数据适配器\n */\n onRequestResultAdapter?: (respData: TAny) => TPlainObject[];\n};\ntype TreeLoadDataServiceConfig = {\n getParams: (dataItem: TPlainObject) => TPlainObject;\n onRequest: (params: TPlainObject) => TAny;\n /**\n * 响应数据适配器\n */\n onRequestResultAdapter?: (respData: TAny) => TPlainObject[];\n};\n\nexport type TreeWrapperMenuItem = {\n title: string;\n onClick: (dataItem: TPlainObject, event) => void;\n icon?: ReactElement;\n};\n\nexport type TreeWrapperProps = Omit<\n TreeProps,\n | 'expandedKeys'\n | 'treeData'\n | 'onExpand'\n | 'selectedKeys'\n | 'checkedKeys'\n | 'onCheck'\n | 'onSelect'\n | 'defaultCheckedKeys'\n | 'defaultSelectedKeys'\n | 'fieldNames'\n | 'multiple'\n | 'loadData'\n | 'icon'\n> & {\n modelKey: string;\n /**\n * useEffect依赖项数组,用于重新发起获取接口数据\n */\n effectDependencyList?: DependencyList;\n /**\n * 请求服务需求的数据,当设置`selectorTreeList`后无效果\n */\n serviceConfig?: TreeServiceConfig;\n loadDataServiceConfig?: TreeLoadDataServiceConfig;\n /**\n * 当设置selectorTreeList后,serviceConfig将失效\n * ```\n * 1. 不支持异步数据,异步使用serviceConfig方式\n * ```\n */\n selectorTreeList?: TPlainObject[];\n /**\n * 通过服务获取数据后回调,当设置`selectorList`后无效果\n * ```\n * 相同modelKey,同时发起多个渲染时,只有第一个会执行 onSelectorTreeListChange 回调\n * ```\n */\n onSelectorTreeListChange?: (dataList: TPlainObject[]) => void;\n onRequestResponseChange?: (data: TAny) => void;\n onChange?: (\n selectedKey?: TreeWrapperValue,\n operateNodeData?: TPlainObject[] | TPlainObject,\n operateAllNodeDataList?: TPlainObject[],\n ) => void;\n fieldNames?: { label?: string; value?: string; children?: string };\n /**\n * 搜索关键字,打开tree折叠过滤关键字\n */\n searchValue?: string;\n /**\n * checkable模式下,onChange是否返回父节点,默认值true\n * 1. checkStrictly = true,模式下失效\n */\n checkableResponseParentNode?: boolean;\n loadDataFlag?: boolean;\n /**\n * 菜单结构类型 tile/平铺 fold/折叠;默认:fold\n * ```\n * 自定义设置 titleRender 后失效\n * ```\n */\n menuLayoutType?: 'tile' | 'fold';\n /**\n * 菜单触发类型,默认:click\n * ```\n * 自定义设置 titleRender 后失效\n * ```\n */\n menuTriggerType?: 'click' | 'hover';\n /**\n * 获取菜单类别\n * @param dataItem\n * @deprecated 已过期,请使用 menuOptions\n * @returns\n * ```\n * 1. menuLayoutType = tile 无效\n * 2. 自定义设置 titleRender 后失效\n * ```\n */\n getMenuOptions?: (dataItem: TPlainObject) => DropdownMenuItem[] | ButtonOperateItem[];\n\n /**\n * 根据 menuLayoutType 类型赋值\n */\n menuOptions?: {\n tile?: (dataItem: TPlainObject) => ButtonOperateProps;\n fold?: (dataItem: TPlainObject) => DropdownMenuItem[];\n };\n showSearch?: boolean;\n onSearchValueChange?: (searchValue?: string) => void;\n searchPlaceholder?: string;\n icon?: (data: { isParent: boolean; isLeaf: boolean }) => ReactElement;\n /**\n * 是否必选,最后一个不能取消\n */\n // required?: boolean;\n requestMessageConfig?: TRequestStatusProps['messageConfig'];\n /**\n * value格式\n *```\n * 1. string 、number\n * 2. Array<string | number>\n * 3. lableInValue = true,根据labelInValueFieldNames配置格式\n * 4. lableInValue = true,Array<labelInValueFieldNames配置>\n * ```\n */\n value?: TreeWrapperValue;\n labelInValue?: boolean;\n /**\n * ```\n * lableInValue = true,onChange输出数据字段名称,默认:{ label: string; value: string|number }\n * ```\n */\n labelInValueFieldNames?: { label: string; value: string };\n /**\n * 禁用状态是否可选,默认值true\n * 当dateItem中包含 disabled 则数据为禁用状态\n */\n disabledCanUse?: boolean;\n\n /** treeItem数据适配器 */\n treeItemDataAdapter?: (dataItem: TPlainObject) => TPlainObject;\n /** 搜索位置额外元素 */\n searchExtraElement?: ReactElement;\n /** 有唯一跟节点时,初始化是否展开,默认值:false */\n initRootExpand?: boolean;\n /** 搜素过滤方式,高亮 | 过滤;默认:filter */\n searchResultType?: 'highlight' | 'filter';\n /**\n * 拖拽节点处理,自定义onDrop事件后,失效\n * ```\n * 参数\n * 1. parentId 当前拖拽节点的父节点ID\n * 2. id 当前拖拽节点ID\n * 3. index 当前拖拽节点所在数组下标\n * ```\n */\n onDropNodeHandle?: (result: { parentId?: string | number; id: string | number; index: number }) => void;\n /**\n * 拖拽排序前判断,如果返回 true,可排序,其他不可排序\n * ```\n * 可用于需要权限控制判断\n * ```\n */\n onDropPrev?: (info) => boolean;\n /**\n * 标签渲染\n * ```\n * 1. 自定义设置 titleRender 后失效\n * 2. 与titleRender的区别\n * a. 设置 labelRender 后,menuLayout有效\n * b. 设置 titleRender 后,menuLayout失效\n * ```\n */\n labelRender?: (nodeData: TPlainObject) => ReactElement;\n};\n\nexport type TreeWrapperRefApi = {\n onClearSelectorList: () => void;\n getTreeDataList: () => TreeProps['treeData'];\n};\n\n/**\n * Tree包装组件,默认返回父节点,可配置不返回\n * @param props\n * @returns\n * ```\n * 1. treeNode内置字段说明(如需要相关功能,可在接口中添加固定字段)\n * a. disabled 禁掉响应\n * b. isLeaf 设置为叶子节点 (设置了 loadData 时有效)。为 false 时会强制将其作为父节点\n * c. disableCheckbox checkable模式下,treeNode复选框是否可选\n * 2. 当设置selectorTreeList属性后,serviceConfig将失效\n * 3. checkable=true,为多选模式\n * 4. 设置value后,组件显示受控\n * 5. 设置loadDataFlag=true,会动态获取children,当treeNode中包含isLeaf=true字段,表示为叶子节点,没有children了\n * 6. 内置 onDrop 事件已处理数组排序,通过 onDropNodeHandle 事件可获取操作节点排序数据;自定义onDrop后,内置onDrop失效\n * ```\n */\nexport const TreeWrapper = forwardRef<TreeWrapperRefApi, TreeWrapperProps>((props, ref) => {\n const {\n style,\n serviceConfig,\n effectDependencyList,\n selectorTreeList,\n value,\n onChange,\n modelKey,\n checkableResponseParentNode = true,\n checkable,\n onSelectorTreeListChange,\n onRequestResponseChange,\n treeItemDataAdapter,\n searchValue,\n showSearch,\n searchPlaceholder,\n requestMessageConfig,\n labelInValueFieldNames,\n labelInValue,\n disabledCanUse,\n menuLayoutType,\n menuTriggerType,\n initRootExpand,\n searchResultType,\n onDropNodeHandle,\n onDropPrev,\n labelRender,\n ...otherProps\n } = props;\n const hasSelectorTreeList = props.hasOwnProperty('selectorTreeList');\n const newServiceConfig = serviceConfig || {};\n const newEffectDependencyList = effectDependencyList || [];\n const [treeExpandedKeys, setTreeExpandedKeys] = useState<React.Key[]>();\n const [state, actions] = treeWrapperModel(modelKey).useStore();\n const [loading, setLoading] = fbaHooks.useSafeState(false);\n const requestPreKey = `request-progress-${props.modelKey}`;\n const fieldNames = useMemo(() => {\n return { label: 'label', value: 'value', children: 'children', ...props.fieldNames };\n }, [props.fieldNames]);\n // 必须是数组格式\n const defaultValueRef = useRef<Array<string | number>>();\n const menuLayoutTypeNew = menuLayoutType === undefined ? 'fold' : menuLayoutType;\n const menuTriggerTypeNew = menuTriggerType === undefined ? 'click' : menuTriggerType;\n\n const isMultiple = checkable === true;\n\n const labelInValueFieldNamesMerge = useMemo(() => {\n return { label: 'label', value: 'value', ...labelInValueFieldNames };\n }, [labelInValueFieldNames]);\n // tree 搜索值\n const [treeSearchValue, setTreeSearchValue] = useState<string>();\n\n const isFirstUseValueRef = useRef(true);\n const [refreshKey, setRefreshKey] = useState(0);\n const innerOperateValueRef = useRef<Array<string | number> | string | number>();\n\n const valueList = useMemo(() => {\n const tempList = getVauleList(value, labelInValueFieldNamesMerge);\n return tempList;\n }, [labelInValueFieldNamesMerge, value]);\n\n fbaHooks.useEffectCustom(() => {\n if ((isUndefinedOrNull(value) && isFirstUseValueRef.current) || state.treeList.length == 0) return;\n isFirstUseValueRef.current = false;\n if (!treeWrapperValueDeepEqual(value, innerOperateValueRef.current, labelInValueFieldNamesMerge)) {\n console.log(`modelKey:${modelKey} TreeWrapper key refresh`, value, innerOperateValueRef.current);\n innerOperateValueRef.current = isMultiple ? valueList : valueList[0];\n // 重新计算 expandedKeys\n const expandedKeys = getTreeExpandedKeys(valueList, true);\n setTreeExpandedKeys(Array.from(new Set(expandedKeys)));\n defaultValueRef.current = valueList;\n setRefreshKey(Date.now());\n }\n }, [value, state.treeList]);\n\n const valueIsEmpty = (data: string | number) => {\n return data === '' || isUndefinedOrNull(data);\n };\n\n const serviceResponseHandle = (respData) => {\n const respDataList = (\n newServiceConfig.onRequestResultAdapter\n ? newServiceConfig.onRequestResultAdapter(respData as unknown as TPlainObject)\n : respData\n ) as TPlainObject[];\n return respDataList;\n };\n\n fbaHooks.useEffectCustom(() => {\n setTreeSearchValue(searchValue);\n }, [searchValue]);\n\n const startDataSourceRequest = hooks.useCallbackRef(async () => {\n try {\n if (!newServiceConfig.onRequest) {\n throw new Error('onRequest 调用接口服务不能为空');\n }\n const requiredParamsKeys = newServiceConfig.requiredParamsKeys;\n const params = extend({}, newServiceConfig.params);\n if (requiredParamsKeys) {\n const isEmpty = requiredParamsKeys.find((key) => {\n return valueIsEmpty(params[key] as string | number);\n });\n if (isEmpty) {\n console.warn(`TreeWrapper组件:参数:${requiredParamsKeys.join('、')}不能为空`);\n return;\n }\n }\n try {\n setLoading(true);\n await actions.changeRequestStatus('request-progress');\n window[requestPreKey] = true;\n const _respData = await newServiceConfig.onRequest?.(params);\n onRequestResponseChange?.(_respData);\n const respData = serviceResponseHandle(_respData) as TreeProps['treeData'];\n onChangeSelectorList(respData || []);\n setLoading(false);\n if (initRootExpand && toArray(respData).length) {\n setTreeExpandedKeys([respData?.[0][fieldNames.value]]);\n }\n window[requestPreKey] = false;\n } catch (error) {\n window[requestPreKey] = false;\n setLoading(false);\n void actions.changeRequestStatus('request-error');\n }\n } catch (error) {\n setLoading(false);\n void message.error((error.message as string) || '数据查询异常...');\n }\n });\n\n fbaHooks.useEffectCustom(() => {\n if (hasSelectorTreeList) return;\n // 当无依赖项时,如果存在缓存数据,就不在调用接口\n if (Boolean(newEffectDependencyList.length)) {\n void startDataSourceRequest();\n return;\n }\n const allState = treeWrapperModel(modelKey).getState();\n if (allState.requestStatus === 'request-success') {\n onSelectorTreeListChange?.(allState.treeList);\n return;\n }\n // 判断相同的modelKey是否已经在请求数据中,避免重复请求\n if (!window[requestPreKey]) {\n void startDataSourceRequest();\n } else {\n onSelectorTreeListChange?.(allState.treeList);\n }\n }, newEffectDependencyList);\n\n fbaHooks.useEffectCustom(() => {\n if (hasSelectorTreeList) {\n onChangeSelectorList(selectorTreeList || []);\n }\n }, [selectorTreeList]);\n\n const onChangeSelectorList = hooks.useCallbackRef((dataList: TAny[]) => {\n if (dataList?.length === 0 && state.treeList.length === 0) {\n void actions.changeRequestStatus('request-success');\n return;\n }\n void actions.setTreeList({\n treeList: dataList || [],\n childrenName: fieldNames.children,\n });\n onSelectorTreeListChange?.(dataList);\n });\n\n const getTreeExpandedKeys = hooks.useCallbackRef((valueList: Array<string | number>, refresh?: boolean) => {\n let newTreeExpandedKeys = [] as Array<string | number>;\n valueList.forEach((value) => {\n if (!refresh && treeExpandedKeys?.includes(value)) return;\n const targetList = getExpandedKeys(value, state.treeList, fieldNames);\n newTreeExpandedKeys = newTreeExpandedKeys.concat(targetList.map((item) => item.value));\n });\n return newTreeExpandedKeys;\n });\n\n hooks.useUpdateEffect(() => {\n if (treeSearchValue) {\n const tiledArray = treeToTiledArray(state.treeList || [], fieldNames);\n const targetList = tiledArray.filter((item) => item.label?.includes(treeSearchValue || ''));\n setTreeExpandedKeys((prev) => {\n const mergeList = getTreeExpandedKeys(targetList.map((item) => item.value)).concat(prev || []);\n return Array.from(new Set(mergeList));\n });\n } else {\n setTreeExpandedKeys([]);\n }\n }, [treeSearchValue]);\n\n useImperativeHandle(ref, () => {\n return {\n onClearSelectorList: () => {\n void actions.resetTreeList();\n },\n getTreeDataList: () => {\n return state.treeList;\n },\n };\n });\n\n const onExpand = hooks.useCallbackRef((expandedKeys) => {\n setTreeExpandedKeys(expandedKeys as string[]);\n });\n\n const onRespChange = hooks.useCallbackRef((selectedKey, selectInfo?, selectAllList?) => {\n innerOperateValueRef.current = selectedKey;\n const selectList = isUndefinedOrNull(selectInfo) ? [] : isArray(selectInfo) ? selectInfo : [selectInfo];\n if (isUndefinedOrNull(selectedKey)) {\n onChange?.(selectedKey, selectInfo, selectAllList);\n return;\n }\n if (labelInValue) {\n const lvLabel = labelInValueFieldNamesMerge.label;\n const lvValue = labelInValueFieldNamesMerge.value;\n const labelInValueList = selectList.map((item) => {\n return {\n [lvLabel]: item[fieldNames.label],\n [lvValue]: item[fieldNames.value],\n };\n });\n if (isArray(selectedKey)) {\n onChange?.(labelInValueList, selectList, selectAllList);\n } else {\n onChange?.(labelInValueList[0], selectList[0], selectAllList);\n }\n } else {\n if (isArray(selectedKey)) {\n onChange?.(selectedKey, selectList, selectAllList);\n } else {\n onChange?.(selectedKey, selectList[0], selectAllList);\n }\n }\n });\n\n const onTreeChangeHandle = hooks.useCallbackRef((checkedData, operateInfo) => {\n let checkedValueList = props.checkStrictly ? checkedData.checked : checkedData;\n checkedValueList = isUndefinedOrNull(checkedData) ? [] : checkedData;\n checkedValueList = isArray(checkedValueList) ? checkedValueList : [checkedValueList];\n\n const selectedLeafList = [] as TPlainObject[];\n const selectedLeafValueList = [] as Array<string | number>;\n const selectedAllList = [] as TPlainObject[];\n const selectedAllValueList = [] as Array<string | number>;\n checkedValueList.forEach((item) => {\n const target = state.treeTiledArray.find((temp) => temp[fieldNames.value] === item);\n if (!target) return;\n const children = target?.[fieldNames.children];\n if (!isArray(children) || children.length === 0) {\n selectedLeafList.push(target);\n selectedLeafValueList.push(target[fieldNames.value]);\n }\n selectedAllList.push(target);\n selectedAllValueList.push(target[fieldNames.value]);\n });\n\n if (checkable) {\n setTreeExpandedKeys((prev) => {\n const mergeList = getTreeExpandedKeys(selectedLeafValueList).concat(prev || []);\n return Array.from(new Set(mergeList));\n });\n if (!checkableResponseParentNode && !props.checkStrictly) {\n onRespChange(selectedLeafValueList, selectedLeafList, selectedAllList);\n } else {\n onRespChange(selectedAllValueList, selectedAllList, selectedAllList);\n }\n } else {\n if (checkedValueList[0]) {\n const currentNode = selectedAllList.find((item) => item[fieldNames.value] === checkedValueList[0]);\n onRespChange(checkedValueList[0], currentNode, [currentNode]);\n } else {\n const nodeValue = operateInfo.node[fieldNames.value];\n const target = state.treeTiledArray.find((temp) => temp[fieldNames.value] === nodeValue);\n onRespChange(undefined, target, [target]);\n }\n }\n });\n\n const treeItemDataAdapterHandle = hooks.useCallbackRef((dataItem) => {\n return treeItemDataAdapter?.(dataItem);\n });\n\n const originalDataList = useMemo(() => {\n const list = cloneState(state.treeList || []);\n if (treeSearchValue && searchResultType !== 'highlight') {\n return treeFilter(cloneState(state.treeList || []), (node) => {\n const value = node[fieldNames.label]?.toLowerCase();\n return value.indexOf(treeSearchValue.toLowerCase()) >= 0;\n });\n }\n return list;\n }, [fieldNames.label, searchResultType, state.treeList, treeSearchValue]);\n\n const treeData = useMemo(() => {\n const loop = (data: TAny[]): TAny[] =>\n data?.map((item) => {\n const adapterItem = treeItemDataAdapterHandle?.(item) || item;\n const disabled = disabledCanUse ? undefined : adapterItem.disabled;\n const strTitle = adapterItem[fieldNames.label] as string;\n let titleDom;\n if (treeSearchValue) {\n const index = strTitle.indexOf(treeSearchValue);\n const beforeStr = strTitle.substring(0, index);\n const afterStr = strTitle.slice(index + treeSearchValue.length);\n titleDom =\n index > -1 ? (\n <span className={classNames({ 'v-tree-item-disabled': adapterItem.disabled })}>\n {beforeStr}\n <span className=\"site-tree-search-value\">{treeSearchValue}</span>\n {afterStr}\n </span>\n ) : null;\n }\n if (!titleDom) {\n titleDom = (\n <span className={classNames({ 'v-tree-item-disabled': adapterItem.disabled })}>{strTitle}</span>\n );\n }\n const children = adapterItem[fieldNames.children];\n return {\n ...adapterItem,\n disabled,\n [fieldNames.label]: titleDom,\n _treeItemName: strTitle,\n _disabled: adapterItem.disabled,\n [fieldNames.children]: isArray(children) && children.length > 0 ? loop(children) : undefined,\n };\n });\n return loop(originalDataList);\n }, [\n originalDataList,\n treeItemDataAdapterHandle,\n disabledCanUse,\n fieldNames.label,\n fieldNames.children,\n treeSearchValue,\n ]);\n\n const loadData = hooks.useCallbackRef((dataItem: TPlainObject) => {\n return new Promise<void>(async (resolve, reject) => {\n if (dataItem[fieldNames.children]) {\n resolve();\n return;\n }\n try {\n const respData = await props.loadDataServiceConfig?.onRequest?.(\n props.loadDataServiceConfig?.getParams?.(dataItem),\n );\n const respDataList = (\n newServiceConfig.onRequestResultAdapter\n ? newServiceConfig.onRequestResultAdapter(respData as unknown as TPlainObject)\n : respData\n ) as TPlainObject[];\n void actions\n .treeListAppendChildren({\n value: dataItem[fieldNames.value],\n appendList: respDataList,\n childrenName: fieldNames.children,\n valueName: fieldNames.value,\n })\n .then((allState) => {\n onChangeSelectorList(allState.treeList as TPlainObject[]);\n resolve();\n });\n } catch (error) {\n void message.error(error.message || '数据加载异常...');\n // 此处失败后,会重试“loadData”请求多次\n reject();\n }\n });\n });\n\n const isLeafNode = hooks.useCallbackRef((nodeData) => {\n const children = nodeData?.[fieldNames.children];\n // 当loadDataFlag=true,考虑叶子节点显示问题\n const loadDataFlag = props.loadDataFlag;\n const loadHasChildren = loadDataFlag ? !nodeData.isLeaf : false;\n const hasChildren = (children && children.length > 0) || loadHasChildren;\n return !hasChildren;\n });\n\n const titleRender = hooks.useCallbackRef((nodeData) => {\n const stringLabel = nodeData._treeItemName || nodeData[fieldNames.label];\n\n if (menuLayoutTypeNew === 'fold') {\n let menuOptions: TAny[] = [];\n if (props.menuOptions?.fold) {\n menuOptions =\n props.menuOptions?.[menuLayoutTypeNew]?.({\n ...nodeData,\n [fieldNames.label]: stringLabel,\n }) || [];\n } else {\n menuOptions =\n props.getMenuOptions?.({\n ...nodeData,\n [fieldNames.label]: stringLabel,\n }) || [];\n }\n return (\n <Fragment>\n <span className=\"tree-item-title\">{labelRender?.(nodeData) || nodeData?.[fieldNames.label]}</span>\n {menuOptions.length > 0 && (\n <DropdownMenuWrapper menuList={menuOptions}>\n <MoreOutlined />\n </DropdownMenuWrapper>\n )}\n </Fragment>\n );\n }\n const menuOptions = props.menuOptions?.tile?.({\n ...nodeData,\n [fieldNames.label]: stringLabel,\n });\n return (\n <Fragment>\n <span className=\"tree-item-title\">{labelRender?.(nodeData) || nodeData?.[fieldNames.label]}</span>\n {menuOptions ? (\n <ButtonOperate\n {...menuOptions}\n gap={5}\n className={classNames('tree-item-title-operate', menuOptions.className)}\n />\n ) : null}\n </Fragment>\n );\n });\n\n const onChangeDebounce = hooks.useDebounceCallback((value: string) => {\n setTreeSearchValue(value);\n props.onSearchValueChange?.(value);\n }, 300);\n\n const onSearchChange = hooks.useCallbackRef((e: React.ChangeEvent<HTMLInputElement>) => {\n onChangeDebounce(e.target.value);\n });\n\n const iconHandle = hooks.useCallbackRef((treeData) => {\n if (!props.icon) return null;\n if (isValidElement(props.icon)) return props.icon;\n const isLeafFlag = isLeafNode(treeData.data);\n return props.icon({\n ...treeData,\n isParent: !isLeafFlag,\n isLeaf: isLeafFlag,\n });\n });\n\n const treeFieldNames = useMemo(() => {\n return { title: fieldNames.label, key: fieldNames.value, children: fieldNames.children };\n }, [fieldNames]);\n const showTree = treeData.length > 0 && state.requestStatus !== 'request-error';\n const commonProps = {\n showLine: { showLeafIcon: false },\n titleRender,\n blockNode: true,\n switcherIcon: <CaretDownFilled />,\n\n onDrop: (info) => {\n const boo = onDropPrev?.(info);\n if (!boo) return;\n const { dataList, dragNodeData } = onTreeDrop(originalDataList as TPlainObject[], fieldNames, info);\n onDropNodeHandle?.(dragNodeData);\n onChangeSelectorList(dataList);\n },\n ...otherProps,\n fieldNames: treeFieldNames,\n expandedKeys: treeExpandedKeys,\n treeData,\n onExpand,\n loadData: props.loadDataFlag ? loadData : undefined,\n style: { width: '100%' },\n icon: iconHandle,\n };\n\n const checkedProps = {\n onCheck: onTreeChangeHandle,\n checkable,\n // 必须是数组格式\n defaultCheckedKeys: defaultValueRef.current,\n };\n\n const selectedProps = {\n onSelect: onTreeChangeHandle,\n multiple: false,\n // 必须是数组格式\n defaultSelectedKeys: defaultValueRef.current,\n };\n const sceneProps = checkable ? checkedProps : selectedProps;\n const cName = classNames('v-tree-wrapper', `v-tree-wrapper-menu-${menuTriggerTypeNew}`);\n const isSearchEmpty = state.treeList.length > 0 && !showTree && treeSearchValue;\n return (\n <div className={cName} style={style}>\n {!!showSearch && (\n <div className=\"v-tree-wrapper-search-area\">\n <InputSearchWrapper\n className=\"v-tree-wrapper-search\"\n placeholder={searchPlaceholder}\n onChange={onSearchChange}\n value={searchValue}\n allowClear\n />\n {!!props.searchExtraElement && (\n <span className=\"v-tree-wrapper-search-extra\">{props.searchExtraElement}</span>\n )}\n </div>\n )}\n\n {showTree ? (\n <div className=\"v-tree-wrapper-tree-wrapper\">\n <Spin spinning={state.requestStatus === 'request-progress'} />\n <Tree key={refreshKey} {...sceneProps} {...commonProps} className=\"v-tree-wrapper-tree\"></Tree>\n </div>\n ) : (\n <RequestStatus\n status={state.requestStatus}\n loading={loading}\n messageConfig={{\n 'request-success': isSearchEmpty ? '搜索结果为空' : '暂无数据',\n ...requestMessageConfig,\n }}\n errorButton={\n <Button type=\"primary\" onClick={startDataSourceRequest}>\n 重新获取数据\n </Button>\n }\n />\n )}\n </div>\n );\n});\n\nTreeWrapper.defaultProps = {\n disabledCanUse: true,\n};\n","import { fbaUtils } from '../fba-utils';\nimport { getTreeDataList } from './hooks';\nimport { TreeWrapper as TreeWrapperInner } from './tree-wrapper';\n\nexport type * from './tree-wrapper';\n/**\n * Tree包装组件,默认返回父节点,可配置不返回\n * @param props\n * @returns\n * ```\n * 1. treeNode内置字段说明(如需要相关功能,可在接口中添加固定字段)\n * a. disabled 禁掉响应\n * b. isLeaf 设置为叶子节点 (设置了 loadData 时有效)。为 false 时会强制将其作为父节点\n * c. disableCheckbox checkable模式下,treeNode复选框是否可选\n * 2. 当设置selectorTreeList属性后,serviceConfig将失效\n * 3. checkable=true,为多选模式\n * 4. 设置value后,组件显示受控\n * 5. 设置loadDataFlag=true,会动态获取children,当treeNode中包含isLeaf=true字段,表示为叶子节点,没有children了\n * 6. 内置 onDrop 事件已处理数组排序,通过 onDropNodeHandle 事件可获取操作节点排序数据;自定义onDrop后,内置onDrop失效\n * ```\n */\nexport const TreeWrapper = fbaUtils.attachPropertiesToComponent(TreeWrapperInner, {\n /**\n * 获取树形原数据\n * ```\n * 参数 modelKey 与 TreeWrapper属性 modelKey相同,才能获取数据\n * ```\n */\n getTreeDataList: getTreeDataList,\n});\n"],"names":["defaultState","treeList","treeTiledArray","queryIsEmpty","TreeWrapperModel","actions","setTreeList","params","state","treeToArray","childrenName","requestStatus","resetTreeList","changeRequestStatus","treeListAppendChildren","array","target","find","item","valueName","value","_isArray","appendList","length","isLeaf","treeWrapperModels","treeWrapperModel","key","Model","getTreeDataList","modelKey","getState","getExpandedKeys","fieldNames","tiledArray","treeToTiledArray","treeLeafParentsArray","parentValue","getVauleList","data","labelInValueFieldNames","tempList","isUndefinedOrNull","map","_isObject","array2map","list","forEach","treeWrapperValueDeepEqual","value1","value2","object1","object2","diff","dequal","onTreeDrop","dataList","info","dropKey","node","dragKey","dragNode","dropPos","pos","split","dropPosition","Number","treeKeyName","treeChildrenName","children","loop","callback","i","cloneState","dragObj","index","arr","splice","dropToGap","unshift","props","expanded","ar","_item","dragNodeData","dorpNodeId","_tree$walkThroughTree","id","_tree","walkThroughTree","undefined","_parent","tileList","parentId","TreeWrapper","forwardRef","ref","style","serviceConfig","effectDependencyList","selectorTreeList","onChange","_props$checkableRespo","checkableResponseParentNode","checkable","onSelectorTreeListChange","onRequestResponseChange","treeItemDataAdapter","searchValue","showSearch","searchPlaceholder","requestMessageConfig","labelInValue","disabledCanUse","menuLayoutType","menuTriggerType","initRootExpand","searchResultType","onDropNodeHandle","onDropPrev","labelRender","otherProps","_objectWithoutPropertiesLoose","_excluded","hasSelectorTreeList","hasOwnProperty","newServiceConfig","newEffectDependencyList","_useState","useState","treeExpandedKeys","setTreeExpandedKeys","_treeWrapperModel$use","useStore","_fbaHooks$useSafeStat","fbaHooks","useSafeState","loading","setLoading","requestPreKey","useMemo","_extends","label","defaultValueRef","useRef","menuLayoutTypeNew","menuTriggerTypeNew","isMultiple","labelInValueFieldNamesMerge","_useState2","treeSearchValue","setTreeSearchValue","isFirstUseValueRef","_useState3","refreshKey","setRefreshKey","innerOperateValueRef","valueList","useEffectCustom","current","console","log","expandedKeys","getTreeExpandedKeys","Array","from","Set","Date","now","valueIsEmpty","serviceResponseHandle","respData","respDataList","onRequestResultAdapter","startDataSourceRequest","_hooks","useCallbackRef","Promise","$return","$error","requiredParamsKeys","_params","isEmpty","_respData","_respData2","$Try_1_Post","$boundEx","$Try_1_Catch","error","message","onRequest","Error","_extend","warn","join","$Try_2_Post","$Try_2_Catch","window","resolve","then","$await_4","$await_5","onChangeSelectorList","toArray","Boolean","allState","refresh","newTreeExpandedKeys","includes","targetList","concat","useUpdateEffect","filter","_item$label","prev","mergeList","useImperativeHandle","onClearSelectorList","onExpand","onRespChange","selectedKey","selectInfo","selectAllList","selectList","lvLabel","lvValue","labelInValueList","_ref","onTreeChangeHandle","checkedData","operateInfo","checkedValueList","checkStrictly","checked","selectedLeafList","selectedLeafValueList","selectedAllList","selectedAllValueList","temp","push","currentNode","nodeValue","treeItemDataAdapterHandle","dataItem","originalDataList","treeFilter","_node$fieldNames$labe","toLowerCase","indexOf","treeData","_extends2","adapterItem","disabled","strTitle","titleDom","beforeStr","substring","afterStr","slice","_jsxs","className","_classNames","_jsx","_treeItemName","_disabled","loadData","reject","_props$loadDataServic","_props$loadDataServic2","_respData3","$Try_3_Post","$Try_3_Catch","loadDataServiceConfig","getParams","$await_6","isLeafNode","nodeData","loadDataFlag","loadHasChildren","hasChildren","titleRender","_props$menuOptions3","_extends5","stringLabel","_props$menuOptions","menuOptions","fold","_props$menuOptions2","_props$menuOptions2$m","_extends3","call","_extends4","getMenuOptions","Fragment","DropdownMenuWrapper","menuList","_MoreOutlined","tile","ButtonOperate","gap","onChangeDebounce","useDebounceCallback","onSearchValueChange","onSearchChange","e","iconHandle","icon","isValidElement","isLeafFlag","isParent","treeFieldNames","title","showTree","commonProps","showLine","showLeafIcon","blockNode","switcherIcon","_CaretDownFilled","onDrop","boo","_onTreeDrop","width","checkedProps","onCheck","defaultCheckedKeys","selectedProps","onSelect","multiple","defaultSelectedKeys","sceneProps","cName","isSearchEmpty","InputSearchWrapper","placeholder","allowClear","searchExtraElement","Spin","spinning","Tree","RequestStatus","status","messageConfig","errorButton","Button","type","onClick","defaultProps","fbaUtils","attachPropertiesToComponent","TreeWrapperInner"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/tree-wrapper/model.ts","@flatbiz/antd/src/tree-wrapper/hooks.ts","@flatbiz/antd/src/tree-wrapper/utils.ts","@flatbiz/antd/src/tree-wrapper/tree-wrapper.tsx","@flatbiz/antd/src/tree-wrapper/index.ts"],"sourcesContent":["import { isArray } from '@dimjs/lang';\nimport { API, ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport { TPlainObject, treeToArray, TSetDefaultDefined } from '@flatbiz/utils';\nimport { TreeProps } from 'antd';\nimport { TRequestStatus } from '../request-status';\n\nexport type ModelState = {\n treeList: TSetDefaultDefined<TreeProps['treeData'], []>;\n treeTiledArray: TPlainObject[];\n queryIsEmpty: boolean;\n requestStatus?: TRequestStatus;\n};\n\ntype ModelActionParams = {\n setTreeList: {\n treeList: ModelState['treeList'];\n childrenName: string;\n };\n resetTreeList: void;\n changeRequestStatus: TRequestStatus;\n treeListAppendChildren: {\n value: string | number;\n appendList: TPlainObject[];\n childrenName: string;\n valueName: string;\n };\n};\n\nconst defaultState: ModelState = {\n treeList: [],\n treeTiledArray: [],\n queryIsEmpty: false,\n};\n\nconst TreeWrapperModel: ModelType<ModelState, ModelActionParams> = {\n actions: {\n setTreeList: (params) => {\n return (state) => {\n state.treeList = params.treeList || [];\n state.treeTiledArray = treeToArray(state.treeList, params.childrenName);\n state.requestStatus = 'request-success';\n };\n },\n resetTreeList: () => {\n return (state) => {\n state.treeList = [];\n };\n },\n changeRequestStatus: (params) => {\n return (state) => {\n state.requestStatus = params;\n if (params === 'request-error') {\n state.treeList = [];\n }\n };\n },\n treeListAppendChildren: (params) => {\n return (state) => {\n const array = treeToArray(state.treeList, params.childrenName);\n const target = array.find((item) => item[params.valueName] === params.value);\n if (target) {\n if (isArray(params.appendList) && params.appendList.length > 0) {\n target[params.childrenName] = params.appendList;\n } else {\n target.isLeaf = true;\n }\n }\n state.treeTiledArray = treeToArray(state.treeList, params.childrenName);\n };\n },\n },\n state: defaultState,\n};\n\nconst treeWrapperModels: Record<string, API<ModelType<ModelState, ModelActionParams, any>>> = {};\n\n/**\n * ```\n * 使用方式\n * const [state, actions] = useTreeWrapperModel('key值').useStore();\n * ```\n */\nexport const treeWrapperModel = (key: string) => {\n if (!treeWrapperModels[key]) {\n treeWrapperModels[key] = Model(TreeWrapperModel);\n }\n return treeWrapperModels[key];\n};\n","import { TPlainObject } from '@flatbiz/utils';\nimport { treeWrapperModel } from './model';\n\nexport const getTreeDataList = (modelKey: string) => {\n const state = treeWrapperModel(modelKey).getState();\n return state.treeList as TPlainObject[];\n};\n","import { TAny, TPlainObject, treeLeafParentsArray, treeToTiledArray } from '@flatbiz/utils';\n\nexport const getExpandedKeys = (\n value: string | number,\n treeList: TPlainObject[],\n fieldNames?: { label?: string; value?: string; children?: string },\n) => {\n const tiledArray = treeToTiledArray(treeList, fieldNames);\n return treeLeafParentsArray(value, tiledArray, true, { value: 'value', parentValue: 'parentValue' });\n};\n\nimport { isArray, isObject } from '@dimjs/lang';\nimport { cloneState } from '@dimjs/model';\nimport { tree } from '@dimjs/utils';\nimport { isUndefinedOrNull, LabelValueItem, treeToArray } from '@flatbiz/utils';\nimport { DataNode } from 'antd/es/tree';\nimport { dequal } from 'dequal';\n\nexport const getVauleList = (data, labelInValueFieldNames: LabelValueItem<string | number>) => {\n let tempList = isUndefinedOrNull(data) ? [] : data;\n tempList = isArray(tempList) ? tempList : [tempList];\n tempList = tempList.map((item) => {\n if (isObject(item)) return item[labelInValueFieldNames.value];\n return item;\n });\n return tempList as Array<string | number>;\n};\n\nexport const array2map = (data, labelInValueFieldNames: LabelValueItem<string | number>) => {\n const list = getVauleList(data, labelInValueFieldNames);\n const map = {};\n list.forEach((item) => {\n map[item] = true;\n });\n return map;\n};\n\n/**\n * value的类型包括\n * string、number、\n * Array<string | number>、{ label: string, value: string | nuber }、\n * Array<{ label: string, value: string | nuber }>\n * 将数组转成对象,深度比较时不用考虑顺序问题\n * @param value1\n * @param value2\n * @returns\n */\nexport const treeWrapperValueDeepEqual = (\n value1: TAny,\n value2: TAny,\n labelInValueFieldNames: LabelValueItem<string | number>,\n) => {\n if (isUndefinedOrNull(value1) && isUndefinedOrNull(value2)) return true;\n const object1 = array2map(value1, labelInValueFieldNames);\n const object2 = array2map(value2, labelInValueFieldNames);\n const diff = dequal(object1, object2);\n return diff;\n};\n\ntype OnTreeDropMethod = (\n dataList: TPlainObject[],\n fieldNames: { value: string; children: string },\n info: TAny,\n) => {\n dataList: TPlainObject[];\n dragNodeData: {\n parentId?: string | number;\n id: string | number;\n index: number;\n };\n};\n\nexport const onTreeDrop: OnTreeDropMethod = (dataList, fieldNames, info) => {\n const dropKey = info.node.key;\n const dragKey = info.dragNode.key;\n const dropPos = info.node.pos.split('-');\n const dropPosition = info.dropPosition - Number(dropPos[dropPos.length - 1]);\n const treeKeyName = fieldNames.value;\n const treeChildrenName = fieldNames.children;\n\n const loop = (\n data: DataNode[],\n key: React.Key,\n callback: (node: DataNode, i: number, data: DataNode[]) => void,\n ) => {\n for (let i = 0; i < data.length; i++) {\n if (data[i][treeKeyName] === key) {\n return callback(data[i], i, data);\n }\n if (data[i][treeChildrenName]) {\n loop(data[i][treeChildrenName]!, key, callback);\n }\n }\n };\n const data = cloneState(dataList) as DataNode[];\n\n // Find dragObject\n let dragObj: DataNode;\n loop(data, dragKey, (item, index, arr) => {\n arr.splice(index, 1);\n dragObj = item;\n });\n\n if (!info.dropToGap) {\n // Drop on the content\n loop(data, dropKey, (item) => {\n item[treeChildrenName] = item[treeChildrenName] || [];\n // where to insert 示例添加到头部,可以是随意位置\n item[treeChildrenName].unshift(dragObj);\n });\n } else if (\n (info.node.props.children || []).length > 0 && // Has children\n info.node.props.expanded && // Is expanded\n dropPosition === 1 // On the bottom gap\n ) {\n loop(data, dropKey, (item) => {\n item[treeChildrenName] = item[treeChildrenName] || [];\n // where to insert 示例添加到头部,可以是随意位置\n item[treeChildrenName].unshift(dragObj);\n // in previous version, we use item.children.push(dragObj) to insert the\n // item to the tail of the children\n });\n } else {\n let ar: DataNode[] = [];\n let i: number;\n loop(data, dropKey, (_item, index, arr) => {\n ar = arr;\n i = index;\n });\n if (dropPosition === -1) {\n ar.splice(i!, 0, dragObj!);\n } else {\n ar.splice(i! + 1, 0, dragObj!);\n }\n }\n return {\n dataList: data,\n dragNodeData: dragNodeData(dragKey, data, fieldNames),\n };\n};\n\nexport const dragNodeData = (\n dorpNodeId: TAny,\n dataList: TAny[],\n fieldNames: { value: string; children: string },\n) => {\n const id = fieldNames.value;\n const children = fieldNames.children;\n tree.walkThroughTree<TPlainObject, TAny>(\n { [id]: undefined, [children]: dataList } as TAny,\n (node, index, _parent) => {\n node['__index'] = index;\n node['__parentId'] = _parent?.[id];\n },\n children,\n );\n const tileList = treeToArray(dataList, children);\n const target = tileList.find((item) => item[id] === dorpNodeId);\n return {\n parentId: target?.['__parentId'],\n id: target?.[id],\n index: target?.['__index'],\n };\n};\n","import { CaretDownFilled, MoreOutlined } from '@ant-design/icons';\nimport { isArray } from '@dimjs/lang';\nimport { cloneState } from '@dimjs/model';\nimport { classNames, extend } from '@dimjs/utils';\n\nimport { hooks } from '@wove/react';\nimport { Button, message, Spin, Tree, TreeProps } from 'antd';\nimport {\n CSSProperties,\n DependencyList,\n forwardRef,\n Fragment,\n isValidElement,\n ReactElement,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { isUndefinedOrNull, TAny, toArray, TPlainObject, treeFilter, treeToTiledArray } from '@flatbiz/utils';\n\nimport { ButtonOperate, ButtonOperateItem, ButtonOperateProps } from '../button-operate';\nimport { DropdownMenuItem, DropdownMenuWrapper } from '../dropdown-menu-wrapper';\nimport { fbaHooks } from '../fba-hooks';\nimport { InputSearchWrapper } from '../input-search-wrapper';\nimport { RequestStatus, TRequestStatusProps } from '../request-status';\nimport { treeWrapperModel } from './model';\nimport './style.less';\nimport { getExpandedKeys, getVauleList, onTreeDrop, treeWrapperValueDeepEqual } from './utils';\n\ntype TreeWrapperValue =\n | string\n | number\n | Array<string | number>\n | TPlainObject<string | number>\n | Array<TPlainObject<string | number>>;\n\ntype TreeServiceConfig = {\n params?: TPlainObject;\n requiredParamsKeys?: string[];\n onRequest?: (params?: TAny) => TAny;\n /**\n * 响应数据适配器\n */\n onRequestResultAdapter?: (respData: TAny) => TPlainObject[];\n};\ntype TreeLoadDataServiceConfig = {\n getParams: (dataItem: TPlainObject) => TPlainObject;\n onRequest: (params: TPlainObject) => TAny;\n /**\n * 响应数据适配器\n */\n onRequestResultAdapter?: (respData: TAny) => TPlainObject[];\n};\n\nexport type TreeWrapperMenuItem = {\n title: string;\n onClick: (dataItem: TPlainObject, event) => void;\n icon?: ReactElement;\n};\n\nexport type TreeWrapperProps = Omit<\n TreeProps,\n | 'expandedKeys'\n | 'treeData'\n | 'onExpand'\n | 'selectedKeys'\n | 'checkedKeys'\n | 'onCheck'\n | 'onSelect'\n | 'defaultCheckedKeys'\n | 'defaultSelectedKeys'\n | 'fieldNames'\n | 'multiple'\n | 'loadData'\n | 'icon'\n> & {\n modelKey: string;\n /**\n * useEffect依赖项数组,用于重新发起获取接口数据\n */\n effectDependencyList?: DependencyList;\n /**\n * 请求服务需求的数据,当设置`selectorTreeList`后无效果\n */\n serviceConfig?: TreeServiceConfig;\n loadDataServiceConfig?: TreeLoadDataServiceConfig;\n /**\n * 当设置selectorTreeList后,serviceConfig将失效\n * ```\n * 1. 不支持异步数据,异步使用serviceConfig方式\n * ```\n */\n selectorTreeList?: TPlainObject[];\n /**\n * 通过服务获取数据后回调,当设置`selectorList`后无效果\n * ```\n * 相同modelKey,同时发起多个渲染时,只有第一个会执行 onSelectorTreeListChange 回调\n * ```\n */\n onSelectorTreeListChange?: (dataList: TPlainObject[]) => void;\n onRequestResponseChange?: (data: TAny) => void;\n onChange?: (\n selectedKey?: TreeWrapperValue,\n operateNodeData?: TPlainObject[] | TPlainObject,\n operateAllNodeDataList?: TPlainObject[],\n ) => void;\n fieldNames?: { label?: string; value?: string; children?: string };\n /**\n * 搜索关键字,打开tree折叠过滤关键字\n */\n searchValue?: string;\n /**\n * checkable模式下,onChange是否返回父节点,默认值true\n * 1. checkStrictly = true,模式下失效\n */\n checkableResponseParentNode?: boolean;\n loadDataFlag?: boolean;\n /**\n * 菜单结构类型 tile/平铺 fold/折叠;默认:fold\n * ```\n * 自定义设置 titleRender 后失效\n * ```\n */\n menuLayoutType?: 'tile' | 'fold';\n /**\n * 菜单触发类型,默认:click\n * ```\n * 自定义设置 titleRender 后失效\n * ```\n */\n menuTriggerType?: 'click' | 'hover';\n /**\n * 获取菜单类别\n * @param dataItem\n * @deprecated 已过期,请使用 menuOptions\n * @returns\n * ```\n * 1. menuLayoutType = tile 无效\n * 2. 自定义设置 titleRender 后失效\n * ```\n */\n getMenuOptions?: (dataItem: TPlainObject) => DropdownMenuItem[] | ButtonOperateItem[];\n\n /**\n * 根据 menuLayoutType 类型赋值\n */\n menuOptions?: {\n tile?: (dataItem: TPlainObject) => ButtonOperateProps;\n fold?: (dataItem: TPlainObject) => DropdownMenuItem[];\n };\n showSearch?: boolean;\n onSearchValueChange?: (searchValue?: string) => void;\n searchPlaceholder?: string;\n searchStyle?: CSSProperties;\n icon?: (data: { isParent: boolean; isLeaf: boolean }) => ReactElement;\n /**\n * 是否必选,最后一个不能取消\n */\n // required?: boolean;\n requestMessageConfig?: TRequestStatusProps['messageConfig'];\n /**\n * value格式\n *```\n * 1. string 、number\n * 2. Array<string | number>\n * 3. lableInValue = true,根据labelInValueFieldNames配置格式\n * 4. lableInValue = true,Array<labelInValueFieldNames配置>\n * ```\n */\n value?: TreeWrapperValue;\n labelInValue?: boolean;\n /**\n * ```\n * lableInValue = true,onChange输出数据字段名称,默认:{ label: string; value: string|number }\n * ```\n */\n labelInValueFieldNames?: { label: string; value: string };\n /**\n * 禁用状态是否可选,默认值true\n * 当dateItem中包含 disabled 则数据为禁用状态\n */\n disabledCanUse?: boolean;\n\n /** treeItem数据适配器 */\n treeItemDataAdapter?: (dataItem: TPlainObject) => TPlainObject;\n /** 搜索位置额外元素 */\n searchExtraElement?: ReactElement;\n /** 有唯一跟节点时,初始化是否展开,默认值:false */\n initRootExpand?: boolean;\n /** 搜素过滤方式,高亮 | 过滤;默认:filter */\n searchResultType?: 'highlight' | 'filter';\n /**\n * 拖拽节点处理,自定义onDrop事件后,失效\n * ```\n * 参数\n * 1. parentId 当前拖拽节点的父节点ID\n * 2. id 当前拖拽节点ID\n * 3. index 当前拖拽节点所在数组下标\n * ```\n */\n onDropNodeHandle?: (result: { parentId?: string | number; id: string | number; index: number }) => void;\n /**\n * 拖拽排序前判断,如果返回 true,可排序,其他不可排序\n * ```\n * 可用于需要权限控制判断\n * ```\n */\n onDropPrev?: (info) => boolean;\n /**\n * 标签渲染\n * ```\n * 1. 自定义设置 titleRender 后失效\n * 2. 与titleRender的区别\n * a. 设置 labelRender 后,menuLayout有效\n * b. 设置 titleRender 后,menuLayout失效\n * ```\n */\n labelRender?: (nodeData: TPlainObject) => ReactElement;\n};\n\nexport type TreeWrapperRefApi = {\n onClearSelectorList: () => void;\n getTreeDataList: () => TreeProps['treeData'];\n};\n\n/**\n * Tree包装组件,默认返回父节点,可配置不返回\n * @param props\n * @returns\n * ```\n * 1. treeNode内置字段说明(如需要相关功能,可在接口中添加固定字段)\n * a. disabled 禁掉响应\n * b. isLeaf 设置为叶子节点 (设置了 loadData 时有效)。为 false 时会强制将其作为父节点\n * c. disableCheckbox checkable模式下,treeNode复选框是否可选\n * 2. 当设置selectorTreeList属性后,serviceConfig将失效\n * 3. checkable=true,为多选模式\n * 4. 设置value后,组件显示受控\n * 5. 设置loadDataFlag=true,会动态获取children,当treeNode中包含isLeaf=true字段,表示为叶子节点,没有children了\n * 6. 内置 onDrop 事件已处理数组排序,通过 onDropNodeHandle 事件可获取操作节点排序数据;自定义onDrop后,内置onDrop失效\n * ```\n */\nexport const TreeWrapper = forwardRef<TreeWrapperRefApi, TreeWrapperProps>((props, ref) => {\n const {\n style,\n serviceConfig,\n effectDependencyList,\n selectorTreeList,\n value,\n onChange,\n modelKey,\n checkableResponseParentNode = true,\n checkable,\n onSelectorTreeListChange,\n onRequestResponseChange,\n treeItemDataAdapter,\n searchValue,\n showSearch,\n searchPlaceholder,\n requestMessageConfig,\n labelInValueFieldNames,\n labelInValue,\n disabledCanUse,\n menuLayoutType,\n menuTriggerType,\n initRootExpand,\n searchResultType,\n onDropNodeHandle,\n onDropPrev,\n labelRender,\n searchStyle,\n ...otherProps\n } = props;\n const hasSelectorTreeList = props.hasOwnProperty('selectorTreeList');\n const newServiceConfig = serviceConfig || {};\n const newEffectDependencyList = effectDependencyList || [];\n const [treeExpandedKeys, setTreeExpandedKeys] = useState<React.Key[]>();\n const [state, actions] = treeWrapperModel(modelKey).useStore();\n const [loading, setLoading] = fbaHooks.useSafeState(false);\n const requestPreKey = `request-progress-${props.modelKey}`;\n const fieldNames = useMemo(() => {\n return { label: 'label', value: 'value', children: 'children', ...props.fieldNames };\n }, [props.fieldNames]);\n // 必须是数组格式\n const defaultValueRef = useRef<Array<string | number>>();\n const menuLayoutTypeNew = menuLayoutType === undefined ? 'fold' : menuLayoutType;\n const menuTriggerTypeNew = menuTriggerType === undefined ? 'click' : menuTriggerType;\n\n const isMultiple = checkable === true;\n\n const labelInValueFieldNamesMerge = useMemo(() => {\n return { label: 'label', value: 'value', ...labelInValueFieldNames };\n }, [labelInValueFieldNames]);\n // tree 搜索值\n const [treeSearchValue, setTreeSearchValue] = useState<string>();\n\n const isFirstUseValueRef = useRef(true);\n const [refreshKey, setRefreshKey] = useState(0);\n const innerOperateValueRef = useRef<Array<string | number> | string | number>();\n\n const valueList = useMemo(() => {\n const tempList = getVauleList(value, labelInValueFieldNamesMerge);\n return tempList;\n }, [labelInValueFieldNamesMerge, value]);\n\n fbaHooks.useEffectCustom(() => {\n if ((isUndefinedOrNull(value) && isFirstUseValueRef.current) || state.treeList.length == 0) return;\n isFirstUseValueRef.current = false;\n if (!treeWrapperValueDeepEqual(value, innerOperateValueRef.current, labelInValueFieldNamesMerge)) {\n console.log(`modelKey:${modelKey} TreeWrapper key refresh`, value, innerOperateValueRef.current);\n innerOperateValueRef.current = isMultiple ? valueList : valueList[0];\n // 重新计算 expandedKeys\n const expandedKeys = getTreeExpandedKeys(valueList, true);\n setTreeExpandedKeys(Array.from(new Set(expandedKeys)));\n defaultValueRef.current = valueList;\n setRefreshKey(Date.now());\n }\n }, [value, state.treeList]);\n\n const valueIsEmpty = (data: string | number) => {\n return data === '' || isUndefinedOrNull(data);\n };\n\n const serviceResponseHandle = (respData) => {\n const respDataList = (\n newServiceConfig.onRequestResultAdapter\n ? newServiceConfig.onRequestResultAdapter(respData as unknown as TPlainObject)\n : respData\n ) as TPlainObject[];\n return respDataList;\n };\n\n fbaHooks.useEffectCustom(() => {\n setTreeSearchValue(searchValue);\n }, [searchValue]);\n\n const startDataSourceRequest = hooks.useCallbackRef(async () => {\n try {\n if (!newServiceConfig.onRequest) {\n throw new Error('onRequest 调用接口服务不能为空');\n }\n const requiredParamsKeys = newServiceConfig.requiredParamsKeys;\n const params = extend({}, newServiceConfig.params);\n if (requiredParamsKeys) {\n const isEmpty = requiredParamsKeys.find((key) => {\n return valueIsEmpty(params[key] as string | number);\n });\n if (isEmpty) {\n console.warn(`TreeWrapper组件:参数:${requiredParamsKeys.join('、')}不能为空`);\n return;\n }\n }\n try {\n setLoading(true);\n await actions.changeRequestStatus('request-progress');\n window[requestPreKey] = true;\n const _respData = await newServiceConfig.onRequest?.(params);\n onRequestResponseChange?.(_respData);\n const respData = serviceResponseHandle(_respData) as TreeProps['treeData'];\n onChangeSelectorList(respData || []);\n setLoading(false);\n if (initRootExpand && toArray(respData).length) {\n setTreeExpandedKeys([respData?.[0][fieldNames.value]]);\n }\n window[requestPreKey] = false;\n } catch (error) {\n window[requestPreKey] = false;\n setLoading(false);\n void actions.changeRequestStatus('request-error');\n }\n } catch (error) {\n setLoading(false);\n void message.error((error.message as string) || '数据查询异常...');\n }\n });\n\n fbaHooks.useEffectCustom(() => {\n if (hasSelectorTreeList) return;\n // 当无依赖项时,如果存在缓存数据,就不在调用接口\n if (Boolean(newEffectDependencyList.length)) {\n void startDataSourceRequest();\n return;\n }\n const allState = treeWrapperModel(modelKey).getState();\n if (allState.requestStatus === 'request-success') {\n onSelectorTreeListChange?.(allState.treeList);\n return;\n }\n // 判断相同的modelKey是否已经在请求数据中,避免重复请求\n if (!window[requestPreKey]) {\n void startDataSourceRequest();\n } else {\n onSelectorTreeListChange?.(allState.treeList);\n }\n }, newEffectDependencyList);\n\n fbaHooks.useEffectCustom(() => {\n if (hasSelectorTreeList) {\n onChangeSelectorList(selectorTreeList || []);\n }\n }, [selectorTreeList]);\n\n const onChangeSelectorList = hooks.useCallbackRef((dataList: TAny[]) => {\n if (dataList?.length === 0 && state.treeList.length === 0) {\n void actions.changeRequestStatus('request-success');\n return;\n }\n void actions.setTreeList({\n treeList: dataList || [],\n childrenName: fieldNames.children,\n });\n onSelectorTreeListChange?.(dataList);\n });\n\n const getTreeExpandedKeys = hooks.useCallbackRef((valueList: Array<string | number>, refresh?: boolean) => {\n let newTreeExpandedKeys = [] as Array<string | number>;\n valueList.forEach((value) => {\n if (!refresh && treeExpandedKeys?.includes(value)) return;\n const targetList = getExpandedKeys(value, state.treeList, fieldNames);\n newTreeExpandedKeys = newTreeExpandedKeys.concat(targetList.map((item) => item.value));\n });\n return newTreeExpandedKeys;\n });\n\n hooks.useUpdateEffect(() => {\n if (treeSearchValue) {\n const tiledArray = treeToTiledArray(state.treeList || [], fieldNames);\n const targetList = tiledArray.filter((item) => item.label?.includes(treeSearchValue || ''));\n setTreeExpandedKeys((prev) => {\n const mergeList = getTreeExpandedKeys(targetList.map((item) => item.value)).concat(prev || []);\n return Array.from(new Set(mergeList));\n });\n } else {\n setTreeExpandedKeys([]);\n }\n }, [treeSearchValue]);\n\n useImperativeHandle(ref, () => {\n return {\n onClearSelectorList: () => {\n void actions.resetTreeList();\n },\n getTreeDataList: () => {\n return state.treeList;\n },\n };\n });\n\n const onExpand = hooks.useCallbackRef((expandedKeys) => {\n setTreeExpandedKeys(expandedKeys as string[]);\n });\n\n const onRespChange = hooks.useCallbackRef((selectedKey, selectInfo?, selectAllList?) => {\n innerOperateValueRef.current = selectedKey;\n const selectList = isUndefinedOrNull(selectInfo) ? [] : isArray(selectInfo) ? selectInfo : [selectInfo];\n if (isUndefinedOrNull(selectedKey)) {\n onChange?.(selectedKey, selectInfo, selectAllList);\n return;\n }\n if (labelInValue) {\n const lvLabel = labelInValueFieldNamesMerge.label;\n const lvValue = labelInValueFieldNamesMerge.value;\n const labelInValueList = selectList.map((item) => {\n return {\n [lvLabel]: item[fieldNames.label],\n [lvValue]: item[fieldNames.value],\n };\n });\n if (isArray(selectedKey)) {\n onChange?.(labelInValueList, selectList, selectAllList);\n } else {\n onChange?.(labelInValueList[0], selectList[0], selectAllList);\n }\n } else {\n if (isArray(selectedKey)) {\n onChange?.(selectedKey, selectList, selectAllList);\n } else {\n onChange?.(selectedKey, selectList[0], selectAllList);\n }\n }\n });\n\n const onTreeChangeHandle = hooks.useCallbackRef((checkedData, operateInfo) => {\n let checkedValueList = props.checkStrictly ? checkedData.checked : checkedData;\n checkedValueList = isUndefinedOrNull(checkedData) ? [] : checkedData;\n checkedValueList = isArray(checkedValueList) ? checkedValueList : [checkedValueList];\n\n const selectedLeafList = [] as TPlainObject[];\n const selectedLeafValueList = [] as Array<string | number>;\n const selectedAllList = [] as TPlainObject[];\n const selectedAllValueList = [] as Array<string | number>;\n checkedValueList.forEach((item) => {\n const target = state.treeTiledArray.find((temp) => temp[fieldNames.value] === item);\n if (!target) return;\n const children = target?.[fieldNames.children];\n if (!isArray(children) || children.length === 0) {\n selectedLeafList.push(target);\n selectedLeafValueList.push(target[fieldNames.value]);\n }\n selectedAllList.push(target);\n selectedAllValueList.push(target[fieldNames.value]);\n });\n\n if (checkable) {\n setTreeExpandedKeys((prev) => {\n const mergeList = getTreeExpandedKeys(selectedLeafValueList).concat(prev || []);\n return Array.from(new Set(mergeList));\n });\n if (!checkableResponseParentNode && !props.checkStrictly) {\n onRespChange(selectedLeafValueList, selectedLeafList, selectedAllList);\n } else {\n onRespChange(selectedAllValueList, selectedAllList, selectedAllList);\n }\n } else {\n if (checkedValueList[0]) {\n const currentNode = selectedAllList.find((item) => item[fieldNames.value] === checkedValueList[0]);\n onRespChange(checkedValueList[0], currentNode, [currentNode]);\n } else {\n const nodeValue = operateInfo.node[fieldNames.value];\n const target = state.treeTiledArray.find((temp) => temp[fieldNames.value] === nodeValue);\n onRespChange(undefined, target, [target]);\n }\n }\n });\n\n const treeItemDataAdapterHandle = hooks.useCallbackRef((dataItem) => {\n return treeItemDataAdapter?.(dataItem);\n });\n\n const originalDataList = useMemo(() => {\n const list = cloneState(state.treeList || []);\n if (treeSearchValue && searchResultType !== 'highlight') {\n return treeFilter(cloneState(state.treeList || []), (node) => {\n const value = node[fieldNames.label]?.toLowerCase();\n return value.indexOf(treeSearchValue.toLowerCase()) >= 0;\n });\n }\n return list;\n }, [fieldNames.label, searchResultType, state.treeList, treeSearchValue]);\n\n const treeData = useMemo(() => {\n const loop = (data: TAny[]): TAny[] =>\n data?.map((item) => {\n const adapterItem = treeItemDataAdapterHandle?.(item) || item;\n const disabled = disabledCanUse ? undefined : adapterItem.disabled;\n const strTitle = adapterItem[fieldNames.label] as string;\n let titleDom;\n if (treeSearchValue) {\n const index = strTitle.indexOf(treeSearchValue);\n const beforeStr = strTitle.substring(0, index);\n const afterStr = strTitle.slice(index + treeSearchValue.length);\n titleDom =\n index > -1 ? (\n <span className={classNames({ 'v-tree-item-disabled': adapterItem.disabled })}>\n {beforeStr}\n <span className=\"site-tree-search-value\">{treeSearchValue}</span>\n {afterStr}\n </span>\n ) : null;\n }\n if (!titleDom) {\n titleDom = (\n <span className={classNames({ 'v-tree-item-disabled': adapterItem.disabled })}>{strTitle}</span>\n );\n }\n const children = adapterItem[fieldNames.children];\n return {\n ...adapterItem,\n disabled,\n [fieldNames.label]: titleDom,\n _treeItemName: strTitle,\n _disabled: adapterItem.disabled,\n [fieldNames.children]: isArray(children) && children.length > 0 ? loop(children) : undefined,\n };\n });\n return loop(originalDataList);\n }, [\n originalDataList,\n treeItemDataAdapterHandle,\n disabledCanUse,\n fieldNames.label,\n fieldNames.children,\n treeSearchValue,\n ]);\n\n const loadData = hooks.useCallbackRef((dataItem: TPlainObject) => {\n return new Promise<void>(async (resolve, reject) => {\n if (dataItem[fieldNames.children]) {\n resolve();\n return;\n }\n try {\n const respData = await props.loadDataServiceConfig?.onRequest?.(\n props.loadDataServiceConfig?.getParams?.(dataItem),\n );\n const respDataList = (\n newServiceConfig.onRequestResultAdapter\n ? newServiceConfig.onRequestResultAdapter(respData as unknown as TPlainObject)\n : respData\n ) as TPlainObject[];\n void actions\n .treeListAppendChildren({\n value: dataItem[fieldNames.value],\n appendList: respDataList,\n childrenName: fieldNames.children,\n valueName: fieldNames.value,\n })\n .then((allState) => {\n onChangeSelectorList(allState.treeList as TPlainObject[]);\n resolve();\n });\n } catch (error) {\n void message.error(error.message || '数据加载异常...');\n // 此处失败后,会重试“loadData”请求多次\n reject();\n }\n });\n });\n\n const isLeafNode = hooks.useCallbackRef((nodeData) => {\n const children = nodeData?.[fieldNames.children];\n // 当loadDataFlag=true,考虑叶子节点显示问题\n const loadDataFlag = props.loadDataFlag;\n const loadHasChildren = loadDataFlag ? !nodeData.isLeaf : false;\n const hasChildren = (children && children.length > 0) || loadHasChildren;\n return !hasChildren;\n });\n\n const titleRender = hooks.useCallbackRef((nodeData) => {\n const stringLabel = nodeData._treeItemName || nodeData[fieldNames.label];\n\n if (menuLayoutTypeNew === 'fold') {\n let menuOptions: TAny[] = [];\n if (props.menuOptions?.fold) {\n menuOptions =\n props.menuOptions?.[menuLayoutTypeNew]?.({\n ...nodeData,\n [fieldNames.label]: stringLabel,\n }) || [];\n } else {\n menuOptions =\n props.getMenuOptions?.({\n ...nodeData,\n [fieldNames.label]: stringLabel,\n }) || [];\n }\n return (\n <Fragment>\n <span className=\"tree-item-title\">{labelRender?.(nodeData) || nodeData?.[fieldNames.label]}</span>\n {menuOptions.length > 0 && (\n <DropdownMenuWrapper menuList={menuOptions}>\n <MoreOutlined />\n </DropdownMenuWrapper>\n )}\n </Fragment>\n );\n }\n const menuOptions = props.menuOptions?.tile?.({\n ...nodeData,\n [fieldNames.label]: stringLabel,\n });\n return (\n <Fragment>\n <span className=\"tree-item-title\">{labelRender?.(nodeData) || nodeData?.[fieldNames.label]}</span>\n {menuOptions ? (\n <ButtonOperate\n {...menuOptions}\n gap={5}\n className={classNames('tree-item-title-operate', menuOptions.className)}\n />\n ) : null}\n </Fragment>\n );\n });\n\n const onChangeDebounce = hooks.useDebounceCallback((value: string) => {\n setTreeSearchValue(value);\n props.onSearchValueChange?.(value);\n }, 300);\n\n const onSearchChange = hooks.useCallbackRef((e: React.ChangeEvent<HTMLInputElement>) => {\n onChangeDebounce(e.target.value);\n });\n\n const iconHandle = hooks.useCallbackRef((treeData) => {\n if (!props.icon) return null;\n if (isValidElement(props.icon)) return props.icon;\n const isLeafFlag = isLeafNode(treeData.data);\n return props.icon({\n ...treeData,\n isParent: !isLeafFlag,\n isLeaf: isLeafFlag,\n });\n });\n\n const treeFieldNames = useMemo(() => {\n return { title: fieldNames.label, key: fieldNames.value, children: fieldNames.children };\n }, [fieldNames]);\n const showTree = treeData.length > 0 && state.requestStatus !== 'request-error';\n const commonProps = {\n showLine: { showLeafIcon: false },\n titleRender,\n blockNode: true,\n switcherIcon: <CaretDownFilled />,\n\n onDrop: (info) => {\n if (onDropPrev) {\n const boo = onDropPrev(info);\n if (!boo) return;\n }\n const { dataList, dragNodeData } = onTreeDrop(originalDataList as TPlainObject[], fieldNames, info);\n onDropNodeHandle?.(dragNodeData);\n onChangeSelectorList(dataList);\n },\n ...otherProps,\n fieldNames: treeFieldNames,\n expandedKeys: treeExpandedKeys,\n treeData,\n onExpand,\n loadData: props.loadDataFlag ? loadData : undefined,\n style: { width: '100%' },\n icon: iconHandle,\n };\n\n const checkedProps = {\n onCheck: onTreeChangeHandle,\n checkable,\n // 必须是数组格式\n defaultCheckedKeys: defaultValueRef.current,\n };\n\n const selectedProps = {\n onSelect: onTreeChangeHandle,\n multiple: false,\n // 必须是数组格式\n defaultSelectedKeys: defaultValueRef.current,\n };\n const sceneProps = checkable ? checkedProps : selectedProps;\n const cName = classNames('v-tree-wrapper', `v-tree-wrapper-menu-${menuTriggerTypeNew}`);\n const isSearchEmpty = state.treeList.length > 0 && !showTree && treeSearchValue;\n return (\n <div className={cName} style={style}>\n {!!showSearch && (\n <div className=\"v-tree-wrapper-search-area\" style={searchStyle}>\n <InputSearchWrapper\n className=\"v-tree-wrapper-search\"\n placeholder={searchPlaceholder}\n onChange={onSearchChange}\n value={searchValue}\n allowClear\n />\n {!!props.searchExtraElement && (\n <span className=\"v-tree-wrapper-search-extra\">{props.searchExtraElement}</span>\n )}\n </div>\n )}\n\n {showTree ? (\n <div className=\"v-tree-wrapper-tree-wrapper\">\n <Spin spinning={state.requestStatus === 'request-progress'} />\n <Tree key={refreshKey} {...sceneProps} {...commonProps} className=\"v-tree-wrapper-tree\"></Tree>\n </div>\n ) : (\n <RequestStatus\n status={state.requestStatus}\n loading={loading}\n messageConfig={{\n 'request-success': isSearchEmpty ? '搜索结果为空' : '暂无数据',\n ...requestMessageConfig,\n }}\n errorButton={\n <Button type=\"primary\" onClick={startDataSourceRequest}>\n 重新获取数据\n </Button>\n }\n />\n )}\n </div>\n );\n});\n\nTreeWrapper.defaultProps = {\n disabledCanUse: true,\n};\n","import { fbaUtils } from '../fba-utils';\nimport { getTreeDataList } from './hooks';\nimport { TreeWrapper as TreeWrapperInner } from './tree-wrapper';\n\nexport type * from './tree-wrapper';\n/**\n * Tree包装组件,默认返回父节点,可配置不返回\n * @param props\n * @returns\n * ```\n * 1. treeNode内置字段说明(如需要相关功能,可在接口中添加固定字段)\n * a. disabled 禁掉响应\n * b. isLeaf 设置为叶子节点 (设置了 loadData 时有效)。为 false 时会强制将其作为父节点\n * c. disableCheckbox checkable模式下,treeNode复选框是否可选\n * 2. 当设置selectorTreeList属性后,serviceConfig将失效\n * 3. checkable=true,为多选模式\n * 4. 设置value后,组件显示受控\n * 5. 设置loadDataFlag=true,会动态获取children,当treeNode中包含isLeaf=true字段,表示为叶子节点,没有children了\n * 6. 内置 onDrop 事件已处理数组排序,通过 onDropNodeHandle 事件可获取操作节点排序数据;自定义onDrop后,内置onDrop失效\n * ```\n */\nexport const TreeWrapper = fbaUtils.attachPropertiesToComponent(TreeWrapperInner, {\n /**\n * 获取树形原数据\n * ```\n * 参数 modelKey 与 TreeWrapper属性 modelKey相同,才能获取数据\n * ```\n */\n getTreeDataList: getTreeDataList,\n});\n"],"names":["defaultState","treeList","treeTiledArray","queryIsEmpty","TreeWrapperModel","actions","setTreeList","params","state","treeToArray","childrenName","requestStatus","resetTreeList","changeRequestStatus","treeListAppendChildren","array","target","find","item","valueName","value","_isArray","appendList","length","isLeaf","treeWrapperModels","treeWrapperModel","key","Model","getTreeDataList","modelKey","getState","getExpandedKeys","fieldNames","tiledArray","treeToTiledArray","treeLeafParentsArray","parentValue","getVauleList","data","labelInValueFieldNames","tempList","isUndefinedOrNull","map","_isObject","array2map","list","forEach","treeWrapperValueDeepEqual","value1","value2","object1","object2","diff","dequal","onTreeDrop","dataList","info","dropKey","node","dragKey","dragNode","dropPos","pos","split","dropPosition","Number","treeKeyName","treeChildrenName","children","loop","callback","i","cloneState","dragObj","index","arr","splice","dropToGap","unshift","props","expanded","ar","_item","dragNodeData","dorpNodeId","_tree$walkThroughTree","id","_tree","walkThroughTree","undefined","_parent","tileList","parentId","TreeWrapper","forwardRef","ref","style","serviceConfig","effectDependencyList","selectorTreeList","onChange","_props$checkableRespo","checkableResponseParentNode","checkable","onSelectorTreeListChange","onRequestResponseChange","treeItemDataAdapter","searchValue","showSearch","searchPlaceholder","requestMessageConfig","labelInValue","disabledCanUse","menuLayoutType","menuTriggerType","initRootExpand","searchResultType","onDropNodeHandle","onDropPrev","labelRender","searchStyle","otherProps","_objectWithoutPropertiesLoose","_excluded","hasSelectorTreeList","hasOwnProperty","newServiceConfig","newEffectDependencyList","_useState","useState","treeExpandedKeys","setTreeExpandedKeys","_treeWrapperModel$use","useStore","_fbaHooks$useSafeStat","fbaHooks","useSafeState","loading","setLoading","requestPreKey","useMemo","_extends","label","defaultValueRef","useRef","menuLayoutTypeNew","menuTriggerTypeNew","isMultiple","labelInValueFieldNamesMerge","_useState2","treeSearchValue","setTreeSearchValue","isFirstUseValueRef","_useState3","refreshKey","setRefreshKey","innerOperateValueRef","valueList","useEffectCustom","current","console","log","expandedKeys","getTreeExpandedKeys","Array","from","Set","Date","now","valueIsEmpty","serviceResponseHandle","respData","respDataList","onRequestResultAdapter","startDataSourceRequest","_hooks","useCallbackRef","Promise","$return","$error","requiredParamsKeys","_params","isEmpty","_respData","_respData2","$Try_1_Post","$boundEx","$Try_1_Catch","error","message","onRequest","Error","_extend","warn","join","$Try_2_Post","$Try_2_Catch","window","resolve","then","$await_4","$await_5","onChangeSelectorList","toArray","Boolean","allState","refresh","newTreeExpandedKeys","includes","targetList","concat","useUpdateEffect","filter","_item$label","prev","mergeList","useImperativeHandle","onClearSelectorList","onExpand","onRespChange","selectedKey","selectInfo","selectAllList","selectList","lvLabel","lvValue","labelInValueList","_ref","onTreeChangeHandle","checkedData","operateInfo","checkedValueList","checkStrictly","checked","selectedLeafList","selectedLeafValueList","selectedAllList","selectedAllValueList","temp","push","currentNode","nodeValue","treeItemDataAdapterHandle","dataItem","originalDataList","treeFilter","_node$fieldNames$labe","toLowerCase","indexOf","treeData","_extends2","adapterItem","disabled","strTitle","titleDom","beforeStr","substring","afterStr","slice","_jsxs","className","_classNames","_jsx","_treeItemName","_disabled","loadData","reject","_props$loadDataServic","_props$loadDataServic2","_respData3","$Try_3_Post","$Try_3_Catch","loadDataServiceConfig","getParams","$await_6","isLeafNode","nodeData","loadDataFlag","loadHasChildren","hasChildren","titleRender","_props$menuOptions3","_extends5","stringLabel","_props$menuOptions","menuOptions","fold","_props$menuOptions2","_props$menuOptions2$m","_extends3","call","_extends4","getMenuOptions","Fragment","DropdownMenuWrapper","menuList","_MoreOutlined","tile","ButtonOperate","gap","onChangeDebounce","useDebounceCallback","onSearchValueChange","onSearchChange","e","iconHandle","icon","isValidElement","isLeafFlag","isParent","treeFieldNames","title","showTree","commonProps","showLine","showLeafIcon","blockNode","switcherIcon","_CaretDownFilled","onDrop","boo","_onTreeDrop","width","checkedProps","onCheck","defaultCheckedKeys","selectedProps","onSelect","multiple","defaultSelectedKeys","sceneProps","cName","isSearchEmpty","InputSearchWrapper","placeholder","allowClear","searchExtraElement","Spin","spinning","Tree","RequestStatus","status","messageConfig","errorButton","Button","type","onClick","defaultProps","fbaUtils","attachPropertiesToComponent","TreeWrapperInner"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  /* eslint-disable */
2
2
  import './index.css';
3
3
  /*! @flatjs/forge MIT @flatbiz/antd */
4
+ import{noop as r}from"@flatbiz/utils";var t=r;export{t as types};
4
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/types/index.ts"],"sourcesContent":["import { noop } from '@flatbiz/utils';\n\nexport type FormItemNamePath = string | number | Array<string | number>;\n\nexport const types = noop;\n"],"names":["types","noop"],"mappings":";sCAIO,IAAMA,EAAQC"}
package/index.d.ts CHANGED
@@ -19,6 +19,20 @@ import { Dayjs } from 'dayjs';
19
19
  import { CSSProperties, DependencyList, FC, ReactElement, ReactNode } from 'react';
20
20
  import { Editor as TinyMCEEditor } from 'tinymce';
21
21
 
22
+ export type AnchorStepsProps = {
23
+ steps: {
24
+ id: string;
25
+ title: string;
26
+ content: ReactElement;
27
+ }[];
28
+ className?: string;
29
+ };
30
+ /**
31
+ * 锚点步骤组件
32
+ * @param props
33
+ * @returns
34
+ */
35
+ export declare const AnchorSteps: (props: AnchorStepsProps) => JSX.Element;
22
36
  export type ButtonWrapperProps = Omit<ButtonProps, "onClick"> & {
23
37
  onClick?: (e: React.MouseEvent<HTMLElement>) => Promise<TAny> | void;
24
38
  debounceDuration?: number;
@@ -270,6 +284,31 @@ export type CssHoverProps = {
270
284
  * @returns
271
285
  */
272
286
  export declare const CssNodeHover: (props: CssHoverProps) => JSX.Element;
287
+ export type DataRenderProps = {
288
+ isEmpty: boolean | (() => boolean);
289
+ empty?: ReactElement;
290
+ emptyText?: string | ReactElement;
291
+ emptyStyle?: CSSProperties;
292
+ emptyClassName?: string;
293
+ children: ReactNode;
294
+ };
295
+ /**
296
+ * 数据渲染,内置处理数据为空渲染
297
+ * ```
298
+ * 1. 配置 empty 后,emptyText、emptyStyle、emptyClassName将失效
299
+ * 2. 使用方式,例如
300
+ * <DataRender isEmpty={list.length === 0}>
301
+ * <Fragment>
302
+ * {list.map((item) => {
303
+ * return (
304
+ * <div key={item}>....</div>
305
+ * );
306
+ * })}
307
+ * </Fragment>
308
+ * </DataRender>
309
+ * ```
310
+ */
311
+ export declare const DataRender: (props: DataRenderProps) => JSX.Element;
273
312
  export type TDayjsDateType = "YYYY-MM-DD HH:mm:ss" | "YYYY-MM-DD HH:mm" | "YYYY-MM-DD HH" | "YYYY-MM-DD" | (string & {});
274
313
  export type TDayjsTimeType = "HH:mm:ss" | "HH:mm" | "HH" | "mm:ss" | "mm" | "ss" | (string & {});
275
314
  export type DatePickerWrapperProps = Omit<PickerDateProps<dayjs.Dayjs>, "value" | "onChange" | "format"> & {
@@ -375,6 +414,14 @@ export type DialogModalProps = Omit<ModalProps, "onOk" | "onCancel" | "getContai
375
414
  cancelHidden?: boolean;
376
415
  okButtonProps?: Omit<ButtonWrapperProps, "hidden" | "children" | "onClick">;
377
416
  cancelButtonProps?: Omit<ButtonWrapperProps, "hidden" | "children" | "onClick">;
417
+ /**
418
+ * 设置modal body height 为当前窗口height的百分比,例如:30
419
+ * ```
420
+ * 1. 最大值:80
421
+ * 1. 设置bodyStyle.height 后,bodyHeightPercent失效
422
+ * ```
423
+ */
424
+ bodyHeightPercent?: number;
378
425
  };
379
426
  /**
380
427
  * 函数式调用弹框;初始化后,内容无法更新
@@ -838,11 +885,20 @@ export type SelectorServiceConfig = {
838
885
  export type SelectorWrapperProps = Omit<SelectProps, "onSearch" | "notFoundContent" | "options" | "fieldNames" | "onChange" | "value" | "loading" | "mode"> & {
839
886
  /** 不支持 tags 模式,tags模式请使用 SelectorWrapperSimple 组件 */
840
887
  mode?: "multiple";
888
+ /** key值,相同的key 同页面可共用缓存数据 */
841
889
  modelKey: string;
890
+ /**
891
+ * 参数Key映射
892
+ * ```
893
+ * 1. list 为 onRequest 返回数据中列表key值,可多级取值,例如: 'a.b.c'
894
+ * 2. 配置 serviceConfig.onRequestResultAdapter后,fieldNames.list配置失效
895
+ * ```
896
+ */
842
897
  fieldNames?: {
843
898
  label: string;
844
899
  value: string;
845
900
  disabled?: string;
901
+ list?: string;
846
902
  };
847
903
  /**
848
904
  * 请求服务需求的数据
@@ -1766,11 +1822,19 @@ export type SelectorWrapperSearchServiceConfig = {
1766
1822
  onRequestResultAdapter?: (respData: TAny) => TPlainObject[];
1767
1823
  };
1768
1824
  export type SelectorWrapperSearchProps = Omit<SelectProps, "onSearch" | "notFoundContent" | "options" | "fieldNames" | "loading"> & {
1825
+ /**
1826
+ * 参数Key映射
1827
+ * ```
1828
+ * 1. list 为 onRequest 返回数据中列表key值,可多级取值,例如: 'a.b.c'
1829
+ * 2. 配置 serviceConfig.onRequestResultAdapter后,fieldNames.list配置失效
1830
+ * ```
1831
+ */
1769
1832
  fieldNames?: {
1770
1833
  label: string;
1771
1834
  value: string;
1772
1835
  disabled?: string;
1773
1836
  searchKeyword?: string;
1837
+ list?: string;
1774
1838
  };
1775
1839
  /**
1776
1840
  * 请求服务需求的数据
@@ -1809,10 +1873,18 @@ export type SelectorWrapperSimpleServiceConfig = {
1809
1873
  onRequestResultAdapter?: (respData: TAny) => TPlainObject[];
1810
1874
  };
1811
1875
  export type SelectorWrapperSimpleProps = Omit<SelectProps, "onSearch" | "notFoundContent" | "options" | "fieldNames" | "loading"> & {
1876
+ /**
1877
+ * 参数Key映射
1878
+ * ```
1879
+ * 1. list 为 onRequest 返回数据中列表key值,可多级取值,例如: 'a.b.c'
1880
+ * 2. 配置 serviceConfig.onRequestResultAdapter后,fieldNames.list配置失效
1881
+ * ```
1882
+ */
1812
1883
  fieldNames?: {
1813
1884
  label: string;
1814
1885
  value: string;
1815
1886
  disabled?: string;
1887
+ list?: string;
1816
1888
  };
1817
1889
  /**
1818
1890
  * 请求服务需求的数据
@@ -1851,8 +1923,16 @@ export type SimpleLayoutProps = {
1851
1923
  title?: string | ReactElement;
1852
1924
  desc?: string | ReactElement | string[] | ReactElement[];
1853
1925
  formLabelAlign?: "left" | "right";
1926
+ /**
1927
+ * layoutType 布局类型
1928
+ * ```
1929
+ * 1. layer:分层布局
1930
+ * 2. tight:紧凑布局
1931
+ * ```
1932
+ */
1854
1933
  layoutType?: "layer" | "tight";
1855
1934
  titleLeftLine?: boolean;
1935
+ titleStyle?: CSSProperties;
1856
1936
  contentStyle?: CSSProperties;
1857
1937
  /** 优先级大于 style padding */
1858
1938
  padding?: CSSProperties["padding"];
@@ -2145,6 +2225,34 @@ export type TagWrapperProps = Omit<TagProps, "onClick"> & {
2145
2225
  * 为 Tag 添加 loading 效果
2146
2226
  */
2147
2227
  export declare const TagWrapper: (props: TagWrapperProps) => JSX.Element;
2228
+ export type TextOverflowRenderProps = {
2229
+ /** 设置 children 属性后,maxLength失效 */
2230
+ maxLength?: number;
2231
+ /** 完整文本 */
2232
+ text?: string;
2233
+ /** 配置children属性(maxLength、prefix失效) */
2234
+ children?: string | ReactElement;
2235
+ /**
2236
+ * 文本前缀显示
2237
+ * 设置 children 属性后,prefix失效
2238
+ */
2239
+ prefix?: string | ReactElement;
2240
+ /** 数据不存在时,占位符 */
2241
+ placeholder?: ReactElement | string;
2242
+ onClick?: (e: any) => void;
2243
+ };
2244
+ /**
2245
+ * 文本显示,可通过长度控制溢出效果
2246
+ * ```
2247
+ * 显示文本通过两种方式
2248
+ * 1. 配置text属性
2249
+ * 2. 配置children属性(maxLength、prefix失效)
2250
+ * 3. 需要控制长度配置 maxLength
2251
+ * ```
2252
+ * @param props
2253
+ * @returns
2254
+ */
2255
+ export declare const TextOverflowRender: (props: TextOverflowRenderProps) => JSX.Element;
2148
2256
  export type TimePickerWrapperProps = Omit<TimePickerProps, "value" | "onChange" | "format"> & {
2149
2257
  value?: string;
2150
2258
  onChange?: (value?: string) => void;
@@ -2434,6 +2542,7 @@ export type TreeWrapperProps = Omit<TreeProps, "expandedKeys" | "treeData" | "on
2434
2542
  showSearch?: boolean;
2435
2543
  onSearchValueChange?: (searchValue?: string) => void;
2436
2544
  searchPlaceholder?: string;
2545
+ searchStyle?: CSSProperties;
2437
2546
  icon?: (data: {
2438
2547
  isParent: boolean;
2439
2548
  isLeaf: boolean;
@@ -2563,6 +2672,7 @@ export declare const TreeWrapper: import("react").ForwardRefExoticComponent<Omit
2563
2672
  showSearch?: boolean | undefined;
2564
2673
  onSearchValueChange?: ((searchValue?: string | undefined) => void) | undefined;
2565
2674
  searchPlaceholder?: string | undefined;
2675
+ searchStyle?: import("react").CSSProperties | undefined;
2566
2676
  icon?: ((data: {
2567
2677
  isParent: boolean;
2568
2678
  isLeaf: boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flatbiz/antd",
3
- "version": "4.2.38",
3
+ "version": "4.2.40",
4
4
  "description": "flat-biz ui components",
5
5
  "main": "index.js",
6
6
  "typings": "index.d.ts",
@@ -33,7 +33,7 @@
33
33
  "@dimjs/utils": ">=1.3.2",
34
34
  "@flatbiz/utils": ">=4.0.10",
35
35
  "@wove/react": ">=1.2.23",
36
- "antd": ">=5.2.1",
36
+ "antd": ">=5.4.0",
37
37
  "dayjs": ">=1.11.7",
38
38
  "react": ">=18.2.0",
39
39
  "react-dom": ">=18.2.0",
@@ -47,12 +47,13 @@
47
47
  "@ant-design/icons": "^4.8.0",
48
48
  "@flatbiz/utils": "^4.0.10",
49
49
  "@wove/react": "^1.2.22",
50
- "antd": "^5.1.3",
50
+ "antd": "^5.4.0",
51
51
  "dayjs": "1.11.7",
52
52
  "dequal": "^2.0.3",
53
53
  "react": "18.2.0",
54
54
  "react-dom": "18.2.0",
55
- "ahooks": "^3.7.5"
55
+ "ahooks": "^3.7.5",
56
+ "react-is": ">=18.2.0"
56
57
  },
57
58
  "dependencies": {
58
59
  "dequal": "^2.0.3",
@@ -1,3 +0,0 @@
1
- /*! @flatjs/forge MIT @flatbiz/antd */
2
- import{isString as e}from"@dimjs/lang/cjs/is-string";import{classNames as o}from"@dimjs/utils/cjs/class-names";import{a as r,_ as n}from"./_rollupPluginBabelHelpers-1f4d8910.js";import{isPromise as t}from"@dimjs/lang/cjs/is-promise";import{hooks as a}from"@wove/react/cjs/hooks";import{Form as i,Modal as l}from"antd";import{useState as c}from"react";import{createRoot as s}from"react-dom/client";import{B as d}from"./button-wrapper-c63ea6fc.js";import{C as m}from"./config-provider-wrapper-dfe8f592.js";import{fbaHooks as f}from"./fba-hooks/index.js";import{b as u,r as p}from"./dom-4d04aa64.js";import{jsx as v}from"react/jsx-runtime";var C=["divElement","elementId","onOk","onCancel","okButtonProps","cancelButtonProps","content","configProviderProps","className","okHidden","cancelHidden","footer","cancelText","okText"];var k=function e(s){var u=s.divElement,k=s.elementId,w=s.onOk,j=s.onCancel,h=s.okButtonProps,g=s.cancelButtonProps,_=s.content,b=s.configProviderProps,P=s.className,x=s.okHidden,y=s.cancelHidden,B=s.footer,I=s.cancelText,E=s.okText,H=n(s,C);var R=c(true),T=R[0],N=R[1];var O=i.useForm(),F=O[0];var q=a.useCallbackRef((function(){try{delete window[k]}catch(e){}N(false)}));f.useEffectCustom((function(){window[k]=q}),[q]);var z=a.useCallbackRef((function(e){if(j){var o=j(F,e);if(o&&t(o)){return o.then(q)}}return q()}));var A=a.useCallbackRef((function(e){if(w){var o=w(F,e);if(o&&t(o)){return o.then(q)}}return q()}));var D=a.useCallbackRef((function(){p("#"+k);s.afterClose==null?void 0:s.afterClose()}));var G=[v(d,r({},g,{onClick:z,hidden:y,children:I||"取消"}),"0"),v(d,r({type:"primary"},h,{onClick:A,hidden:x,children:E||"提交"}),"1")];var J=B||G;return v(m,r({},b,{children:v(l,r({maskClosable:true,centered:true,onCancel:q,destroyOnClose:true},H,{className:o("v-dialog-modal",P),open:T,afterClose:D,getContainer:u,footer:J,children:typeof _==="function"?_(F,{onClose:q}):_}))}))};var w={open:function e(o){var n=u(),t=n.divElement,a=n.elementId;window["__dialog_modal_elementId"]=a;var i=s(t);i.render(v(k,r({},o,{divElement:t,elementId:a})));return{close:function e(){var o,r;(o=(r=window)[a])==null?void 0:o.call(r)}}},close:function o(){try{var r,n;var t=window["__dialog_modal_elementId"];if(e(t))(r=(n=window)[t])==null?void 0:r.call(n)}catch(e){}}};export{w as d};
3
- //# sourceMappingURL=dialog-modal-225b0fe0.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dialog-modal-225b0fe0.js","sources":["@flatbiz/antd/src/dialog-modal/dialog-modal.tsx"],"sourcesContent":["import { isPromise, isString } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\nimport { TNoopDefine } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Form, FormInstance, Modal, ModalProps } from 'antd';\nimport { ReactElement, useState } from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { ButtonWrapper, ButtonWrapperProps } from '../button-wrapper';\nimport { ConfigProviderWrapper, ConfigProviderWrapperProps } from '../config-provider-wrapper';\nimport { fbaHooks } from '../fba-hooks';\nimport { bodyAppendDivElement, BodyAppendDivElementProps, removeBodyChild } from '../_utils/dom';\nimport './style.less';\n\nexport type DialogModalProps = Omit<\n ModalProps,\n 'onOk' | 'onCancel' | 'getContainer' | 'open' | 'open' | 'okButtonProps' | 'cancelButtonProps'\n> & {\n onOk?: (form: FormInstance, e: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n onCancel?: (form: FormInstance, e: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n content: string | ReactElement | ((form: FormInstance, operate: { onClose: TNoopDefine }) => ReactElement);\n configProviderProps?: ConfigProviderWrapperProps;\n okHidden?: boolean;\n cancelHidden?: boolean;\n okButtonProps?: Omit<ButtonWrapperProps, 'hidden' | 'children' | 'onClick'>;\n cancelButtonProps?: Omit<ButtonWrapperProps, 'hidden' | 'children' | 'onClick'>;\n};\n\nconst ModalRender = (props: BodyAppendDivElementProps & DialogModalProps) => {\n const {\n divElement,\n elementId,\n onOk,\n onCancel,\n okButtonProps,\n cancelButtonProps,\n content,\n configProviderProps,\n className,\n okHidden,\n cancelHidden,\n footer,\n cancelText,\n okText,\n ...otherProps\n } = props;\n const [open, setOpen] = useState(true);\n const [form] = Form.useForm();\n\n const onClose = hooks.useCallbackRef(() => {\n try {\n delete window[elementId];\n } catch (error) {\n //\n }\n setOpen(false);\n });\n\n fbaHooks.useEffectCustom(() => {\n window[elementId] = onClose;\n }, [onClose]);\n\n const onCancelHandle = hooks.useCallbackRef((e) => {\n if (onCancel) {\n const response = onCancel(form, e);\n if (response && isPromise(response)) {\n return response.then(onClose);\n }\n }\n return onClose();\n });\n\n const onOkHandle = hooks.useCallbackRef((e) => {\n if (onOk) {\n const response = onOk(form, e);\n if (response && isPromise(response)) {\n return response.then(onClose);\n }\n }\n return onClose();\n });\n\n const onAfterClose = hooks.useCallbackRef(() => {\n removeBodyChild(`#${elementId}`);\n props.afterClose?.();\n });\n\n const operateGroup = [\n <ButtonWrapper key=\"0\" {...cancelButtonProps} onClick={onCancelHandle} hidden={cancelHidden}>\n {cancelText || '取消'}\n </ButtonWrapper>,\n <ButtonWrapper key=\"1\" type=\"primary\" {...okButtonProps} onClick={onOkHandle} hidden={okHidden}>\n {okText || '提交'}\n </ButtonWrapper>,\n ];\n\n const footerNew = footer || operateGroup;\n\n return (\n <ConfigProviderWrapper {...configProviderProps}>\n <Modal\n maskClosable={true}\n centered={true}\n onCancel={onClose}\n destroyOnClose\n {...otherProps}\n className={classNames('v-dialog-modal', className)}\n open={open}\n afterClose={onAfterClose}\n getContainer={divElement}\n footer={footerNew}\n >\n {typeof content === 'function' ? content(form, { onClose }) : content}\n </Modal>\n </ConfigProviderWrapper>\n );\n};\n\n/**\n * 函数式调用弹框;初始化后,内容无法更新\n *```\n * 1. 基础使用方式\n * dialogModal.open({\n * title: '我是弹框',\n * content: <div>我是内容</div>,\n * });\n * ```\n * ```\n * ***************************\n * 2. 结合内置form使用,可在onOK、onCancel获取form对象\n * dialogModal.open({\n * title: '我是弹框',\n * content: (form, operate) => {\n * return (\n * <Form form={form}>\n * <Form.Item name=\"useName\">\n * <Input placeholder=\"请输入\" />\n * </Form.Item>\n * </Form>\n * );\n * },\n * onOK: (form) => {\n * console.log('content form数据', form.getFieldsValue());\n * return Promise.resolve();\n * },\n * });\n * ```\n */\nexport const dialogModal = {\n open: (props: DialogModalProps) => {\n const { divElement, elementId } = bodyAppendDivElement();\n window['__dialog_modal_elementId'] = elementId;\n const root = createRoot(divElement);\n root.render(<ModalRender {...props} divElement={divElement} elementId={elementId} />);\n return {\n close: () => {\n window[elementId]?.();\n },\n };\n },\n /**\n * ```\n * 1. 关闭最新弹框,如果有多个弹框只能关闭最后一个\n * 2. 多个弹框主动关闭,只能使用 dialogModal.open()返回值中的close\n * ```\n */\n close: () => {\n try {\n const elementId = window['__dialog_modal_elementId'] as string;\n if (isString(elementId)) window[elementId]?.();\n } catch (error) {\n //\n }\n },\n};\n"],"names":["ModalRender","props","divElement","elementId","onOk","onCancel","okButtonProps","cancelButtonProps","content","configProviderProps","className","okHidden","cancelHidden","footer","cancelText","okText","otherProps","_objectWithoutPropertiesLoose","_excluded","_useState","useState","open","setOpen","_Form$useForm","Form","useForm","form","onClose","_hooks","useCallbackRef","window","error","fbaHooks","useEffectCustom","onCancelHandle","e","response","_isPromise","then","onOkHandle","onAfterClose","removeBodyChild","afterClose","operateGroup","_jsx","ButtonWrapper","_extends","onClick","hidden","children","type","footerNew","ConfigProviderWrapper","Modal","maskClosable","centered","destroyOnClose","_classNames","getContainer","dialogModal","_bodyAppendDivElement","bodyAppendDivElement","root","createRoot","render","close","_window$elementId","_window","call","_window$elementId2","_window2","_isString"],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- /*! @flatjs/forge MIT @flatbiz/antd */
2
- import e from"@ant-design/icons/es/icons/RedoOutlined";import{isString as r}from"@dimjs/lang/cjs/is-string";import{hooks as n}from"@wove/react/cjs/hooks";import{_ as t,a as o}from"./_rollupPluginBabelHelpers-1f4d8910.js";import{isUndefinedOrNull as u,toArray as s,valueIsEqual as i,arrayFind as a}from"@flatbiz/utils";import{Select as l,Button as c}from"antd";import{useState as f,useMemo as v,useRef as d}from"react";import{R as h}from"./request-status-03fc60e2.js";import{isDeepEqual as p}from"@dimjs/lang/cjs/is-deep-equal";import{json as m}from"@dimjs/utils/cjs/json";import g from"pubsub-js";import{fbaHooks as C}from"./fba-hooks/index.js";import{isObject as q}from"@dimjs/lang/cjs/is-object";import{jsx as w,jsxs as _}from"react/jsx-runtime";var b=function e(r){var n=r.cacheKey,t=r.serviceConfig,o=r.hasOuterSelectorList,s=r.outerSelectorList,i=r.onRespDataChange,a=r.onSelectorRequestError,l=r.onChange,c=r.useCache;var d=t==null?void 0:t.params;var h=(t==null?void 0:t.requiredParamsKeys)||[];var q=d&&Object.keys(d).length>0;var w=f(),_=w[0],b=w[1];var R=f(),y=R[0],S=R[1];var j=f(Date.now()),L=j[0],P=j[1];var O=v((function(){try{if(q){var e=JSON.stringify(m.sort(d));if(e==="{}"){return undefined}return e}}catch(e){}return undefined}),[q,d]);var A=""+O;var k=O+"_status";var E=n+"_"+A;var D=C.usePrevious(O);var x=C.usePrevious(d);var K=function e(r){return(t==null?void 0:t.onRequestResultAdapter==null?void 0:t.onRequestResultAdapter(r))||r||[]};var N=function e(){var r;return(r=window["__selector_wrapper_"])==null?void 0:r[n]};var I=function e(){var r;return(r=N())==null?void 0:r[A]};var M=function e(){var r;return(r=N())==null?void 0:r[k]};var B=function e(r,t){if(!window["__selector_wrapper_"]){window["__selector_wrapper_"]={}}if(!window["__selector_wrapper_"][n]){window["__selector_wrapper_"][n]={}}window["__selector_wrapper_"][n][r]=t};var T=function e(r){B(k,r);S(r)};var V=function e(){return new Promise((function(e,r){var n,o;var u=function(n){try{console.error(n);T("request-error");b(undefined);setTimeout((function(){g.publish(E,{status:"request-error"})}));a==null?void 0:a(n);return e(Promise.reject())}catch(e){return r(e)}};try{T("request-progress");return Promise.resolve(t==null?void 0:t.onRequest==null?void 0:t.onRequest(d||{})).then((function(r){try{n=r;o=K(n)||[];B(A,o);T("request-success");setTimeout((function(){g.publish(E,{status:"request-success",respData:o})}));return e(o)}catch(e){return u(e)}}),u)}catch(e){u(e)}}))};C.useEffectCustomAsync((function(){return new Promise((function(e,r){var n,f,v,m,C,q;if(o){S("request-success");b(s);i==null?void 0:i(s);return e()}if(h.length>0){n=d?h.find((function(e){return u(d[e])})):true;if(n){b([]);S("no-dependencies-params");if(D){l==null?void 0:l(undefined)}return e()}if(c===false){if(p(d,x)){return e()}var w=function(){try{return e()}catch(e){return r(e)}};var _=function(e){try{console.error(e);S("request-error");b(undefined);a==null?void 0:a(e);return w()}catch(e){return r(e)}};try{S("request-progress");return Promise.resolve(t==null?void 0:t.onRequest==null?void 0:t.onRequest(d||{})).then((function(e){try{f=e;v=K(f)||[];S("request-success");b(v);i==null?void 0:i(v);return w()}catch(e){return _(e)}}),_)}catch(e){_(e)}}return R.call(this)}function R(){m=M();if(m==="request-success"){C=I();b(C);S(m);i==null?void 0:i(C);return e()}if(m==="request-progress"){S(m);g.subscribe(E,(function(e,r){var n=r.status,t=r.respData;if(n==="request-success"){S(n);b(t);i==null?void 0:i(t)}else{S("request-error");b(undefined)}}));return e()}return Promise.resolve(V()).then((function(n){try{q=n;b(q);S("request-success");i==null?void 0:i(q);return e()}catch(e){return r(e)}}),r)}return R.call(this)}))}),[d,s,L]);var z=function e(){P(Date.now())};return{requestStatus:y,stateSelectorList:_,serviceRequestParamsStringify:O,onRefreshRequest:z}};var R=function e(r,n){var t=s(r);t=t.map((function(e){if(q(e))return e[n];return e}));return t};var y=["serviceConfig","showAllOption","onSelectorListChange","onSelectorListAllChange","onSelectorRequestError","onLabelRenderAdapter","requestMessageConfig","selectorList","modelKey","fieldNames","value","labelInValue","useCache"];var S=function u(f){var p=f.serviceConfig,m=f.showAllOption,g=f.onSelectorListChange,C=f.onSelectorListAllChange,q=f.onSelectorRequestError,S=f.onLabelRenderAdapter,j=f.requestMessageConfig,L=f.selectorList,P=f.modelKey,O=f.fieldNames,A=f.value,k=f.labelInValue,E=f.useCache,D=t(f,y);var x=d(true);var K=f.hasOwnProperty("selectorList");var N=o({label:"label",value:"value",disabled:"disabled"},O),I=N.label,M=N.value,B=N.disabled;var T=v((function(){var e;if(!m)return null;var r=m===true;return e={},e[I]=r?"全部":m.label,e[M]=r?"":m.value,e}),[I,M,m]);var V=i(f.mode,["multiple"]);var z=b({cacheKey:P,hasOuterSelectorList:K,onChange:f.onChange,serviceConfig:p,outerSelectorList:L,onRespDataChange:function e(r){if(x.current){g==null?void 0:g(r||[]);x.current=false}C==null?void 0:C(r||[])},onSelectorRequestError:q,useCache:E===undefined?true:E}),F=z.requestStatus,H=z.stateSelectorList,J=z.onRefreshRequest;var W=n.useCallbackRef((function(e){if(k){if(V){f.onChange==null?void 0:f.onChange(e,e)}else{f.onChange==null?void 0:f.onChange(e[0],e)}}else{var r=e.map((function(e){return e[M]}));if(V){f.onChange==null?void 0:f.onChange(r,e)}else{f.onChange==null?void 0:f.onChange(r[0],e[0])}}}));var G=n.useCallbackRef((function(e,r){if(!r)return f.onChange==null?void 0:f.onChange(undefined);var n=s(r);var t=[];n.forEach((function(e){if(m&&T&&e.value===T[M]){t.push(T)}else{var r=a(H||[],e.value,M);if(r){t.push(r)}}}));W(t)}));var Q=v((function(){if(F!=="request-success")return[];if(!H||H.length===0)return[];if(!T)return H;return[T].concat(H)}),[T,F,H]);var U=F==="request-progress";var X=v((function(){var e=R(A,M);return V?e:e[0]}),[V,M,A]);var Y=n.useCallbackRef((function(e,n){var t=s(n.children);var o="";t.forEach((function(e){if(r(e))o+=e}));return o.toLowerCase().indexOf(e.toLowerCase())>=0}));return w(l,o({showSearch:true,allowClear:true,dropdownMatchSelectWidth:false,filterOption:Y},D,{style:o({width:"100%"},f.style),value:X,loading:U,onChange:G,fieldNames:undefined,suffixIcon:F==="request-error"?w(e,{spin:U,onClick:J}):undefined,notFoundContent:w(h,{status:F,loading:U,messageConfig:o({"request-init":"暂无数据"},j),errorButton:w(c,{type:"primary",onClick:J,children:"重新获取数据"})}),children:Q.map((function(e,r){var n=e[M];var t=e[I];return _(l.Option,{value:n,label:t,disabled:e[B],children:[f.showIcon?w("span",{className:"v-selector-item-icon",children:f.icon==null?void 0:f.icon(e,r)}):null,S?S(e):t]},n+"-"+r)}))}))};export{S};
3
- //# sourceMappingURL=selector-wrapper-ece722f5.js.map