@flatbiz/antd 4.5.47 → 4.5.49

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 (169) hide show
  1. package/esm/ace-editor-json/index.js +1 -1
  2. package/esm/ace-editor-json/index.js.map +1 -1
  3. package/esm/ace-editor-mysql/index.js +1 -1
  4. package/esm/ace-editor-mysql/index.js.map +1 -1
  5. package/esm/ace-editor-xml/index.js +1 -1
  6. package/esm/ace-editor-xml/index.js.map +1 -1
  7. package/esm/ai-search/index.css +0 -0
  8. package/esm/ai-search/index.js +11 -0
  9. package/esm/ai-search/index.js.map +1 -0
  10. package/esm/bootstrap/index.js +1 -1
  11. package/esm/bootstrap/index.js.map +1 -1
  12. package/esm/button-operate/index.js +1 -1
  13. package/esm/button-operate/index.js.map +1 -1
  14. package/esm/button-wrapper/index.js +1 -1
  15. package/esm/button-wrapper/index.js.map +1 -1
  16. package/esm/cascader-wrapper/index.js +1 -1
  17. package/esm/cascader-wrapper/index.js.map +1 -1
  18. package/esm/check-list/index.js +1 -1
  19. package/esm/check-list/index.js.map +1 -1
  20. package/esm/config-provider-wrapper/index.js +1 -1
  21. package/esm/date-range-picker-wrapper-form-item/index.js +1 -1
  22. package/esm/date-range-picker-wrapper-form-item/index.js.map +1 -1
  23. package/esm/dialog-alert/index.js +1 -1
  24. package/esm/dialog-alert/index.js.map +1 -1
  25. package/esm/dialog-confirm/index.js +1 -1
  26. package/esm/dialog-confirm/index.js.map +1 -1
  27. package/esm/dialog-drag-modal/index.js +1 -1
  28. package/esm/dialog-drag-modal/index.js.map +1 -1
  29. package/esm/dialog-drawer/index.js +1 -1
  30. package/esm/dialog-drawer/index.js.map +1 -1
  31. package/esm/dialog-drawer-content/index.js +1 -1
  32. package/esm/dialog-drawer-content/index.js.map +1 -1
  33. package/esm/dialog-loading/index.js +1 -1
  34. package/esm/dialog-loading/index.js.map +1 -1
  35. package/esm/dialog-modal/index.js +1 -1
  36. package/esm/dialog-modal/index.js.map +1 -1
  37. package/esm/dialog-preview-image/index.js +1 -1
  38. package/esm/dialog-preview-image/index.js.map +1 -1
  39. package/esm/drag-collapse/index.js +1 -1
  40. package/esm/drag-collapse/index.js.map +1 -1
  41. package/esm/drag-collapse-form-list/index.js +1 -1
  42. package/esm/drag-collapse-form-list/index.js.map +1 -1
  43. package/esm/drag-editable-card/index.css +1 -0
  44. package/esm/drag-editable-card/index.js +2 -2
  45. package/esm/drag-editable-card/index.js.map +1 -1
  46. package/esm/drag-editable-table/index.js +1 -1
  47. package/esm/drag-editable-table/index.js.map +1 -1
  48. package/esm/drag-editable-table-pro/index.js +1 -1
  49. package/esm/drag-editable-table-pro/index.js.map +1 -1
  50. package/esm/drag-form-list/index.js +1 -1
  51. package/esm/drag-form-list/index.js.map +1 -1
  52. package/esm/drawer-wrapper/index.js +1 -1
  53. package/esm/drawer-wrapper/index.js.map +1 -1
  54. package/esm/dropdown-menu-wrapper/index.js +1 -1
  55. package/esm/dropdown-menu-wrapper/index.js.map +1 -1
  56. package/esm/easy-form/index.js +1 -1
  57. package/esm/easy-form/index.js.map +1 -1
  58. package/esm/easy-table/index.js +1 -1
  59. package/esm/easy-table/index.js.map +1 -1
  60. package/esm/editable-card/index.css +1 -1
  61. package/esm/editable-card/index.js +2 -2
  62. package/esm/editable-card/index.js.map +1 -1
  63. package/esm/editable-field/index.js +1 -1
  64. package/esm/editable-field/index.js.map +1 -1
  65. package/esm/editable-table/index.js +1 -1
  66. package/esm/editable-table/index.js.map +1 -1
  67. package/esm/editable-table-pro/index.js +1 -1
  68. package/esm/editable-table-pro/index.js.map +1 -1
  69. package/esm/error-boundary-wrapper/index.js +1 -1
  70. package/esm/error-boundary-wrapper/index.js.map +1 -1
  71. package/esm/fba-app/index.js +1 -1
  72. package/esm/fba-app/index.js.map +1 -1
  73. package/esm/fba-hooks/index.js +1 -1
  74. package/esm/fba-hooks/index.js.map +1 -1
  75. package/esm/form-item-group/index.js +1 -1
  76. package/esm/form-item-group/index.js.map +1 -1
  77. package/esm/form-item-text/index.js +1 -1
  78. package/esm/form-item-text/index.js.map +1 -1
  79. package/esm/form-item-wrapper/index.js +1 -1
  80. package/esm/form-item-wrapper/index.js.map +1 -1
  81. package/esm/form-list-wrapper/index.js +1 -1
  82. package/esm/form-list-wrapper/index.js.map +1 -1
  83. package/esm/index.js +3 -1
  84. package/esm/input-search-wrapper/index.js +1 -1
  85. package/esm/input-search-wrapper/index.js.map +1 -1
  86. package/esm/input-text-area-wrapper/index.js +1 -1
  87. package/esm/input-text-area-wrapper/index.js.map +1 -1
  88. package/esm/input-wrapper/index.js +1 -1
  89. package/esm/input-wrapper/index.js.map +1 -1
  90. package/esm/json-editor/index.js +1 -1
  91. package/esm/json-editor/index.js.map +1 -1
  92. package/esm/label-value-render/index.js +1 -1
  93. package/esm/label-value-render/index.js.map +1 -1
  94. package/esm/local-loading/index.js +1 -1
  95. package/esm/local-loading/index.js.map +1 -1
  96. package/esm/mention-editor/index.js +1 -1
  97. package/esm/mention-editor/index.js.map +1 -1
  98. package/esm/mentions-wrapper/index.js +1 -1
  99. package/esm/mentions-wrapper/index.js.map +1 -1
  100. package/esm/modal-wrapper/index.js +1 -1
  101. package/esm/modal-wrapper/index.js.map +1 -1
  102. package/esm/number-range-form-item/index.js +1 -1
  103. package/esm/number-range-form-item/index.js.map +1 -1
  104. package/esm/pagination-wrapper/index.js +1 -1
  105. package/esm/pagination-wrapper/index.js.map +1 -1
  106. package/esm/pdf/index.js +1 -1
  107. package/esm/pdf/index.js.map +1 -1
  108. package/esm/pdf-preview/index.js +1 -1
  109. package/esm/pdf-preview/index.js.map +1 -1
  110. package/esm/relation-tree/index.js +1 -1
  111. package/esm/relation-tree/index.js.map +1 -1
  112. package/esm/resizable-drawer/index.css +1 -0
  113. package/esm/resizable-drawer/index.js +15 -0
  114. package/esm/resizable-drawer/index.js.map +1 -0
  115. package/esm/rich-text-editor/index.js +1 -1
  116. package/esm/rich-text-editor/index.js.map +1 -1
  117. package/esm/rich-text-viewer/index.js +1 -1
  118. package/esm/rich-text-viewer/index.js.map +1 -1
  119. package/esm/roll-location-center/index.js +1 -1
  120. package/esm/roll-location-center/index.js.map +1 -1
  121. package/esm/roll-location-in-view/index.js +1 -1
  122. package/esm/roll-location-in-view/index.js.map +1 -1
  123. package/esm/rule-describe/index.js +1 -1
  124. package/esm/rule-describe/index.js.map +1 -1
  125. package/esm/search-form/index.js +1 -1
  126. package/esm/search-form/index.js.map +1 -1
  127. package/esm/search-menu/index.js +1 -1
  128. package/esm/search-menu/index.js.map +1 -1
  129. package/esm/selector-wrapper/index.js +1 -1
  130. package/esm/selector-wrapper/index.js.map +1 -1
  131. package/esm/selector-wrapper-search/index.js +1 -1
  132. package/esm/selector-wrapper-search/index.js.map +1 -1
  133. package/esm/selector-wrapper-simple/index.js +1 -1
  134. package/esm/selector-wrapper-simple/index.js.map +1 -1
  135. package/esm/simple-layout/index.js +1 -1
  136. package/esm/simple-layout/index.js.map +1 -1
  137. package/esm/switch-confirm-wrapper/index.js +1 -1
  138. package/esm/switch-confirm-wrapper/index.js.map +1 -1
  139. package/esm/table-cell-render/index.js +1 -1
  140. package/esm/table-cell-render/index.js.map +1 -1
  141. package/esm/table-scrollbar/index.js +1 -1
  142. package/esm/table-scrollbar/index.js.map +1 -1
  143. package/esm/tag-group/index.js +1 -1
  144. package/esm/tag-group/index.js.map +1 -1
  145. package/esm/tag-wrapper/index.js +1 -1
  146. package/esm/tag-wrapper/index.js.map +1 -1
  147. package/esm/text-css-ellipsis/index.js +1 -1
  148. package/esm/text-css-ellipsis/index.js.map +1 -1
  149. package/esm/text-overflow/index.js +1 -1
  150. package/esm/text-overflow/index.js.map +1 -1
  151. package/esm/text-overflow-render/index.js +1 -1
  152. package/esm/text-overflow-render/index.js.map +1 -1
  153. package/esm/time-range-picker-wrapper-form-item/index.js +1 -1
  154. package/esm/time-range-picker-wrapper-form-item/index.js.map +1 -1
  155. package/esm/tips-title/index.css +1 -1
  156. package/esm/tips-title/index.js +1 -1
  157. package/esm/tips-title/index.js.map +1 -1
  158. package/esm/tree-modal/index.js +1 -1
  159. package/esm/tree-modal/index.js.map +1 -1
  160. package/esm/tree-modal-selector/index.js +1 -1
  161. package/esm/tree-modal-selector/index.js.map +1 -1
  162. package/esm/tree-selector-wrapper/index.js +1 -1
  163. package/esm/tree-selector-wrapper/index.js.map +1 -1
  164. package/esm/tree-wrapper/index.js +1 -1
  165. package/esm/tree-wrapper/index.js.map +1 -1
  166. package/esm/upload-wrapper/index.js +1 -1
  167. package/esm/upload-wrapper/index.js.map +1 -1
  168. package/index.d.ts +60 -8
  169. package/package.json +6 -3
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/time-range-picker-wrapper-form-item/time-range-picker-wrapper-form-item.tsx"],"sourcesContent":["import { isArray } from '@dimjs/lang';\n\nimport { toArray } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Form } from 'antd';\nimport { useEffect, useMemo, useRef } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { fbaUtils } from '../fba-utils';\nimport { FormItemHidden } from '../form-item-hidden';\nimport { FormItemWrapper, FormItemWrapperProps } from '../form-item-wrapper';\nimport {\n TimeRangePickerWrapper,\n TimeRangePickerWrapperProps,\n} from '../time-range-picker-wrapper/time-range-picker-wrapper';\nimport { FormItemNamePath } from '../types';\n\nexport type TimeRangePickerWrapperFormItemProps = Omit<FormItemWrapperProps, 'name'> & {\n /**\n * 开始的时间name\n */\n startName: FormItemNamePath;\n /**\n * 结束的时间name\n */\n endName: FormItemNamePath;\n /**\n * 如果 TimeRangePickerWrapperFormItem 在Form.List场景下 必传\n * @deprecated 使用 formListCompleteName 配置\n */\n formListName?: Array<string | number>;\n /**\n * 前端 formItem 前缀FormName,当 TimeRangePickerWrapperFormItem 处在Form.List场景下,必传\n * ```\n * 例如 处在formList内部时,则 formListCompleteName = ['xxxxList']\n * 例如 处在formList套formList内部时,则 formListCompleteName = ['xxxxList', 索引值, 'xxxxList2']\n * ```\n */\n formListCompleteName?: Array<string | number> | string;\n\n timeRangePickerWrapperProps?: TimeRangePickerWrapperProps;\n};\n/**\n * 包含了Form.Item组件的时间区间选择组件,时间区间组件可以定义成两个字段操作,不用再通过数组处理\n * ```\n * 1. 会在form中产生一个 `__#invalid_time_xxxx_xxxx` 的无效字段,可以直接忽略\n * 2. 设置日期格式 timeRangePickerWrapperProps={{ format: 'HH:mm:ss' }}\n * 使用场景:\n * 1. 基础使用场景\n * <TimeRangePickerWrapperFormItem startName={'date1'} endName={'date2'} />\n * 2. Form.List 内部使用\n * <FormListWrapper name=\"dataList\" prevCompleteName={[]}>\n * {(data) => {\n * return <TimeRangePickerWrapperFormItem formListCompleteName={data.prevCompleteName} startName={data.getInsideFormItemName('date1')} endName={data.getInsideFormItemName('date2')} />\n * }}\n * </FormListWrapper>\n * 3. Form.List 套 Form.List 内部使用\n * <FormListWrapper name=\"dataList\" prevCompleteName={[]}>\n * {(data) => {\n * return <FormListWrapper name={data.getInsideFormItemName('childrenList')} prevCompleteName={data.prevCompleteName}>\n * {(data2) => {\n * return <TimeRangePickerWrapperFormItem formListCompleteName={data2.prevCompleteName} startName={data2.getInsideFormItemName('date1')} endName={data2.getInsideFormItemName('date2')} />\n * }}\n * </FormListWrapper>\n * }}\n * </FormListWrapper>\n * ```\n */\nexport const TimeRangePickerWrapperFormItem = (props: TimeRangePickerWrapperFormItemProps) => {\n const {\n startName,\n endName,\n formListName,\n formListCompleteName,\n timeRangePickerWrapperProps,\n ...otherProps\n } = props;\n const form = Form.useFormInstance();\n\n const prevName = formListCompleteName || formListName;\n\n const bodyName = useMemo(() => {\n if (prevName && isArray(startName) && isArray(endName)) {\n const [startName0, ...startNameOther] = startName;\n const [, ...endNameOther] = endName;\n return [startName0].concat(`__#invalid_time_${startNameOther.join('-')}_${endNameOther.join('-')}`);\n }\n return `__#invalid_time_${startName}_${endName}`;\n }, [prevName, startName, endName]);\n\n const bodyCompleteName = useMemo(\n () => (prevName ? [...toArray<string | number>(prevName), ...bodyName] : bodyName),\n [bodyName, prevName],\n );\n const startCompleteName = useMemo(() => {\n return prevName\n ? [...toArray<string | number>(prevName), ...toArray<string | number>(startName)]\n : startName;\n }, [startName, prevName]);\n\n const endCompleteName = useMemo(() => {\n return prevName ? [...toArray<string | number>(prevName), ...toArray<string | number>(endName)] : endName;\n }, [endName, prevName]);\n\n const startVal = Form.useWatch(startCompleteName, form);\n const endVal = Form.useWatch(endCompleteName, form);\n const bodyValue = Form.useWatch(bodyCompleteName, form);\n\n const onChange = hooks.useCallbackRef((data) => {\n const value1 = data?.[0];\n const value2 = data?.[1];\n fbaUtils.setFormFieldsAndTriggerValuesChange(form, [\n { name: startCompleteName, value: value1 },\n { name: endCompleteName, value: value2 },\n ]);\n timeRangePickerWrapperProps?.onChange?.(data);\n });\n\n useEffect(() => {\n if (startVal && endVal) {\n form.setFields([{ name: bodyCompleteName, value: [startVal, endVal] }]);\n } else {\n form.setFields([{ name: bodyCompleteName, value: undefined }]);\n }\n }, [startVal, endVal, bodyValue, form, bodyCompleteName]);\n\n return (\n <>\n <FormItemHidden name={startName} />\n <FormItemHidden name={endName} />\n <FormItemWrapper {...otherProps} name={bodyName}>\n {prevName && props.rules?.length ? (\n <Content {...timeRangePickerWrapperProps} onChange={onChange} />\n ) : (\n <TimeRangePickerWrapper {...timeRangePickerWrapperProps} onChange={onChange} />\n )}\n </FormItemWrapper>\n </>\n );\n};\n\nconst Content = (props) => {\n const ref = useRef<number>(0);\n const preValue = fbaHooks.usePrevious(props.value);\n fbaHooks.useEffectCustom(() => {\n // 处在Form.List场景下,当第一次外部赋值时,会出现赋值成功,但显示异常效果\n if (ref.current === 0 && !preValue && props.value?.[0] && props.value?.[1]) {\n ref.current = 1;\n props.onChange?.(props.value);\n }\n }, [props.value?.[0], props.value?.[1]]);\n\n return <TimeRangePickerWrapper {...props} />;\n};\n"],"names":["TimeRangePickerWrapperFormItem","props","_props$rules","startName","endName","formListName","formListCompleteName","timeRangePickerWrapperProps","otherProps","_objectWithoutPropertiesLoose","_excluded","form","Form","useFormInstance","prevName","bodyName","useMemo","_isArray","startName0","startNameOther","slice","endNameOther","concat","join","bodyCompleteName","toArray","startCompleteName","endCompleteName","startVal","useWatch","endVal","bodyValue","onChange","_hooks","useCallbackRef","data","value1","value2","fbaUtils","setFormFieldsAndTriggerValuesChange","name","value","useEffect","setFields","undefined","_jsxs","_Fragment","children","_jsx","FormItemHidden","FormItemWrapper","_extends","rules","length","Content","TimeRangePickerWrapper","_props$value3","_props$value4","ref","useRef","preValue","fbaHooks","usePrevious","useEffectCustom","_props$value","_props$value2","current"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/time-range-picker-wrapper-form-item/time-range-picker-wrapper-form-item.tsx"],"sourcesContent":["import { isArray } from '@dimjs/lang';\n\nimport { toArray } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Form } from 'antd';\nimport { useEffect, useMemo, useRef } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { fbaUtils } from '../fba-utils';\nimport { FormItemHidden } from '../form-item-hidden';\nimport { FormItemWrapper, FormItemWrapperProps } from '../form-item-wrapper';\nimport {\n TimeRangePickerWrapper,\n TimeRangePickerWrapperProps,\n} from '../time-range-picker-wrapper/time-range-picker-wrapper';\nimport { FormItemNamePath } from '../types';\n\nexport type TimeRangePickerWrapperFormItemProps = Omit<FormItemWrapperProps, 'name'> & {\n /**\n * 开始的时间name\n */\n startName: FormItemNamePath;\n /**\n * 结束的时间name\n */\n endName: FormItemNamePath;\n /**\n * 如果 TimeRangePickerWrapperFormItem 在Form.List场景下 必传\n * @deprecated 使用 formListCompleteName 配置\n */\n formListName?: Array<string | number>;\n /**\n * 前端 formItem 前缀FormName,当 TimeRangePickerWrapperFormItem 处在Form.List场景下,必传\n * ```\n * 例如 处在formList内部时,则 formListCompleteName = ['xxxxList']\n * 例如 处在formList套formList内部时,则 formListCompleteName = ['xxxxList', 索引值, 'xxxxList2']\n * ```\n */\n formListCompleteName?: Array<string | number> | string;\n\n timeRangePickerWrapperProps?: TimeRangePickerWrapperProps;\n};\n/**\n * 包含了Form.Item组件的时间区间选择组件,时间区间组件可以定义成两个字段操作,不用再通过数组处理\n * ```\n * 1. 会在form中产生一个 `__#invalid_time_xxxx_xxxx` 的无效字段,可以直接忽略\n * 2. 设置日期格式 timeRangePickerWrapperProps={{ format: 'HH:mm:ss' }}\n * 使用场景:\n * 1. 基础使用场景\n * <TimeRangePickerWrapperFormItem startName={'date1'} endName={'date2'} />\n * 2. Form.List 内部使用\n * <FormListWrapper name=\"dataList\" prevCompleteName={[]}>\n * {(data) => {\n * return <TimeRangePickerWrapperFormItem formListCompleteName={data.prevCompleteName} startName={data.getInsideFormItemName('date1')} endName={data.getInsideFormItemName('date2')} />\n * }}\n * </FormListWrapper>\n * 3. Form.List 套 Form.List 内部使用\n * <FormListWrapper name=\"dataList\" prevCompleteName={[]}>\n * {(data) => {\n * return <FormListWrapper name={data.getInsideFormItemName('childrenList')} prevCompleteName={data.prevCompleteName}>\n * {(data2) => {\n * return <TimeRangePickerWrapperFormItem formListCompleteName={data2.prevCompleteName} startName={data2.getInsideFormItemName('date1')} endName={data2.getInsideFormItemName('date2')} />\n * }}\n * </FormListWrapper>\n * }}\n * </FormListWrapper>\n * ```\n */\nexport const TimeRangePickerWrapperFormItem = (props: TimeRangePickerWrapperFormItemProps) => {\n const {\n startName,\n endName,\n formListName,\n formListCompleteName,\n timeRangePickerWrapperProps,\n ...otherProps\n } = props;\n const form = Form.useFormInstance();\n\n const prevName = formListCompleteName || formListName;\n\n const bodyName = useMemo(() => {\n if (prevName && isArray(startName) && isArray(endName)) {\n const [startName0, ...startNameOther] = startName;\n const [, ...endNameOther] = endName;\n return [startName0].concat(`__#invalid_time_${startNameOther.join('-')}_${endNameOther.join('-')}`);\n }\n return `__#invalid_time_${startName}_${endName}`;\n }, [prevName, startName, endName]);\n\n const bodyCompleteName = useMemo(\n () => (prevName ? [...toArray<string | number>(prevName), ...bodyName] : bodyName),\n [bodyName, prevName],\n );\n const startCompleteName = useMemo(() => {\n return prevName\n ? [...toArray<string | number>(prevName), ...toArray<string | number>(startName)]\n : startName;\n }, [startName, prevName]);\n\n const endCompleteName = useMemo(() => {\n return prevName ? [...toArray<string | number>(prevName), ...toArray<string | number>(endName)] : endName;\n }, [endName, prevName]);\n\n const startVal = Form.useWatch(startCompleteName, form);\n const endVal = Form.useWatch(endCompleteName, form);\n const bodyValue = Form.useWatch(bodyCompleteName, form);\n\n const onChange = hooks.useCallbackRef((data) => {\n const value1 = data?.[0];\n const value2 = data?.[1];\n fbaUtils.setFormFieldsAndTriggerValuesChange(form, [\n { name: startCompleteName, value: value1 },\n { name: endCompleteName, value: value2 },\n ]);\n timeRangePickerWrapperProps?.onChange?.(data);\n });\n\n useEffect(() => {\n if (startVal && endVal) {\n form.setFields([{ name: bodyCompleteName, value: [startVal, endVal] }]);\n } else {\n form.setFields([{ name: bodyCompleteName, value: undefined }]);\n }\n }, [startVal, endVal, bodyValue, form, bodyCompleteName]);\n\n return (\n <>\n <FormItemHidden name={startName} />\n <FormItemHidden name={endName} />\n <FormItemWrapper {...otherProps} name={bodyName}>\n {prevName && props.rules?.length ? (\n <Content {...timeRangePickerWrapperProps} onChange={onChange} />\n ) : (\n <TimeRangePickerWrapper {...timeRangePickerWrapperProps} onChange={onChange} />\n )}\n </FormItemWrapper>\n </>\n );\n};\n\nconst Content = (props) => {\n const ref = useRef<number>(0);\n const preValue = fbaHooks.usePrevious(props.value);\n fbaHooks.useEffectCustom(() => {\n // 处在Form.List场景下,当第一次外部赋值时,会出现赋值成功,但显示异常效果\n if (ref.current === 0 && !preValue && props.value?.[0] && props.value?.[1]) {\n ref.current = 1;\n props.onChange?.(props.value);\n }\n }, [props.value?.[0], props.value?.[1]]);\n\n return <TimeRangePickerWrapper {...props} />;\n};\n"],"names":["TimeRangePickerWrapperFormItem","props","_props$rules","startName","endName","formListName","formListCompleteName","timeRangePickerWrapperProps","otherProps","_objectWithoutPropertiesLoose","_excluded","form","Form","useFormInstance","prevName","bodyName","useMemo","_isArray","startName0","startNameOther","slice","endNameOther","concat","join","bodyCompleteName","toArray","startCompleteName","endCompleteName","startVal","useWatch","endVal","bodyValue","onChange","_hooks","useCallbackRef","data","value1","value2","fbaUtils","setFormFieldsAndTriggerValuesChange","name","value","useEffect","setFields","undefined","_jsxs","_Fragment","children","_jsx","FormItemHidden","FormItemWrapper","_extends","rules","length","Content","TimeRangePickerWrapper","_props$value3","_props$value4","ref","useRef","preValue","fbaHooks","usePrevious","useEffectCustom","_props$value","_props$value2","current"],"mappings":"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"}
@@ -1 +1 @@
1
- .tips-title{border:1px solid var(--v-border-color,#d9d9d9);border-radius:8px;padding:24px;position:relative}.tips-title-title{background-color:var(--block-bg-color);font-weight:600;left:10px;padding:0 10px;position:absolute;top:0;transform:translateY(-50%)}.tips-title-small{padding:12px}.tips-title+.tips-title{margin-top:20px}
1
+ .tips-title{border:1px solid var(--v-border-color,#d9d9d9);border-radius:8px;padding:24px;position:relative}.tips-title-title{background-color:var(--block-bg-color);font-weight:600;gap:5px;left:10px;padding:0 10px;position:absolute;top:0;transform:translateY(-50%)}.tips-title-small{padding:12px}.tips-title+.tips-title{margin-top:20px}.tips-title-content{height:100%;overflow:auto}
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable */
2
2
  import './index.css';
3
3
  /*! @flatjs/forge MIT @flatbiz/antd */
4
- import{_ as e}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{classNames as l}from"@dimjs/utils/cjs/class-names";import i from"@ant-design/icons/es/icons/QuestionCircleOutlined";import{Space as t}from"antd";import{jsx as r,jsxs as s}from"react/jsx-runtime";var n=function n(o){if(o.hidden)return null;var c=o.helpIcon?o.helpIcon:o.onHelp?r(i,{onClick:o.onHelp}):null;return s("div",{className:l("tips-title",{"tips-title-small":o.size==="small"},o.className),style:e({},o.style,{"--v-border-color":o.borderColor}),children:[s(t,{className:"tips-title-title",size:5,direction:"horizontal",children:[r("span",{style:o.titleStyle,children:o.title}),c]}),r("div",{className:"tips-title-content",children:o.children})]})};export{n as TipsTitle};
4
+ import{_ as e}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{classNames as l}from"@dimjs/utils/cjs/class-names";import t from"@ant-design/icons/es/icons/QuestionCircleOutlined";import{Flex as i}from"antd";import{jsx as s,jsxs as r}from"react/jsx-runtime";var n=function n(o){if(o.hidden)return null;var c=o.helpIcon?o.helpIcon:o.onHelp?s(t,{onClick:o.onHelp}):null;return r("div",{className:l("tips-title",{"tips-title-small":o.size==="small"},o.className),style:e({},o.style,{"--v-border-color":o.borderColor}),children:[r(i,{className:"tips-title-title",children:[s("span",{style:o.titleStyle,children:o.title}),c]}),s("div",{className:"tips-title-content",style:o.contentStyle,children:o.children})]})};export{n as TipsTitle};
5
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/tips-title/tips-title.tsx"],"sourcesContent":["import { QuestionCircleOutlined } from '@ant-design/icons';\nimport { classNames } from '@dimjs/utils';\nimport { Space } from 'antd';\nimport { CSSProperties, ReactElement, type ReactNode } from 'react';\nimport './style.less';\n\nexport type TipsTitleProps = {\n className?: string;\n style?: CSSProperties;\n title: string | ReactElement;\n titleStyle?: CSSProperties;\n children: ReactNode;\n size?: 'default' | 'small';\n /** 自定义 help icon */\n helpIcon?: ReactElement;\n /** 配置 helpIcon 后,此参数失效 */\n onHelp?: () => void;\n hidden?: boolean;\n borderColor?: string;\n};\n\nexport const TipsTitle = (props: TipsTitleProps) => {\n if (props.hidden) return null;\n const helpElement = props.helpIcon ? (\n props.helpIcon\n ) : props.onHelp ? (\n <QuestionCircleOutlined onClick={props.onHelp} />\n ) : null;\n\n return (\n <div\n className={classNames(\n 'tips-title',\n {\n 'tips-title-small': props.size === 'small',\n },\n props.className,\n )}\n style={\n {\n ...props.style,\n '--v-border-color': props.borderColor,\n } as CSSProperties\n }\n >\n <Space className=\"tips-title-title\" size={5} direction=\"horizontal\">\n <span style={props.titleStyle}>{props.title}</span>\n {helpElement}\n </Space>\n <div className=\"tips-title-content\">{props.children}</div>\n </div>\n );\n};\n"],"names":["TipsTitle","props","hidden","helpElement","helpIcon","onHelp","_jsx","_QuestionCircleOutlined","onClick","_jsxs","className","_classNames","size","style","_extends","borderColor","children","Space","direction","titleStyle","title"],"mappings":";2QAqBaA,EAAY,SAAZA,EAAaC,GACxB,GAAIA,EAAMC,OAAQ,OAAO,KACzB,IAAMC,EAAcF,EAAMG,SACxBH,EAAMG,SACJH,EAAMI,OACRC,EAAAC,EAAA,CAAwBC,QAASP,EAAMI,SACrC,KAEJ,OACEI,EAAA,MAAA,CACEC,UAAWC,EACT,aACA,CACE,mBAAoBV,EAAMW,OAAS,SAErCX,EAAMS,WAERG,MAAKC,EAEEb,GAAAA,EAAMY,MAAK,CACd,mBAAoBZ,EAAMc,cAE7BC,SAAA,CAEDP,EAACQ,EAAK,CAACP,UAAU,mBAAmBE,KAAM,EAAGM,UAAU,aAAYF,UACjEV,EAAA,OAAA,CAAMO,MAAOZ,EAAMkB,WAAWH,SAAEf,EAAMmB,QACrCjB,KAEHG,EAAA,MAAA,CAAKI,UAAU,qBAAoBM,SAAEf,EAAMe,aAGjD"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/tips-title/tips-title.tsx"],"sourcesContent":["import { QuestionCircleOutlined } from '@ant-design/icons';\nimport { classNames } from '@dimjs/utils';\nimport { Flex } from 'antd';\nimport type { CSSProperties, ReactElement } from 'react';\nimport { type ReactNode } from 'react';\nimport './style.less';\n\nexport type TipsTitleProps = {\n className?: string;\n style?: CSSProperties;\n title: string | ReactElement;\n titleStyle?: CSSProperties;\n contentStyle?: CSSProperties;\n children: ReactNode;\n size?: 'default' | 'small';\n /** 自定义 help icon */\n helpIcon?: ReactElement;\n /** 配置 helpIcon 后,此参数失效 */\n onHelp?: () => void;\n hidden?: boolean;\n borderColor?: string;\n};\n\nexport const TipsTitle = (props: TipsTitleProps) => {\n if (props.hidden) return null;\n const helpElement = props.helpIcon ? (\n props.helpIcon\n ) : props.onHelp ? (\n <QuestionCircleOutlined onClick={props.onHelp} />\n ) : null;\n\n return (\n <div\n className={classNames(\n 'tips-title',\n {\n 'tips-title-small': props.size === 'small',\n },\n props.className,\n )}\n style={\n {\n ...props.style,\n '--v-border-color': props.borderColor,\n } as CSSProperties\n }\n >\n <Flex className=\"tips-title-title\">\n <span style={props.titleStyle}>{props.title}</span>\n {helpElement}\n </Flex>\n <div className=\"tips-title-content\" style={props.contentStyle}>\n {props.children}\n </div>\n </div>\n );\n};\n"],"names":["TipsTitle","props","hidden","helpElement","helpIcon","onHelp","_jsx","_QuestionCircleOutlined","onClick","_jsxs","className","_classNames","size","style","_extends","borderColor","children","Flex","titleStyle","title","contentStyle"],"mappings":";0QAuBaA,EAAY,SAAZA,EAAaC,GACxB,GAAIA,EAAMC,OAAQ,OAAO,KACzB,IAAMC,EAAcF,EAAMG,SACxBH,EAAMG,SACJH,EAAMI,OACRC,EAAAC,EAAA,CAAwBC,QAASP,EAAMI,SACrC,KAEJ,OACEI,EAAA,MAAA,CACEC,UAAWC,EACT,aACA,CACE,mBAAoBV,EAAMW,OAAS,SAErCX,EAAMS,WAERG,MAAKC,EAEEb,GAAAA,EAAMY,MAAK,CACd,mBAAoBZ,EAAMc,cAE7BC,SAAA,CAEDP,EAACQ,EAAI,CAACP,UAAU,mBAAkBM,UAChCV,EAAA,OAAA,CAAMO,MAAOZ,EAAMiB,WAAWF,SAAEf,EAAMkB,QACrChB,KAEHG,EAAA,MAAA,CAAKI,UAAU,qBAAqBG,MAAOZ,EAAMmB,aAAaJ,SAC3Df,EAAMe,aAIf"}
@@ -17,5 +17,5 @@ import './../dropdown-menu-wrapper/index.css';
17
17
  import './../input-search-wrapper/index.css';
18
18
  import './index.css';
19
19
  /*! @flatjs/forge MIT @flatbiz/antd */
20
- import{toArray as e,treeToTiledMap as i,isUndefinedOrNull as n,attachPropertiesToComponent as t}from"@flatbiz/utils";import{_ as r}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{hooks as o}from"@wove/react/cjs/hooks";import{useSize as l}from"ahooks";import{Modal as a}from"antd";import{Fragment as d,useRef as s,useState as u,useEffect as c,useMemo as m}from"react";import{fbaHooks as v}from"../fba-hooks/index.js";import{isObject as h}from"@dimjs/lang/cjs/is-object";import{FlexLayout as p}from"../flex-layout/index.js";import f from"@ant-design/icons/es/icons/CloseOutlined";import{CssNodeHover as g}from"../css-node-hover/index.js";import{IconWrapper as C}from"../icon-wrapper/index.js";import{TextOverflow as j}from"../text-overflow/index.js";import{jsx as x,jsxs as y}from"react/jsx-runtime";import{TreeWrapper as b}from"../tree-wrapper/index.js";import"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/class-names";import"@dimjs/lang/cjs/is-undefined";import"@dimjs/lang/cjs/is-string";import"@dimjs/model-react";import"@dimjs/utils/cjs/array";import"@ant-design/icons/es/icons/CaretDownFilled";import"@ant-design/icons/es/icons/MoreOutlined";import"@dimjs/utils/cjs/extend";import"@dimjs/utils/cjs/get";import"@dimjs/model";import"../button-operate/index.js";import"@dimjs/lang/cjs/is-plain-object";import"@dimjs/lang/cjs/is-promise";import"../button-wrapper/index.js";import"@ant-design/icons/es/icons/LoadingOutlined";import"../index-83bede1b.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"../fba-utils/index.js";import"../dropdown-menu-wrapper/index.js";import"@ant-design/icons/es/icons/ExclamationCircleFilled";import"../dialog-confirm/index.js";import"../dialog-modal/index.js";import"react-dom/client";import"@wove/react/cjs/create-ctx";import"../input-search-wrapper/index.js";import"../request-status/index.js";import"@dimjs/utils/cjs/tree";import"dequal";var w=function e(i){var n=i.checkedIdList;return x(d,{children:n==null?void 0:n.map((function(e){var n=e.value;var t=e.label||n;return x(g,{style:{paddingLeft:5,paddingRight:0},children:y(p,{fullIndex:1,direction:"horizontal",style:{alignItems:"center",fontSize:14,marginBottom:0,color:"#505050"},children:[x(j,{text:t}),x("div",{style:{position:"relative",zIndex:9,color:"#a1a1a1"},children:x(C,{text:x(f,{}),onClick:i.onDeleteItem.bind(null,n),size:"small",style:{paddingRight:5,margin:"2px"}})})]})},n)}))})};var N=function i(n){var t,l;var a=o.useId(undefined,"tree-select-modal");return x(b,r({initRootExpand:true,showSearch:true,searchPlaceholder:"搜索",checkable:true,checkableType:"2"},n.treeProps,{showIcon:(t=n.treeProps)!=null&&t.icon?true:false,value:(l=n.value)==null?void 0:l.map((function(e){return e.value})),modelKey:a,fieldNames:n.fieldNames,labelInValue:true,serviceConfig:n.serviceConfig,onChange:function i(t){n.onChange==null||n.onChange(e(t))}}))};var k=function e(n){var t,o;var l=n.value||[];var a=((t=n.fieldNames)==null?void 0:t.value)||"value";var s=((o=n.fieldNames)==null?void 0:o.children)||"children";var u=n.textConfig,c=u.selectQuantityPrompt,m=u.placeholder;return y(p,{fullIndex:0,direction:"horizontal",gap:10,style:{height:"100%",overflow:"hidden"},children:[x("div",{style:{backgroundColor:"#f4f4f4",padding:10,borderRadius:5},children:x(N,{treeProps:n.treeProps,value:l,onChange:n.onChange,fieldNames:n.fieldNames,serviceConfig:r({},n.serviceConfig,{onRequestResultAdapter:function e(t){var r=i(t,{value:a,children:s});n.onChangeDataSource==null||n.onChangeDataSource(t,r);return t}})})}),y("div",{style:{width:"40%",overflow:"hidden",height:"100%",display:"flex",flexDirection:"column",flexShrink:0},children:[x("div",{style:{fontSize:15,fontWeight:"500",marginBottom:10},children:l.length>0?x(d,{children:c?c.replace("{total}",""+((l==null?void 0:l.length)||"")):"已选择"+(l==null?void 0:l.length)}):m||"请选择"}),x("div",{style:{overflow:"auto",flex:1},children:x(w,{checkedIdList:l,fieldNames:n.fieldNames,onDeleteItem:n.onDeleteItem})})]})]})};var R=function e(n){var t,o;var l=n.textConfig,a=l.selectQuantityPrompt,s=l.placeholder;var u=((t=n.fieldNames)==null?void 0:t.value)||"value";var c=((o=n.fieldNames)==null?void 0:o.children)||"children";var m=n.value||[];return y("div",{style:{height:"100%",overflow:"auto"},children:[x("div",{style:{backgroundColor:"#f4f4f4",padding:10,borderRadius:5},children:x(N,{treeProps:n.treeProps,value:m,onChange:n.onChange,fieldNames:n.fieldNames,serviceConfig:r({},n.serviceConfig,{onRequestResultAdapter:function e(t){var r=i(t,{value:u,children:c});n.onChangeDataSource==null||n.onChangeDataSource(t,r);return t}})})}),y("div",{style:{marginTop:20},children:[x("div",{style:{fontSize:15,fontWeight:"500",marginBottom:10},children:m.length>0?x(d,{children:a?a.replace("{total}",""+((m==null?void 0:m.length)||"")):"已选择"+(m==null?void 0:m.length)}):s}),x(w,{checkedIdList:m,fieldNames:n.fieldNames,onDeleteItem:n.onDeleteItem})]})]})};var D=function i(t){var l,a;var c=t.isMultiple;var m=((l=t.fieldNames)==null?void 0:l.label)||"label";var p=((a=t.fieldNames)==null?void 0:a.value)||"value";var f=s({});var g=v.useResponsivePoint()||"";var C=g==="xs"?"vertical":"horizontal";var j=n(c)?true:c;var y=u(),b=y[0],w=y[1];var N=function e(i){var n=b==null?void 0:b.filter((function(e){return e.value!==i}));w(n);t.onChange==null||t.onChange(n)};v.useEffectCustom((function(){var i=e(t.value).map((function(e){var i;var n=h(e)?e:{label:e,value:e};var t=n.value;return{value:t,label:((i=f.current[t])==null?void 0:i[m])||""}}));w(i)}),[t.value]);var D=r({},t.treeProps,{checkable:j?true:false});var I=function e(i){w(i);t.onChange==null||t.onChange(i)};var P=o.useCallbackRef((function(e,i){f.current=i;var n=b==null?void 0:b.map((function(e){var n=i[e.value];return n?{label:n[m],value:n[p]}:undefined})).filter(Boolean);w(n);t.onDataSourceChange==null||t.onDataSourceChange(e,i)}));return x(d,{children:C==="vertical"?x(R,{value:b,onDeleteItem:N,fieldNames:t.fieldNames,serviceConfig:t.serviceConfig?t.serviceConfig:{onRequest:t.onRequest},textConfig:t.textConfig,onChange:I,onChangeDataSource:P,treeProps:D}):x(k,{value:b,onDeleteItem:N,fieldNames:t.fieldNames,serviceConfig:t.serviceConfig?t.serviceConfig:{onRequest:t.onRequest},textConfig:t.textConfig,onChange:I,onChangeDataSource:P,treeProps:D})})};var I=function e(i){var n=i.size,t=n===void 0?"large":n;var h=u(false),p=h[0],f=h[1];var g=l(document.querySelector("html"));var C=v.useResponsivePoint()||"";var j=C==="xs"?"vertical":"horizontal";var b=o.useCallbackRef((function(){if(i.disabled)return;f(true)}));var w=i.children.type;var N=u(),k=N[0],R=N[1];var I=s();c((function(){I.current=i.value||[];R(i.value)}),[i.value]);var P=m((function(){if(!(g!=null&&g.height)||!C)return undefined;var e=["xs","sm"].includes(C);var n={};if(t=="large"){n={height:(g==null?void 0:g.height)*.65,width:800}}else if(t=="small"){n={height:(g==null?void 0:g.height)*.45,width:450}}else if(t=="middle"){n={height:(g==null?void 0:g.height)*.55,width:600}}return{height:i.modalBodyHeight||n.height,width:e?"90%":i.modalWidth||n.width}}),[g==null?void 0:g.height,C,t,i.modalBodyHeight,i.modalWidth]);var S=function e(){i.onChange==null||i.onChange(k);f(false)};var z=function e(){f(false);R(I.current)};return y(d,{children:[x(w,r({},i.children.props,{onClick:b})),x(a,{className:i.modalClassName,title:i.textConfig.title||"选择",open:p,onCancel:z,forceRender:i.forceRender,centered:true,width:P==null?void 0:P.width,onOk:S,styles:j==="horizontal"?{body:{height:P==null?void 0:P.height,maxHeight:"calc(100vh - 200px)",padding:"0px 20px 0 20px"},content:{padding:0},header:{padding:"20px 24px 0 20px"},footer:{padding:"0 24px 20px 24px"}}:{body:{height:P==null?void 0:P.height}},children:x(D,r({},i,{value:k,onChange:function e(i){R(i)}}))})]})};var P=t(I,{Content:D});export{P as TreeModal};
20
+ import{toArray as e,treeToTiledMap as i,isUndefinedOrNull as n,attachPropertiesToComponent as t}from"@flatbiz/utils";import{_ as r}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{hooks as o}from"@wove/react/cjs/hooks";import{useSize as l}from"ahooks";import{Modal as a}from"antd";import{Fragment as d,useRef as s,useState as u,useEffect as c,useMemo as m}from"react";import{fbaHooks as v}from"../fba-hooks/index.js";import{isObject as h}from"@dimjs/lang/cjs/is-object";import{FlexLayout as p}from"../flex-layout/index.js";import f from"@ant-design/icons/es/icons/CloseOutlined";import{CssNodeHover as g}from"../css-node-hover/index.js";import{IconWrapper as j}from"../icon-wrapper/index.js";import{TextOverflow as C}from"../text-overflow/index.js";import{jsx as x,jsxs as y}from"react/jsx-runtime";import{TreeWrapper as b}from"../tree-wrapper/index.js";import"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/uuid";import"@dimjs/utils/cjs/class-names";import"@dimjs/lang/cjs/is-undefined";import"@dimjs/lang/cjs/is-string";import"@dimjs/model-react";import"@dimjs/utils/cjs/array";import"@ant-design/icons/es/icons/CaretDownFilled";import"@ant-design/icons/es/icons/MoreOutlined";import"@dimjs/utils/cjs/extend";import"@dimjs/utils/cjs/get";import"@dimjs/model";import"../button-operate/index.js";import"@dimjs/lang/cjs/is-plain-object";import"@dimjs/lang/cjs/is-promise";import"../button-wrapper/index.js";import"@ant-design/icons/es/icons/LoadingOutlined";import"../index-83bede1b.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"../fba-utils/index.js";import"../dropdown-menu-wrapper/index.js";import"@ant-design/icons/es/icons/ExclamationCircleFilled";import"../dialog-confirm/index.js";import"../dialog-modal/index.js";import"react-dom/client";import"@wove/react/cjs/create-ctx";import"../input-search-wrapper/index.js";import"../request-status/index.js";import"@dimjs/utils/cjs/tree";import"dequal";var w=function e(i){var n=i.checkedIdList;return x(d,{children:n==null?void 0:n.map((function(e){var n=e.value;var t=e.label||n;return x(g,{style:{paddingLeft:5,paddingRight:0},children:y(p,{fullIndex:1,direction:"horizontal",style:{alignItems:"center",fontSize:14,marginBottom:0,color:"#505050"},children:[x(C,{text:t}),x("div",{style:{position:"relative",zIndex:9,color:"#a1a1a1"},children:x(j,{text:x(f,{}),onClick:i.onDeleteItem.bind(null,n),size:"small",style:{paddingRight:5,margin:"2px"}})})]})},n)}))})};var N=function i(n){var t,l;var a=o.useId(undefined,"tree-select-modal");return x(b,r({initRootExpand:true,showSearch:true,searchPlaceholder:"搜索",checkable:true,checkableType:"2"},n.treeProps,{showIcon:(t=n.treeProps)!=null&&t.icon?true:false,value:(l=n.value)==null?void 0:l.map((function(e){return e.value})),modelKey:a,fieldNames:n.fieldNames,labelInValue:true,serviceConfig:n.serviceConfig,onChange:function i(t){n.onChange==null||n.onChange(e(t))}}))};var k=function e(n){var t,o;var l=n.value||[];var a=((t=n.fieldNames)==null?void 0:t.value)||"value";var s=((o=n.fieldNames)==null?void 0:o.children)||"children";var u=n.textConfig,c=u.selectQuantityPrompt,m=u.placeholder;return y(p,{fullIndex:0,direction:"horizontal",gap:10,style:{height:"100%",overflow:"hidden"},children:[x("div",{style:{backgroundColor:"#f4f4f4",padding:10,borderRadius:5},children:x(N,{treeProps:n.treeProps,value:l,onChange:n.onChange,fieldNames:n.fieldNames,serviceConfig:r({},n.serviceConfig,{onRequestResultAdapter:function e(t){var r=i(t,{value:a,children:s});n.onChangeDataSource==null||n.onChangeDataSource(t,r);return t}})})}),y("div",{style:{width:"40%",overflow:"hidden",height:"100%",display:"flex",flexDirection:"column",flexShrink:0},children:[x("div",{style:{fontSize:15,fontWeight:"500",marginBottom:10},children:l.length>0?x(d,{children:c?c.replace("{total}",""+((l==null?void 0:l.length)||"")):"已选择"+(l==null?void 0:l.length)}):m||"请选择"}),x("div",{style:{overflow:"auto",flex:1},children:x(w,{checkedIdList:l,fieldNames:n.fieldNames,onDeleteItem:n.onDeleteItem})})]})]})};var R=function e(n){var t,o;var l=n.textConfig,a=l.selectQuantityPrompt,s=l.placeholder;var u=((t=n.fieldNames)==null?void 0:t.value)||"value";var c=((o=n.fieldNames)==null?void 0:o.children)||"children";var m=n.value||[];return y("div",{style:{height:"100%",overflow:"auto"},children:[x("div",{style:{backgroundColor:"#f4f4f4",padding:10,borderRadius:5},children:x(N,{treeProps:n.treeProps,value:m,onChange:n.onChange,fieldNames:n.fieldNames,serviceConfig:r({},n.serviceConfig,{onRequestResultAdapter:function e(t){var r=i(t,{value:u,children:c});n.onChangeDataSource==null||n.onChangeDataSource(t,r);return t}})})}),y("div",{style:{marginTop:20},children:[x("div",{style:{fontSize:15,fontWeight:"500",marginBottom:10},children:m.length>0?x(d,{children:a?a.replace("{total}",""+((m==null?void 0:m.length)||"")):"已选择"+(m==null?void 0:m.length)}):s}),x(w,{checkedIdList:m,fieldNames:n.fieldNames,onDeleteItem:n.onDeleteItem})]})]})};var D=function i(t){var l,a;var c=t.isMultiple;var m=((l=t.fieldNames)==null?void 0:l.label)||"label";var p=((a=t.fieldNames)==null?void 0:a.value)||"value";var f=s({});var g=v.useResponsivePoint()||"";var j=g==="xs"?"vertical":"horizontal";var C=n(c)?true:c;var y=u(),b=y[0],w=y[1];var N=function e(i){var n=b==null?void 0:b.filter((function(e){return e.value!==i}));w(n);t.onChange==null||t.onChange(n)};v.useEffectCustom((function(){var i=e(t.value).map((function(e){var i;var n=h(e)?e:{label:e,value:e};var t=n.value;return{value:t,label:((i=f.current[t])==null?void 0:i[m])||""}}));w(i)}),[t.value]);var D=r({},t.treeProps,{checkable:C?true:false});var I=function e(i){w(i);t.onChange==null||t.onChange(i)};var P=o.useCallbackRef((function(e,i){f.current=i;var n=b==null?void 0:b.map((function(e){var n=i[e.value];return n?{label:n[m],value:n[p]}:undefined})).filter(Boolean);w(n);t.onDataSourceChange==null||t.onDataSourceChange(e,i)}));return x(d,{children:j==="vertical"?x(R,{value:b,onDeleteItem:N,fieldNames:t.fieldNames,serviceConfig:t.serviceConfig?t.serviceConfig:{onRequest:t.onRequest},textConfig:t.textConfig,onChange:I,onChangeDataSource:P,treeProps:D}):x(k,{value:b,onDeleteItem:N,fieldNames:t.fieldNames,serviceConfig:t.serviceConfig?t.serviceConfig:{onRequest:t.onRequest},textConfig:t.textConfig,onChange:I,onChangeDataSource:P,treeProps:D})})};var I=function e(i){var n=i.size,t=n===void 0?"large":n;var h=u(false),p=h[0],f=h[1];var g=l(document.querySelector("html"));var j=v.useResponsivePoint()||"";var C=j==="xs"?"vertical":"horizontal";var b=o.useCallbackRef((function(){if(i.disabled)return;f(true)}));var w=i.children.type;var N=u(),k=N[0],R=N[1];var I=s();c((function(){I.current=i.value||[];R(i.value)}),[i.value]);var P=m((function(){if(!(g!=null&&g.height)||!j)return undefined;var e=["xs","sm"].includes(j);var n={};if(t=="large"){n={height:(g==null?void 0:g.height)*.65,width:800}}else if(t=="small"){n={height:(g==null?void 0:g.height)*.45,width:450}}else if(t=="middle"){n={height:(g==null?void 0:g.height)*.55,width:600}}return{height:i.modalBodyHeight||n.height,width:e?"90%":i.modalWidth||n.width}}),[g==null?void 0:g.height,j,t,i.modalBodyHeight,i.modalWidth]);var S=function e(){i.onChange==null||i.onChange(k);f(false)};var z=function e(){f(false);R(I.current)};return y(d,{children:[x(w,r({},i.children.props,{onClick:b})),x(a,{className:i.modalClassName,title:i.textConfig.title||"选择",open:p,onCancel:z,forceRender:i.forceRender,centered:true,width:P==null?void 0:P.width,onOk:S,styles:C==="horizontal"?{body:{height:P==null?void 0:P.height,maxHeight:"calc(100vh - 200px)",padding:"0px 20px 0 20px"},content:{padding:0},header:{padding:"20px 24px 0 20px"},footer:{padding:"0 24px 20px 24px"}}:{body:{height:P==null?void 0:P.height}},children:x(D,r({},i,{value:k,onChange:function e(i){R(i)}}))})]})};var P=t(I,{Content:D});export{P as TreeModal};
21
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/tree-modal/select-item.tsx","@flatbiz/antd/src/tree-modal/tree.tsx","@flatbiz/antd/src/tree-modal/horizontal.tsx","@flatbiz/antd/src/tree-modal/vertical.tsx","@flatbiz/antd/src/tree-modal/select-modal-content.tsx","@flatbiz/antd/src/tree-modal/select-modal.tsx","@flatbiz/antd/src/tree-modal/index.ts"],"sourcesContent":["import { CloseOutlined } from '@ant-design/icons';\nimport { Fragment } from 'react';\n\nimport type { TAny, TPlainObject } from '@flatbiz/utils';\nimport { CssNodeHover } from '../css-node-hover';\nimport { FlexLayout } from '../flex-layout';\nimport { IconWrapper } from '../icon-wrapper';\nimport { TextOverflow } from '../text-overflow';\nimport type { TreeModalProps } from './types';\n\nexport const SelectItemList = (props: {\n checkedIdList: TPlainObject[];\n fieldNames: TreeModalProps['fieldNames'];\n onDeleteItem: (value: TAny) => void;\n}) => {\n const checkedIdList = props.checkedIdList;\n return (\n <Fragment>\n {checkedIdList?.map((item) => {\n const value = item.value;\n const label = item.label || value;\n\n return (\n <CssNodeHover style={{ paddingLeft: 5, paddingRight: 0 }} key={value}>\n <FlexLayout\n fullIndex={1}\n direction=\"horizontal\"\n style={{\n alignItems: 'center',\n fontSize: 14,\n marginBottom: 0,\n color: '#505050',\n }}\n >\n <TextOverflow text={label} />\n <div\n style={{\n position: 'relative',\n zIndex: 9,\n color: '#a1a1a1',\n }}\n >\n <IconWrapper\n text={<CloseOutlined />}\n onClick={props.onDeleteItem.bind(null, value)}\n size=\"small\"\n style={{ paddingRight: 5, margin: '2px' }}\n />\n </div>\n </FlexLayout>\n </CssNodeHover>\n );\n })}\n </Fragment>\n );\n};\n","import type { TAny } from '@flatbiz/utils';\nimport { toArray } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport type { TreeServiceConfig, TreeWrapperProps } from '../tree-wrapper';\nimport { TreeWrapper } from '../tree-wrapper';\nimport type { TreeModalProps, TreeModelSelectItem } from './types';\n\nexport const SelectContent = (props: {\n value?: TAny;\n onChange?: (value?: TreeModelSelectItem[]) => void;\n fieldNames?: TreeWrapperProps['fieldNames'];\n serviceConfig?: TreeServiceConfig;\n treeProps?: TreeModalProps['treeProps'];\n}) => {\n const modelKey = hooks.useId(undefined, 'tree-select-modal');\n return (\n <TreeWrapper\n initRootExpand\n showSearch\n searchPlaceholder=\"搜索\"\n checkable={true}\n checkableType=\"2\"\n {...props.treeProps}\n showIcon={props.treeProps?.icon ? true : false}\n value={props.value?.map((item) => item.value)}\n modelKey={modelKey}\n fieldNames={props.fieldNames}\n labelInValue={true}\n serviceConfig={props.serviceConfig}\n onChange={(values) => {\n props.onChange?.(toArray(values));\n }}\n />\n );\n};\n","import type { TAny, TPlainObject } from '@flatbiz/utils';\nimport { treeToTiledMap } from '@flatbiz/utils';\nimport { Fragment } from 'react';\nimport { FlexLayout } from '../flex-layout';\nimport { SelectItemList } from './select-item';\nimport { SelectContent } from './tree';\nimport type { TreeModalProps, TreeModelSelectItem } from './types';\n\nexport const HorizontalLayout = (props: {\n onChangeDataSource?: (treeDataList: TPlainObject[], mapData: TPlainObject) => void;\n onDeleteItem: (value: TAny) => void;\n fieldNames?: TreeModalProps['fieldNames'];\n serviceConfig?: {\n params?: TPlainObject;\n requiredParamsKeys?: string[];\n onRequest?: (params?: TAny) => TAny;\n };\n textConfig: TreeModalProps['textConfig'];\n onChange?: (value?: TreeModelSelectItem[]) => void;\n value?: TreeModelSelectItem[];\n treeProps?: TreeModalProps['treeProps'];\n}) => {\n const chenkedIdList = props.value || [];\n\n const valueKey = props.fieldNames?.value || 'value';\n const childrenKey = props.fieldNames?.children || 'children';\n\n const { selectQuantityPrompt, placeholder } = props.textConfig;\n\n return (\n <FlexLayout fullIndex={0} direction=\"horizontal\" gap={10} style={{ height: '100%', overflow: 'hidden' }}>\n <div style={{ backgroundColor: '#f4f4f4', padding: 10, borderRadius: 5 }}>\n <SelectContent\n treeProps={props.treeProps}\n value={chenkedIdList}\n onChange={props.onChange}\n fieldNames={props.fieldNames}\n serviceConfig={{\n ...props.serviceConfig,\n onRequestResultAdapter: (respData) => {\n const listMap: TPlainObject = treeToTiledMap(respData, {\n value: valueKey,\n children: childrenKey,\n });\n props.onChangeDataSource?.(respData, listMap);\n return respData;\n },\n }}\n />\n </div>\n\n <div\n style={{\n width: '40%',\n overflow: 'hidden',\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n flexShrink: 0,\n }}\n >\n <div style={{ fontSize: 15, fontWeight: '500', marginBottom: 10 }}>\n {chenkedIdList.length > 0 ? (\n <Fragment>\n {selectQuantityPrompt\n ? selectQuantityPrompt.replace('{total}', `${chenkedIdList?.length || ''}`)\n : `已选择${chenkedIdList?.length}`}\n </Fragment>\n ) : (\n placeholder || '请选择'\n )}\n </div>\n <div style={{ overflow: 'auto', flex: 1 }}>\n <SelectItemList\n checkedIdList={chenkedIdList}\n fieldNames={props.fieldNames}\n onDeleteItem={props.onDeleteItem}\n />\n </div>\n </div>\n </FlexLayout>\n );\n};\n","import type { TAny, TPlainObject } from '@flatbiz/utils';\nimport { treeToTiledMap } from '@flatbiz/utils';\nimport { Fragment } from 'react';\nimport { SelectItemList } from './select-item';\nimport { SelectContent } from './tree';\nimport type { TreeModalProps, TreeModelSelectItem } from './types';\n\nexport const VerticalLayout = (props: {\n onChangeDataSource?: (treeDataList: TPlainObject[], mapData: TPlainObject) => void;\n onDeleteItem: (value: TAny) => void;\n fieldNames?: TreeModalProps['fieldNames'];\n serviceConfig?: {\n params?: TPlainObject;\n requiredParamsKeys?: string[];\n onRequest?: (params?: TAny) => TAny;\n };\n textConfig: TreeModalProps['textConfig'];\n onChange?: (value?: TreeModelSelectItem[]) => void;\n value?: TreeModelSelectItem[];\n treeProps?: TreeModalProps['treeProps'];\n}) => {\n const { selectQuantityPrompt, placeholder } = props.textConfig;\n const valueKey = props.fieldNames?.value || 'value';\n const childrenKey = props.fieldNames?.children || 'children';\n\n const chenkedIdList = props.value || [];\n\n return (\n <div style={{ height: '100%', overflow: 'auto' }}>\n <div style={{ backgroundColor: '#f4f4f4', padding: 10, borderRadius: 5 }}>\n <SelectContent\n treeProps={props.treeProps}\n value={chenkedIdList}\n onChange={props.onChange}\n fieldNames={props.fieldNames}\n serviceConfig={{\n ...props.serviceConfig,\n onRequestResultAdapter: (respData) => {\n const listMap: TPlainObject = treeToTiledMap(respData, {\n value: valueKey,\n children: childrenKey,\n });\n props.onChangeDataSource?.(respData, listMap);\n return respData;\n },\n }}\n />\n </div>\n\n <div style={{ marginTop: 20 }}>\n <div style={{ fontSize: 15, fontWeight: '500', marginBottom: 10 }}>\n {chenkedIdList.length > 0 ? (\n <Fragment>\n {selectQuantityPrompt\n ? selectQuantityPrompt.replace('{total}', `${chenkedIdList?.length || ''}`)\n : `已选择${chenkedIdList?.length}`}\n </Fragment>\n ) : (\n placeholder\n )}\n </div>\n <SelectItemList\n checkedIdList={chenkedIdList}\n fieldNames={props.fieldNames}\n onDeleteItem={props.onDeleteItem}\n />\n </div>\n </div>\n );\n};\n","import { isObject } from '@dimjs/lang';\nimport { isUndefinedOrNull, toArray, type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Fragment, useRef, useState } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { HorizontalLayout } from './horizontal';\nimport type { TreeModalContentProps, TreeModelSelectItem } from './types';\nimport { VerticalLayout } from './vertical';\n\n/**\n * 树节点数据选择,一般用于选择员工等\n * ```\n * 1. 可通过 treeProps.checkableType 配置多选节点模式(包括返回所有节点、只返回叶子节点、叶子节点&父节点全选只返回父节点),默认只返回叶子节点\n * 2. demo: https://fex.qa.tcshuke.com/docs/admin/main/selector/tree\n * ```\n */\nexport const TreeModalContent = (props: TreeModalContentProps) => {\n const { isMultiple } = props;\n const labelKey = props.fieldNames?.label || 'label';\n const valueKey = props.fieldNames?.value || 'value';\n const dataSourceMapRef = useRef<TPlainObject>({});\n\n const screenType = fbaHooks.useResponsivePoint() || '';\n\n const direction = screenType === 'xs' ? 'vertical' : 'horizontal';\n const isMultipleFt = isUndefinedOrNull(isMultiple) ? true : isMultiple;\n\n const [values, setValues] = useState<TreeModelSelectItem[]>();\n\n const onDeleteItem = (value) => {\n const targetList = values?.filter((item) => item.value !== value);\n setValues(targetList);\n props.onChange?.(targetList);\n };\n\n fbaHooks.useEffectCustom(() => {\n const values = toArray<TAny>(props.value).map((item) => {\n const target = isObject(item) ? item : { label: item, value: item };\n const value = target.value;\n return {\n value: value,\n label: dataSourceMapRef.current[value]?.[labelKey] || '',\n };\n });\n setValues(values);\n }, [props.value]);\n\n const treePropsFt = {\n ...props.treeProps,\n checkable: isMultipleFt ? true : false,\n };\n\n const onChange = (values?: TreeModelSelectItem[]) => {\n setValues(values);\n props.onChange?.(values);\n };\n\n const onChangeDataSource = hooks.useCallbackRef((treeDataList: TPlainObject[], mapData: TPlainObject) => {\n dataSourceMapRef.current = mapData;\n const result = values\n ?.map((item) => {\n const target = mapData[item.value];\n return target ? { label: target[labelKey], value: target[valueKey] } : undefined;\n })\n .filter(Boolean) as TreeModelSelectItem[];\n setValues(result);\n props.onDataSourceChange?.(treeDataList, mapData);\n });\n return (\n <Fragment>\n {direction === 'vertical' ? (\n <VerticalLayout\n value={values}\n onDeleteItem={onDeleteItem}\n fieldNames={props.fieldNames}\n serviceConfig={\n props.serviceConfig\n ? props.serviceConfig\n : {\n onRequest: props.onRequest,\n }\n }\n textConfig={props.textConfig}\n onChange={onChange}\n onChangeDataSource={onChangeDataSource}\n treeProps={treePropsFt}\n ></VerticalLayout>\n ) : (\n <HorizontalLayout\n value={values}\n onDeleteItem={onDeleteItem}\n fieldNames={props.fieldNames}\n serviceConfig={\n props.serviceConfig\n ? props.serviceConfig\n : {\n onRequest: props.onRequest,\n }\n }\n textConfig={props.textConfig}\n onChange={onChange}\n onChangeDataSource={onChangeDataSource}\n treeProps={treePropsFt}\n />\n )}\n </Fragment>\n );\n};\n","import type { TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { useSize } from 'ahooks';\nimport { Modal } from 'antd';\nimport { Fragment, useEffect, useMemo, useRef, useState } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { TreeModalContent } from './select-modal-content';\nimport type { TreeModalProps, TreeModelSelectItem, TreeModelSelectValue } from './types';\n\n/**\n * 树节点数据选择,一般用于选择员工等\n * ```\n * 1. 可通过 treeProps.checkableType 配置多选节点模式(包括返回所有节点、只返回叶子节点、叶子节点&父节点全选只返回父节点),默认只返回叶子节点\n * 2. demo: https://fex.qa.tcshuke.com/docs/admin/main/selector/tree\n * ```\n */\nexport const TreeModal = (props: TreeModalProps) => {\n const { size = 'large' } = props;\n const [isOpen, setIsOpen] = useState(false);\n\n const htmlSize = useSize(document.querySelector('html'));\n const screenType = fbaHooks.useResponsivePoint() || '';\n\n const direction = screenType === 'xs' ? 'vertical' : 'horizontal';\n\n const handleOnClick = hooks.useCallbackRef(() => {\n if (props.disabled) return;\n setIsOpen(true);\n });\n\n const Action = props.children.type;\n\n const [values, setValues] = useState<TreeModelSelectValue>();\n const originalValuesRef = useRef<TreeModelSelectValue>();\n\n useEffect(() => {\n originalValuesRef.current = props.value || [];\n setValues(props.value);\n }, [props.value]);\n\n const customSize = useMemo(() => {\n if (!htmlSize?.height || !screenType) return undefined;\n const isXsSm = ['xs', 'sm'].includes(screenType);\n let sizeCalculate: TPlainObject = {};\n if (size == 'large') {\n sizeCalculate = {\n height: htmlSize?.height * 0.65,\n width: 800,\n };\n } else if (size == 'small') {\n sizeCalculate = {\n height: htmlSize?.height * 0.45,\n width: 450,\n };\n } else if (size == 'middle') {\n sizeCalculate = {\n height: htmlSize?.height * 0.55,\n width: 600,\n };\n }\n\n return {\n height: props.modalBodyHeight || sizeCalculate.height,\n width: isXsSm ? '90%' : props.modalWidth || sizeCalculate.width,\n };\n }, [htmlSize?.height, screenType, size, props.modalBodyHeight, props.modalWidth]);\n\n const onSubmit = () => {\n props.onChange?.(values as TreeModelSelectItem[]);\n setIsOpen(false);\n };\n\n const onCancel = () => {\n setIsOpen(false);\n setValues(originalValuesRef.current);\n };\n return (\n <Fragment>\n <Action {...props.children.props} onClick={handleOnClick} />\n <Modal\n className={props.modalClassName}\n title={props.textConfig.title || '选择'}\n open={isOpen}\n onCancel={onCancel}\n forceRender={props.forceRender}\n centered\n width={customSize?.width}\n onOk={onSubmit}\n styles={\n direction === 'horizontal'\n ? {\n body: {\n height: customSize?.height,\n maxHeight: 'calc(100vh - 200px)',\n padding: '0px 20px 0 20px',\n },\n content: {\n padding: 0,\n },\n header: {\n padding: '20px 24px 0 20px',\n },\n footer: {\n padding: '0 24px 20px 24px',\n },\n }\n : {\n body: {\n height: customSize?.height,\n },\n }\n }\n >\n <TreeModalContent\n {...props}\n value={values}\n onChange={(values) => {\n setValues(values);\n }}\n />\n </Modal>\n </Fragment>\n );\n};\n","import { attachPropertiesToComponent } from '@flatbiz/utils';\nimport { TreeModal as TreeModalInner } from './select-modal';\nimport { TreeModalContent } from './select-modal-content';\n\nexport const TreeModal = attachPropertiesToComponent(TreeModalInner, {\n Content: TreeModalContent,\n});\n"],"names":["SelectItemList","props","checkedIdList","_jsx","Fragment","children","map","item","value","label","CssNodeHover","style","paddingLeft","paddingRight","_jsxs","FlexLayout","fullIndex","direction","alignItems","fontSize","marginBottom","color","TextOverflow","text","position","zIndex","IconWrapper","_CloseOutlined","onClick","onDeleteItem","bind","size","margin","SelectContent","_props$treeProps","_props$value","modelKey","_hooks","useId","undefined","TreeWrapper","_extends","initRootExpand","showSearch","searchPlaceholder","checkable","checkableType","treeProps","showIcon","icon","fieldNames","labelInValue","serviceConfig","onChange","values","toArray","HorizontalLayout","_props$fieldNames","_props$fieldNames2","chenkedIdList","valueKey","childrenKey","_props$textConfig","textConfig","selectQuantityPrompt","placeholder","gap","height","overflow","backgroundColor","padding","borderRadius","onRequestResultAdapter","respData","listMap","treeToTiledMap","onChangeDataSource","width","display","flexDirection","flexShrink","fontWeight","length","replace","flex","VerticalLayout","marginTop","TreeModalContent","isMultiple","labelKey","dataSourceMapRef","useRef","screenType","fbaHooks","useResponsivePoint","isMultipleFt","isUndefinedOrNull","_useState","useState","setValues","targetList","filter","useEffectCustom","_dataSourceMapRef$cur","target","_isObject","current","treePropsFt","useCallbackRef","treeDataList","mapData","result","Boolean","onDataSourceChange","onRequest","TreeModal","_props$size","isOpen","setIsOpen","htmlSize","useSize","document","querySelector","handleOnClick","disabled","Action","type","_useState2","originalValuesRef","useEffect","customSize","useMemo","isXsSm","includes","sizeCalculate","modalBodyHeight","modalWidth","onSubmit","onCancel","Modal","className","modalClassName","title","open","forceRender","centered","onOk","styles","body","maxHeight","content","header","footer","attachPropertiesToComponent","TreeModalInner","Content"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/tree-modal/select-item.tsx","@flatbiz/antd/src/tree-modal/tree.tsx","@flatbiz/antd/src/tree-modal/horizontal.tsx","@flatbiz/antd/src/tree-modal/vertical.tsx","@flatbiz/antd/src/tree-modal/select-modal-content.tsx","@flatbiz/antd/src/tree-modal/select-modal.tsx","@flatbiz/antd/src/tree-modal/index.ts"],"sourcesContent":["import { CloseOutlined } from '@ant-design/icons';\nimport { Fragment } from 'react';\n\nimport type { TAny, TPlainObject } from '@flatbiz/utils';\nimport { CssNodeHover } from '../css-node-hover';\nimport { FlexLayout } from '../flex-layout';\nimport { IconWrapper } from '../icon-wrapper';\nimport { TextOverflow } from '../text-overflow';\nimport type { TreeModalProps } from './types';\n\nexport const SelectItemList = (props: {\n checkedIdList: TPlainObject[];\n fieldNames: TreeModalProps['fieldNames'];\n onDeleteItem: (value: TAny) => void;\n}) => {\n const checkedIdList = props.checkedIdList;\n return (\n <Fragment>\n {checkedIdList?.map((item) => {\n const value = item.value;\n const label = item.label || value;\n\n return (\n <CssNodeHover style={{ paddingLeft: 5, paddingRight: 0 }} key={value}>\n <FlexLayout\n fullIndex={1}\n direction=\"horizontal\"\n style={{\n alignItems: 'center',\n fontSize: 14,\n marginBottom: 0,\n color: '#505050',\n }}\n >\n <TextOverflow text={label} />\n <div\n style={{\n position: 'relative',\n zIndex: 9,\n color: '#a1a1a1',\n }}\n >\n <IconWrapper\n text={<CloseOutlined />}\n onClick={props.onDeleteItem.bind(null, value)}\n size=\"small\"\n style={{ paddingRight: 5, margin: '2px' }}\n />\n </div>\n </FlexLayout>\n </CssNodeHover>\n );\n })}\n </Fragment>\n );\n};\n","import type { TAny } from '@flatbiz/utils';\nimport { toArray } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport type { TreeServiceConfig, TreeWrapperProps } from '../tree-wrapper';\nimport { TreeWrapper } from '../tree-wrapper';\nimport type { TreeModalProps, TreeModelSelectItem } from './types';\n\nexport const SelectContent = (props: {\n value?: TAny;\n onChange?: (value?: TreeModelSelectItem[]) => void;\n fieldNames?: TreeWrapperProps['fieldNames'];\n serviceConfig?: TreeServiceConfig;\n treeProps?: TreeModalProps['treeProps'];\n}) => {\n const modelKey = hooks.useId(undefined, 'tree-select-modal');\n return (\n <TreeWrapper\n initRootExpand\n showSearch\n searchPlaceholder=\"搜索\"\n checkable={true}\n checkableType=\"2\"\n {...props.treeProps}\n showIcon={props.treeProps?.icon ? true : false}\n value={props.value?.map((item) => item.value)}\n modelKey={modelKey}\n fieldNames={props.fieldNames}\n labelInValue={true}\n serviceConfig={props.serviceConfig}\n onChange={(values) => {\n props.onChange?.(toArray(values));\n }}\n />\n );\n};\n","import type { TAny, TPlainObject } from '@flatbiz/utils';\nimport { treeToTiledMap } from '@flatbiz/utils';\nimport { Fragment } from 'react';\nimport { FlexLayout } from '../flex-layout';\nimport { SelectItemList } from './select-item';\nimport { SelectContent } from './tree';\nimport type { TreeModalProps, TreeModelSelectItem } from './types';\n\nexport const HorizontalLayout = (props: {\n onChangeDataSource?: (treeDataList: TPlainObject[], mapData: TPlainObject) => void;\n onDeleteItem: (value: TAny) => void;\n fieldNames?: TreeModalProps['fieldNames'];\n serviceConfig?: {\n params?: TPlainObject;\n requiredParamsKeys?: string[];\n onRequest?: (params?: TAny) => TAny;\n };\n textConfig: TreeModalProps['textConfig'];\n onChange?: (value?: TreeModelSelectItem[]) => void;\n value?: TreeModelSelectItem[];\n treeProps?: TreeModalProps['treeProps'];\n}) => {\n const chenkedIdList = props.value || [];\n\n const valueKey = props.fieldNames?.value || 'value';\n const childrenKey = props.fieldNames?.children || 'children';\n\n const { selectQuantityPrompt, placeholder } = props.textConfig;\n\n return (\n <FlexLayout fullIndex={0} direction=\"horizontal\" gap={10} style={{ height: '100%', overflow: 'hidden' }}>\n <div style={{ backgroundColor: '#f4f4f4', padding: 10, borderRadius: 5 }}>\n <SelectContent\n treeProps={props.treeProps}\n value={chenkedIdList}\n onChange={props.onChange}\n fieldNames={props.fieldNames}\n serviceConfig={{\n ...props.serviceConfig,\n onRequestResultAdapter: (respData) => {\n const listMap: TPlainObject = treeToTiledMap(respData, {\n value: valueKey,\n children: childrenKey,\n });\n props.onChangeDataSource?.(respData, listMap);\n return respData;\n },\n }}\n />\n </div>\n\n <div\n style={{\n width: '40%',\n overflow: 'hidden',\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n flexShrink: 0,\n }}\n >\n <div style={{ fontSize: 15, fontWeight: '500', marginBottom: 10 }}>\n {chenkedIdList.length > 0 ? (\n <Fragment>\n {selectQuantityPrompt\n ? selectQuantityPrompt.replace('{total}', `${chenkedIdList?.length || ''}`)\n : `已选择${chenkedIdList?.length}`}\n </Fragment>\n ) : (\n placeholder || '请选择'\n )}\n </div>\n <div style={{ overflow: 'auto', flex: 1 }}>\n <SelectItemList\n checkedIdList={chenkedIdList}\n fieldNames={props.fieldNames}\n onDeleteItem={props.onDeleteItem}\n />\n </div>\n </div>\n </FlexLayout>\n );\n};\n","import type { TAny, TPlainObject } from '@flatbiz/utils';\nimport { treeToTiledMap } from '@flatbiz/utils';\nimport { Fragment } from 'react';\nimport { SelectItemList } from './select-item';\nimport { SelectContent } from './tree';\nimport type { TreeModalProps, TreeModelSelectItem } from './types';\n\nexport const VerticalLayout = (props: {\n onChangeDataSource?: (treeDataList: TPlainObject[], mapData: TPlainObject) => void;\n onDeleteItem: (value: TAny) => void;\n fieldNames?: TreeModalProps['fieldNames'];\n serviceConfig?: {\n params?: TPlainObject;\n requiredParamsKeys?: string[];\n onRequest?: (params?: TAny) => TAny;\n };\n textConfig: TreeModalProps['textConfig'];\n onChange?: (value?: TreeModelSelectItem[]) => void;\n value?: TreeModelSelectItem[];\n treeProps?: TreeModalProps['treeProps'];\n}) => {\n const { selectQuantityPrompt, placeholder } = props.textConfig;\n const valueKey = props.fieldNames?.value || 'value';\n const childrenKey = props.fieldNames?.children || 'children';\n\n const chenkedIdList = props.value || [];\n\n return (\n <div style={{ height: '100%', overflow: 'auto' }}>\n <div style={{ backgroundColor: '#f4f4f4', padding: 10, borderRadius: 5 }}>\n <SelectContent\n treeProps={props.treeProps}\n value={chenkedIdList}\n onChange={props.onChange}\n fieldNames={props.fieldNames}\n serviceConfig={{\n ...props.serviceConfig,\n onRequestResultAdapter: (respData) => {\n const listMap: TPlainObject = treeToTiledMap(respData, {\n value: valueKey,\n children: childrenKey,\n });\n props.onChangeDataSource?.(respData, listMap);\n return respData;\n },\n }}\n />\n </div>\n\n <div style={{ marginTop: 20 }}>\n <div style={{ fontSize: 15, fontWeight: '500', marginBottom: 10 }}>\n {chenkedIdList.length > 0 ? (\n <Fragment>\n {selectQuantityPrompt\n ? selectQuantityPrompt.replace('{total}', `${chenkedIdList?.length || ''}`)\n : `已选择${chenkedIdList?.length}`}\n </Fragment>\n ) : (\n placeholder\n )}\n </div>\n <SelectItemList\n checkedIdList={chenkedIdList}\n fieldNames={props.fieldNames}\n onDeleteItem={props.onDeleteItem}\n />\n </div>\n </div>\n );\n};\n","import { isObject } from '@dimjs/lang';\nimport { isUndefinedOrNull, toArray, type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Fragment, useRef, useState } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { HorizontalLayout } from './horizontal';\nimport type { TreeModalContentProps, TreeModelSelectItem } from './types';\nimport { VerticalLayout } from './vertical';\n\n/**\n * 树节点数据选择,一般用于选择员工等\n * ```\n * 1. 可通过 treeProps.checkableType 配置多选节点模式(包括返回所有节点、只返回叶子节点、叶子节点&父节点全选只返回父节点),默认只返回叶子节点\n * 2. demo: https://fex.qa.tcshuke.com/docs/admin/main/selector/tree\n * ```\n */\nexport const TreeModalContent = (props: TreeModalContentProps) => {\n const { isMultiple } = props;\n const labelKey = props.fieldNames?.label || 'label';\n const valueKey = props.fieldNames?.value || 'value';\n const dataSourceMapRef = useRef<TPlainObject>({});\n\n const screenType = fbaHooks.useResponsivePoint() || '';\n\n const direction = screenType === 'xs' ? 'vertical' : 'horizontal';\n const isMultipleFt = isUndefinedOrNull(isMultiple) ? true : isMultiple;\n\n const [values, setValues] = useState<TreeModelSelectItem[]>();\n\n const onDeleteItem = (value) => {\n const targetList = values?.filter((item) => item.value !== value);\n setValues(targetList);\n props.onChange?.(targetList);\n };\n\n fbaHooks.useEffectCustom(() => {\n const values = toArray<TAny>(props.value).map((item) => {\n const target = isObject(item) ? item : { label: item, value: item };\n const value = target.value;\n return {\n value: value,\n label: dataSourceMapRef.current[value]?.[labelKey] || '',\n };\n });\n setValues(values);\n }, [props.value]);\n\n const treePropsFt = {\n ...props.treeProps,\n checkable: isMultipleFt ? true : false,\n };\n\n const onChange = (values?: TreeModelSelectItem[]) => {\n setValues(values);\n props.onChange?.(values);\n };\n\n const onChangeDataSource = hooks.useCallbackRef((treeDataList: TPlainObject[], mapData: TPlainObject) => {\n dataSourceMapRef.current = mapData;\n const result = values\n ?.map((item) => {\n const target = mapData[item.value];\n return target ? { label: target[labelKey], value: target[valueKey] } : undefined;\n })\n .filter(Boolean) as TreeModelSelectItem[];\n setValues(result);\n props.onDataSourceChange?.(treeDataList, mapData);\n });\n return (\n <Fragment>\n {direction === 'vertical' ? (\n <VerticalLayout\n value={values}\n onDeleteItem={onDeleteItem}\n fieldNames={props.fieldNames}\n serviceConfig={\n props.serviceConfig\n ? props.serviceConfig\n : {\n onRequest: props.onRequest,\n }\n }\n textConfig={props.textConfig}\n onChange={onChange}\n onChangeDataSource={onChangeDataSource}\n treeProps={treePropsFt}\n ></VerticalLayout>\n ) : (\n <HorizontalLayout\n value={values}\n onDeleteItem={onDeleteItem}\n fieldNames={props.fieldNames}\n serviceConfig={\n props.serviceConfig\n ? props.serviceConfig\n : {\n onRequest: props.onRequest,\n }\n }\n textConfig={props.textConfig}\n onChange={onChange}\n onChangeDataSource={onChangeDataSource}\n treeProps={treePropsFt}\n />\n )}\n </Fragment>\n );\n};\n","import type { TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { useSize } from 'ahooks';\nimport { Modal } from 'antd';\nimport { Fragment, useEffect, useMemo, useRef, useState } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { TreeModalContent } from './select-modal-content';\nimport type { TreeModalProps, TreeModelSelectItem, TreeModelSelectValue } from './types';\n\n/**\n * 树节点数据选择,一般用于选择员工等\n * ```\n * 1. 可通过 treeProps.checkableType 配置多选节点模式(包括返回所有节点、只返回叶子节点、叶子节点&父节点全选只返回父节点),默认只返回叶子节点\n * 2. demo: https://fex.qa.tcshuke.com/docs/admin/main/selector/tree\n * ```\n */\nexport const TreeModal = (props: TreeModalProps) => {\n const { size = 'large' } = props;\n const [isOpen, setIsOpen] = useState(false);\n\n const htmlSize = useSize(document.querySelector('html'));\n const screenType = fbaHooks.useResponsivePoint() || '';\n\n const direction = screenType === 'xs' ? 'vertical' : 'horizontal';\n\n const handleOnClick = hooks.useCallbackRef(() => {\n if (props.disabled) return;\n setIsOpen(true);\n });\n\n const Action = props.children.type;\n\n const [values, setValues] = useState<TreeModelSelectValue>();\n const originalValuesRef = useRef<TreeModelSelectValue>();\n\n useEffect(() => {\n originalValuesRef.current = props.value || [];\n setValues(props.value);\n }, [props.value]);\n\n const customSize = useMemo(() => {\n if (!htmlSize?.height || !screenType) return undefined;\n const isXsSm = ['xs', 'sm'].includes(screenType);\n let sizeCalculate: TPlainObject = {};\n if (size == 'large') {\n sizeCalculate = {\n height: htmlSize?.height * 0.65,\n width: 800,\n };\n } else if (size == 'small') {\n sizeCalculate = {\n height: htmlSize?.height * 0.45,\n width: 450,\n };\n } else if (size == 'middle') {\n sizeCalculate = {\n height: htmlSize?.height * 0.55,\n width: 600,\n };\n }\n\n return {\n height: props.modalBodyHeight || sizeCalculate.height,\n width: isXsSm ? '90%' : props.modalWidth || sizeCalculate.width,\n };\n }, [htmlSize?.height, screenType, size, props.modalBodyHeight, props.modalWidth]);\n\n const onSubmit = () => {\n props.onChange?.(values as TreeModelSelectItem[]);\n setIsOpen(false);\n };\n\n const onCancel = () => {\n setIsOpen(false);\n setValues(originalValuesRef.current);\n };\n return (\n <Fragment>\n <Action {...props.children.props} onClick={handleOnClick} />\n <Modal\n className={props.modalClassName}\n title={props.textConfig.title || '选择'}\n open={isOpen}\n onCancel={onCancel}\n forceRender={props.forceRender}\n centered\n width={customSize?.width}\n onOk={onSubmit}\n styles={\n direction === 'horizontal'\n ? {\n body: {\n height: customSize?.height,\n maxHeight: 'calc(100vh - 200px)',\n padding: '0px 20px 0 20px',\n },\n content: {\n padding: 0,\n },\n header: {\n padding: '20px 24px 0 20px',\n },\n footer: {\n padding: '0 24px 20px 24px',\n },\n }\n : {\n body: {\n height: customSize?.height,\n },\n }\n }\n >\n <TreeModalContent\n {...props}\n value={values}\n onChange={(values) => {\n setValues(values);\n }}\n />\n </Modal>\n </Fragment>\n );\n};\n","import { attachPropertiesToComponent } from '@flatbiz/utils';\nimport { TreeModal as TreeModalInner } from './select-modal';\nimport { TreeModalContent } from './select-modal-content';\n\nexport const TreeModal = attachPropertiesToComponent(TreeModalInner, {\n Content: TreeModalContent,\n});\n"],"names":["SelectItemList","props","checkedIdList","_jsx","Fragment","children","map","item","value","label","CssNodeHover","style","paddingLeft","paddingRight","_jsxs","FlexLayout","fullIndex","direction","alignItems","fontSize","marginBottom","color","TextOverflow","text","position","zIndex","IconWrapper","_CloseOutlined","onClick","onDeleteItem","bind","size","margin","SelectContent","_props$treeProps","_props$value","modelKey","_hooks","useId","undefined","TreeWrapper","_extends","initRootExpand","showSearch","searchPlaceholder","checkable","checkableType","treeProps","showIcon","icon","fieldNames","labelInValue","serviceConfig","onChange","values","toArray","HorizontalLayout","_props$fieldNames","_props$fieldNames2","chenkedIdList","valueKey","childrenKey","_props$textConfig","textConfig","selectQuantityPrompt","placeholder","gap","height","overflow","backgroundColor","padding","borderRadius","onRequestResultAdapter","respData","listMap","treeToTiledMap","onChangeDataSource","width","display","flexDirection","flexShrink","fontWeight","length","replace","flex","VerticalLayout","marginTop","TreeModalContent","isMultiple","labelKey","dataSourceMapRef","useRef","screenType","fbaHooks","useResponsivePoint","isMultipleFt","isUndefinedOrNull","_useState","useState","setValues","targetList","filter","useEffectCustom","_dataSourceMapRef$cur","target","_isObject","current","treePropsFt","useCallbackRef","treeDataList","mapData","result","Boolean","onDataSourceChange","onRequest","TreeModal","_props$size","isOpen","setIsOpen","htmlSize","useSize","document","querySelector","handleOnClick","disabled","Action","type","_useState2","originalValuesRef","useEffect","customSize","useMemo","isXsSm","includes","sizeCalculate","modalBodyHeight","modalWidth","onSubmit","onCancel","Modal","className","modalClassName","title","open","forceRender","centered","onOk","styles","body","maxHeight","content","header","footer","attachPropertiesToComponent","TreeModalInner","Content"],"mappings":"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"}
@@ -18,5 +18,5 @@ import './../dropdown-menu-wrapper/index.css';
18
18
  import './../input-search-wrapper/index.css';
19
19
  import './index.css';
20
20
  /*! @flatjs/forge MIT @flatbiz/antd */
21
- import{a as e,_ as i}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{hooks as r}from"@wove/react/cjs/hooks";import{isObject as a}from"@dimjs/lang/cjs/is-object";import{isUndefinedOrNull as o,toArray as n}from"@flatbiz/utils";import{Select as t,message as l}from"antd";import{forwardRef as s,useRef as u,useState as d,useEffect as m,useImperativeHandle as p}from"react";import{TreeModal as c}from"../tree-modal/index.js";import{jsx as j}from"react/jsx-runtime";import"ahooks";import"../fba-hooks/index.js";import"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";import"../flex-layout/index.js";import"@dimjs/utils/cjs/class-names";import"@ant-design/icons/es/icons/CloseOutlined";import"../css-node-hover/index.js";import"../icon-wrapper/index.js";import"@dimjs/lang/cjs/is-undefined";import"../text-overflow/index.js";import"@dimjs/lang/cjs/is-string";import"../tree-wrapper/index.js";import"@dimjs/model-react";import"@dimjs/utils/cjs/array";import"@ant-design/icons/es/icons/CaretDownFilled";import"@ant-design/icons/es/icons/MoreOutlined";import"@dimjs/utils/cjs/extend";import"@dimjs/utils/cjs/get";import"@dimjs/model";import"../button-operate/index.js";import"@dimjs/lang/cjs/is-plain-object";import"@dimjs/lang/cjs/is-promise";import"../button-wrapper/index.js";import"@ant-design/icons/es/icons/LoadingOutlined";import"../index-83bede1b.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"../fba-utils/index.js";import"../dropdown-menu-wrapper/index.js";import"@ant-design/icons/es/icons/ExclamationCircleFilled";import"../dialog-confirm/index.js";import"../dialog-modal/index.js";import"react-dom/client";import"@wove/react/cjs/create-ctx";import"../input-search-wrapper/index.js";import"../request-status/index.js";import"@dimjs/utils/cjs/tree";import"dequal";var v=["placeholder","maxTagCount","labelInValue","maxCount","overMaxCountMsg","disabled","allowClear"];var f=s((function(s,f){var g,x;var C=s.placeholder,b=s.maxTagCount,h=s.labelInValue,w=s.maxCount,y=s.overMaxCountMsg,M=s.disabled,k=s.allowClear,D=e(s,v);var F=o(C)?"请选择":C;var O=o(k)?true:k;var S=u({});var _=u([]);var z=((g=D.fieldNames)==null?void 0:g.label)||"label";var I=((x=D.fieldNames)==null?void 0:x.value)||"value";var N=d(),T=N[0],V=N[1];m((function(){var e;var i=((e=n(s.value))==null?void 0:e.map((function(e){var i;var r=a(e)?e:{label:e,value:e};return{value:r.value,label:((i=S.current[r.value])==null?void 0:i[z])||r.value}})))||[];V(i)}),[z,s.value]);var q=function e(i){var r=n(i).length?i:undefined;if(D.isMultiple==false){s.onChange==null||s.onChange(r==null?void 0:r[0])}else{if(r&&w!==undefined&&r.length>w){void l.error(y?y:"最多选择"+w+"项");return}s.onChange==null||s.onChange(r)}};var B=function e(i){V(i);if(h){q(i);return}q(i==null?void 0:i.map((function(e){return e.value})))};var L=function e(i){V(i);if(h){q(i);return}q(i==null?void 0:i.map((function(e){return e.value})))};var P=r.useCallbackRef((function(e,i){S.current=i;_.current=e||[];var r=T==null?void 0:T.map((function(e){var r=i[e.value];return r?{label:r[z],value:r[I]}:undefined})).filter(Boolean);V(r)}));p(f,(function(){return{getDataSourceMap:function e(){return{treeDataList:_.current,dataSourceMap:S.current}}}}));return j(c,i({},D,{value:T,forceRender:true,onChange:L,onDataSourceChange:P,disabled:M,children:j(t,{labelInValue:true,style:{width:"100%"},placeholder:F,maxTagCount:b,mode:D.isMultiple?"multiple":undefined,open:false,value:T,onChange:B,disabled:M,allowClear:O})}))}));export{f as TreeModalSelector};
21
+ import{a as e,_ as i}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{hooks as r}from"@wove/react/cjs/hooks";import{isObject as a}from"@dimjs/lang/cjs/is-object";import{isUndefinedOrNull as o,toArray as t}from"@flatbiz/utils";import{Select as n,message as l}from"antd";import{forwardRef as s,useRef as u,useState as d,useEffect as m,useImperativeHandle as p}from"react";import{TreeModal as c}from"../tree-modal/index.js";import{jsx as j}from"react/jsx-runtime";import"ahooks";import"../fba-hooks/index.js";import"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/uuid";import"../flex-layout/index.js";import"@dimjs/utils/cjs/class-names";import"@ant-design/icons/es/icons/CloseOutlined";import"../css-node-hover/index.js";import"../icon-wrapper/index.js";import"@dimjs/lang/cjs/is-undefined";import"../text-overflow/index.js";import"@dimjs/lang/cjs/is-string";import"../tree-wrapper/index.js";import"@dimjs/model-react";import"@dimjs/utils/cjs/array";import"@ant-design/icons/es/icons/CaretDownFilled";import"@ant-design/icons/es/icons/MoreOutlined";import"@dimjs/utils/cjs/extend";import"@dimjs/utils/cjs/get";import"@dimjs/model";import"../button-operate/index.js";import"@dimjs/lang/cjs/is-plain-object";import"@dimjs/lang/cjs/is-promise";import"../button-wrapper/index.js";import"@ant-design/icons/es/icons/LoadingOutlined";import"../index-83bede1b.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"../fba-utils/index.js";import"../dropdown-menu-wrapper/index.js";import"@ant-design/icons/es/icons/ExclamationCircleFilled";import"../dialog-confirm/index.js";import"../dialog-modal/index.js";import"react-dom/client";import"@wove/react/cjs/create-ctx";import"../input-search-wrapper/index.js";import"../request-status/index.js";import"@dimjs/utils/cjs/tree";import"dequal";var v=["placeholder","maxTagCount","labelInValue","maxCount","overMaxCountMsg","disabled","allowClear"];var f=s((function(s,f){var g,x;var C=s.placeholder,b=s.maxTagCount,h=s.labelInValue,w=s.maxCount,y=s.overMaxCountMsg,M=s.disabled,k=s.allowClear,D=e(s,v);var F=o(C)?"请选择":C;var O=o(k)?true:k;var S=u({});var _=u([]);var z=((g=D.fieldNames)==null?void 0:g.label)||"label";var I=((x=D.fieldNames)==null?void 0:x.value)||"value";var N=d(),T=N[0],V=N[1];m((function(){var e;var i=((e=t(s.value))==null?void 0:e.map((function(e){var i;var r=a(e)?e:{label:e,value:e};return{value:r.value,label:((i=S.current[r.value])==null?void 0:i[z])||r.value}})))||[];V(i)}),[z,s.value]);var q=function e(i){var r=t(i).length?i:undefined;if(D.isMultiple==false){s.onChange==null||s.onChange(r==null?void 0:r[0])}else{if(r&&w!==undefined&&r.length>w){void l.error(y?y:"最多选择"+w+"项");return}s.onChange==null||s.onChange(r)}};var B=function e(i){V(i);if(h){q(i);return}q(i==null?void 0:i.map((function(e){return e.value})))};var L=function e(i){V(i);if(h){q(i);return}q(i==null?void 0:i.map((function(e){return e.value})))};var P=r.useCallbackRef((function(e,i){S.current=i;_.current=e||[];var r=T==null?void 0:T.map((function(e){var r=i[e.value];return r?{label:r[z],value:r[I]}:undefined})).filter(Boolean);V(r)}));p(f,(function(){return{getDataSourceMap:function e(){return{treeDataList:_.current,dataSourceMap:S.current}}}}));return j(c,i({},D,{value:T,forceRender:true,onChange:L,onDataSourceChange:P,disabled:M,children:j(n,{labelInValue:true,style:{width:"100%"},placeholder:F,maxTagCount:b,mode:D.isMultiple?"multiple":undefined,open:false,value:T,onChange:B,disabled:M,allowClear:O})}))}));export{f as TreeModalSelector};
22
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/tree-modal-selector/selector.tsx"],"sourcesContent":["import { isObject } from '@dimjs/lang';\nimport { isUndefinedOrNull, toArray, type TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { message, Select } from 'antd';\nimport { forwardRef, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport { TreeModal } from '../tree-modal';\nimport type { TreeModalProps, TreeModelSelectItem } from '../tree-modal/types';\nexport type TreeModalSelectorProps = Omit<TreeModalProps, 'children' | 'forceRender' | 'onChange'> & {\n placeholder?: string;\n /**\n * 1. 可指定数量\n * 2. 可设置 responsive,一行自适应显示\n */\n maxTagCount?: number | 'responsive';\n /** 是否返回label+value模式 */\n labelInValue?: boolean;\n onChange?: (values?: TreeModelSelectItem[] | TreeModelSelectItem) => void;\n\n /** 最大选择数量 */\n maxCount?: number;\n /** 超过最大选择数量提示文本 */\n overMaxCountMsg?: string;\n disabled?: boolean;\n allowClear?: boolean;\n};\n\nexport type TreeModalSelectorApi = {\n getDataSourceMap: () => {\n treeDataList: TPlainObject[];\n dataSourceMap: TPlainObject;\n };\n};\n\n/**\n * 树弹框选择器\n * ```\n * 1. 可通过 treeProps.checkableType 配置多选节点模式(包括返回所有节点、只返回叶子节点、叶子节点&父节点全选只返回父节点),默认只返回叶子节点\n * 2. demo: https://fex.qa.tcshuke.com/docs/admin/main/selector/tree\n * ```\n */\nexport const TreeModalSelector = forwardRef<TreeModalSelectorApi, TreeModalSelectorProps>((props, ref) => {\n const {\n placeholder,\n maxTagCount,\n labelInValue,\n maxCount,\n overMaxCountMsg,\n disabled,\n allowClear,\n ...otherProps\n } = props;\n const placeholderFt = isUndefinedOrNull(placeholder) ? '请选择' : placeholder;\n const allowClearFt = isUndefinedOrNull(allowClear) ? true : allowClear;\n\n const dataSourceMapRef = useRef<TPlainObject>({});\n const treeDataListRef = useRef<TPlainObject[]>([]);\n\n const labelKey = otherProps.fieldNames?.label || 'label';\n const valueKey = otherProps.fieldNames?.value || 'value';\n\n const [showValues, setShowValues] = useState<TreeModelSelectItem[]>();\n\n useEffect(() => {\n const dataList =\n toArray(props.value)?.map((item) => {\n const objItems = (isObject(item) ? item : { label: item, value: item }) as TreeModelSelectItem;\n return {\n value: objItems.value,\n label: dataSourceMapRef.current[objItems.value]?.[labelKey] || objItems.value,\n } as TreeModelSelectItem;\n }) || [];\n setShowValues(dataList);\n }, [labelKey, props.value]);\n\n const onInnerChange = (value: TreeModelSelectItem[]) => {\n const valueFt = toArray(value).length ? value : undefined;\n if (otherProps.isMultiple == false) {\n props.onChange?.(valueFt?.[0]);\n } else {\n if (valueFt && maxCount !== undefined && valueFt.length > maxCount) {\n void message.error(overMaxCountMsg ? overMaxCountMsg : `最多选择${maxCount}项`);\n return;\n }\n\n props.onChange?.(valueFt);\n }\n };\n\n const onSelectChange = (value) => {\n setShowValues(value);\n if (labelInValue) {\n onInnerChange(value);\n return;\n }\n\n onInnerChange(value?.map((item) => item.value));\n };\n const treeModalChange = (value) => {\n setShowValues(value);\n if (labelInValue) {\n onInnerChange(value);\n return;\n }\n onInnerChange(value?.map((item) => item.value));\n };\n\n const onDataSourceChange = hooks.useCallbackRef((treeDataList: TPlainObject[], mapData: TPlainObject) => {\n dataSourceMapRef.current = mapData;\n treeDataListRef.current = treeDataList || [];\n const result = showValues\n ?.map((item) => {\n const target = mapData[item.value];\n return target ? { label: target[labelKey], value: target[valueKey] } : undefined;\n })\n .filter(Boolean) as TreeModelSelectItem[];\n setShowValues(result);\n });\n\n useImperativeHandle(ref, () => {\n return {\n getDataSourceMap: () => {\n return {\n treeDataList: treeDataListRef.current,\n dataSourceMap: dataSourceMapRef.current,\n };\n },\n };\n });\n\n return (\n <TreeModal\n {...otherProps}\n value={showValues}\n forceRender={true}\n onChange={treeModalChange}\n onDataSourceChange={onDataSourceChange}\n disabled={disabled}\n >\n <Select\n labelInValue\n style={{ width: '100%' }}\n placeholder={placeholderFt}\n maxTagCount={maxTagCount}\n mode={otherProps.isMultiple ? 'multiple' : undefined}\n open={false}\n value={showValues}\n onChange={onSelectChange}\n disabled={disabled}\n allowClear={allowClearFt}\n />\n </TreeModal>\n );\n});\n"],"names":["TreeModalSelector","forwardRef","props","ref","_otherProps$fieldName","_otherProps$fieldName2","placeholder","maxTagCount","labelInValue","maxCount","overMaxCountMsg","disabled","allowClear","otherProps","_objectWithoutPropertiesLoose","_excluded","placeholderFt","isUndefinedOrNull","allowClearFt","dataSourceMapRef","useRef","treeDataListRef","labelKey","fieldNames","label","valueKey","value","_useState","useState","showValues","setShowValues","useEffect","_toArray","dataList","toArray","map","item","_dataSourceMapRef$cur","objItems","_isObject","current","onInnerChange","valueFt","length","undefined","isMultiple","onChange","message","error","onSelectChange","treeModalChange","onDataSourceChange","_hooks","useCallbackRef","treeDataList","mapData","result","target","filter","Boolean","useImperativeHandle","getDataSourceMap","dataSourceMap","_jsx","TreeModal","_extends","forceRender","children","Select","style","width","mode","open"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/tree-modal-selector/selector.tsx"],"sourcesContent":["import { isObject } from '@dimjs/lang';\nimport { isUndefinedOrNull, toArray, type TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { message, Select } from 'antd';\nimport { forwardRef, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport { TreeModal } from '../tree-modal';\nimport type { TreeModalProps, TreeModelSelectItem } from '../tree-modal/types';\nexport type TreeModalSelectorProps = Omit<TreeModalProps, 'children' | 'forceRender' | 'onChange'> & {\n placeholder?: string;\n /**\n * 1. 可指定数量\n * 2. 可设置 responsive,一行自适应显示\n */\n maxTagCount?: number | 'responsive';\n /** 是否返回label+value模式 */\n labelInValue?: boolean;\n onChange?: (values?: TreeModelSelectItem[] | TreeModelSelectItem) => void;\n\n /** 最大选择数量 */\n maxCount?: number;\n /** 超过最大选择数量提示文本 */\n overMaxCountMsg?: string;\n disabled?: boolean;\n allowClear?: boolean;\n};\n\nexport type TreeModalSelectorApi = {\n getDataSourceMap: () => {\n treeDataList: TPlainObject[];\n dataSourceMap: TPlainObject;\n };\n};\n\n/**\n * 树弹框选择器\n * ```\n * 1. 可通过 treeProps.checkableType 配置多选节点模式(包括返回所有节点、只返回叶子节点、叶子节点&父节点全选只返回父节点),默认只返回叶子节点\n * 2. demo: https://fex.qa.tcshuke.com/docs/admin/main/selector/tree\n * ```\n */\nexport const TreeModalSelector = forwardRef<TreeModalSelectorApi, TreeModalSelectorProps>((props, ref) => {\n const {\n placeholder,\n maxTagCount,\n labelInValue,\n maxCount,\n overMaxCountMsg,\n disabled,\n allowClear,\n ...otherProps\n } = props;\n const placeholderFt = isUndefinedOrNull(placeholder) ? '请选择' : placeholder;\n const allowClearFt = isUndefinedOrNull(allowClear) ? true : allowClear;\n\n const dataSourceMapRef = useRef<TPlainObject>({});\n const treeDataListRef = useRef<TPlainObject[]>([]);\n\n const labelKey = otherProps.fieldNames?.label || 'label';\n const valueKey = otherProps.fieldNames?.value || 'value';\n\n const [showValues, setShowValues] = useState<TreeModelSelectItem[]>();\n\n useEffect(() => {\n const dataList =\n toArray(props.value)?.map((item) => {\n const objItems = (isObject(item) ? item : { label: item, value: item }) as TreeModelSelectItem;\n return {\n value: objItems.value,\n label: dataSourceMapRef.current[objItems.value]?.[labelKey] || objItems.value,\n } as TreeModelSelectItem;\n }) || [];\n setShowValues(dataList);\n }, [labelKey, props.value]);\n\n const onInnerChange = (value: TreeModelSelectItem[]) => {\n const valueFt = toArray(value).length ? value : undefined;\n if (otherProps.isMultiple == false) {\n props.onChange?.(valueFt?.[0]);\n } else {\n if (valueFt && maxCount !== undefined && valueFt.length > maxCount) {\n void message.error(overMaxCountMsg ? overMaxCountMsg : `最多选择${maxCount}项`);\n return;\n }\n\n props.onChange?.(valueFt);\n }\n };\n\n const onSelectChange = (value) => {\n setShowValues(value);\n if (labelInValue) {\n onInnerChange(value);\n return;\n }\n\n onInnerChange(value?.map((item) => item.value));\n };\n const treeModalChange = (value) => {\n setShowValues(value);\n if (labelInValue) {\n onInnerChange(value);\n return;\n }\n onInnerChange(value?.map((item) => item.value));\n };\n\n const onDataSourceChange = hooks.useCallbackRef((treeDataList: TPlainObject[], mapData: TPlainObject) => {\n dataSourceMapRef.current = mapData;\n treeDataListRef.current = treeDataList || [];\n const result = showValues\n ?.map((item) => {\n const target = mapData[item.value];\n return target ? { label: target[labelKey], value: target[valueKey] } : undefined;\n })\n .filter(Boolean) as TreeModelSelectItem[];\n setShowValues(result);\n });\n\n useImperativeHandle(ref, () => {\n return {\n getDataSourceMap: () => {\n return {\n treeDataList: treeDataListRef.current,\n dataSourceMap: dataSourceMapRef.current,\n };\n },\n };\n });\n\n return (\n <TreeModal\n {...otherProps}\n value={showValues}\n forceRender={true}\n onChange={treeModalChange}\n onDataSourceChange={onDataSourceChange}\n disabled={disabled}\n >\n <Select\n labelInValue\n style={{ width: '100%' }}\n placeholder={placeholderFt}\n maxTagCount={maxTagCount}\n mode={otherProps.isMultiple ? 'multiple' : undefined}\n open={false}\n value={showValues}\n onChange={onSelectChange}\n disabled={disabled}\n allowClear={allowClearFt}\n />\n </TreeModal>\n );\n});\n"],"names":["TreeModalSelector","forwardRef","props","ref","_otherProps$fieldName","_otherProps$fieldName2","placeholder","maxTagCount","labelInValue","maxCount","overMaxCountMsg","disabled","allowClear","otherProps","_objectWithoutPropertiesLoose","_excluded","placeholderFt","isUndefinedOrNull","allowClearFt","dataSourceMapRef","useRef","treeDataListRef","labelKey","fieldNames","label","valueKey","value","_useState","useState","showValues","setShowValues","useEffect","_toArray","dataList","toArray","map","item","_dataSourceMapRef$cur","objItems","_isObject","current","onInnerChange","valueFt","length","undefined","isMultiple","onChange","message","error","onSelectChange","treeModalChange","onDataSourceChange","_hooks","useCallbackRef","treeDataList","mapData","result","target","filter","Boolean","useImperativeHandle","getDataSourceMap","dataSourceMap","_jsx","TreeModal","_extends","forceRender","children","Select","style","width","mode","open"],"mappings":"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"}
@@ -3,5 +3,5 @@ import './../fba-hooks/index.css';
3
3
  import './../request-status/index.css';
4
4
  import './index.css';
5
5
  /*! @flatjs/forge MIT @flatbiz/antd */
6
- import e from"@ant-design/icons/es/icons/RedoOutlined";import{classNames as r}from"@dimjs/utils/cjs/class-names";import t from"@ant-design/icons/es/icons/CaretDownFilled";import{extend as n}from"@dimjs/utils/cjs/extend";import{hooks as l}from"@wove/react/cjs/hooks";import{isArray as a}from"@dimjs/lang/cjs/is-array";import{get as i}from"@dimjs/utils/cjs/get";import{isObject as o}from"@dimjs/lang/cjs/is-object";import{a as u,_ as s}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{toArray as c,treeToTiledMap as f,isNotEmptyArray as d,treeToArray as v,isUndefinedOrNull as p}from"@flatbiz/utils";import{usePrevious as m}from"ahooks";import{TreeSelect as h,Button as S}from"antd";import{dequal as g}from"dequal";import{useState as C,useRef as b,useMemo as y,createElement as q}from"react";import{fbaHooks as L}from"../fba-hooks/index.js";import{RequestStatus as w}from"../request-status/index.js";import{Model as R}from"@dimjs/model-react";import{jsx as T}from"react/jsx-runtime";import"../use-responsive-point-21b8c601.js";var j={treeSelectorList:[],treeSelectorTiledMap:{},queryIsEmpty:false};var k={actions:{setSelectBoxList:function e(r){return function(e){e.treeSelectorList=r.treeSelectorList||[];e.treeSelectorTiledMap=r.treeSelectorTiledMap||{};e.requestStatus="request-success"}},resetSelectBoxList:function e(){return function(e){e.treeSelectorList=[];e.treeSelectorTiledMap={}}},changeRequestStatus:function e(r){return function(e){e.requestStatus=r}}},state:j};var x={};var M=function e(r){if(!x[r]){x[r]=R(k)}return x[r]};var E=function e(r,t){var n=[];var l=t[r];while(l){var a=l.pId;l=t[a];if(l){n.push(a)}}return n};var I=function e(r,t){if(r.length===0)return[];var n=[];r.forEach((function(e){var r=E(e,t);n.push.apply(n,r)}));return Array.from(new Set(n))};var N=["serviceConfig","effectDependencyList","onTreeSelectorListChange","onTreeSelectorRequestError","treeSelectorList","requestMessageConfig","modelKey","value","labelInValue","labelInValueFieldNames","onTreeItemDataAdapter","selectedParentCheckedAllChildrenList","fieldNames","onChange","treeDefaultExpandAll","showAllOption","initRootExpand","treeDefaultExpandedKeys","executeOnChangeInRenderFirstValue"];var A=function R(j){var k=j.serviceConfig,x=j.effectDependencyList,E=j.onTreeSelectorListChange,A=j.onTreeSelectorRequestError,O=j.treeSelectorList,D=j.requestMessageConfig,P=j.modelKey,V=j.value,F=j.labelInValue,B=j.labelInValueFieldNames,K=j.onTreeItemDataAdapter,H=j.selectedParentCheckedAllChildrenList,J=H===void 0?true:H,W=j.fieldNames,_=j.onChange,z=j.treeDefaultExpandAll,G=j.showAllOption,Q=j.initRootExpand,U=j.treeDefaultExpandedKeys,X=j.executeOnChangeInRenderFirstValue,Y=u(j,N);var Z=Object.prototype.hasOwnProperty.call(j,"treeSelectorList");var $=k||{};var ee=x||[];var re=L.useSafeState(false),te=re[0],ne=re[1];var le=C(),ae=le[0],ie=le[1];var oe=M(P).useStore(),ue=oe[0],se=oe[1];var ce="request-progress-"+P;var fe=Y.treeCheckable||Y.multiple;var de=b(true);var ve=y((function(){if(Y.treeCheckStrictly)return true;return F}),[F,Y.treeCheckStrictly]);var pe=y((function(){return s({label:"label",value:"value",children:"children",disabled:"disabled"},W)}),[W]);var me=y((function(){return s({label:"label",value:"value"},B)}),[B]);var he=y((function(){if(G){var e=G===true;return{label:e?"全部":G.label,value:e?"":G.value}}return null}),[G]);var Se=C(),ge=Se[0],Ce=Se[1];var be=L.useMemoCustom((function(){return c(V).map((function(e){if(o(e)){return ve?e[me.value]:e[pe.value]}return e}))}),[pe.value,ve,me.value,j.value]);var ye=m(be);L.useEffectCustom((function(){if(ue.treeSelectorList.length>0){if(de.current&&X&&ve){var e=[];var r=[];be.forEach((function(t){var n=ue.treeSelectorTiledMap[t];if(n){var l;r.push(n);e.push((l={},l[me.label]=n[pe.label],l[me.value]=n[pe.value],l))}}));if(fe){j.onChange==null||j.onChange(e?e:undefined,r)}else{j.onChange==null||j.onChange(e?e[0]:undefined,r[0])}}var t=[];if(de.current){de.current=false;if(U){t=U}else if(z){var n=Object.keys(ue.treeSelectorTiledMap).map((function(e){var r;return(r=ue.treeSelectorTiledMap[e])==null?void 0:r[pe.value]}));t=n}else if(Q&&ue.treeSelectorList.length===1){t=[ue.treeSelectorList[0][pe.value]]}ie(t)}}}),[be,ue.treeSelectorList]);L.useEffectCustom((function(){if(!de.current&&be.length>0){if(ue.treeSelectorList.length>0&&JSON.stringify(be)!==JSON.stringify(ye)){if(!ge){var e=I(be,ue.treeSelectorTiledMap);ie(e)}}}}),[be,ue.treeSelectorList]);var qe=function e(r){return r===""||p(r)};var Le=function e(r){var t=r;if($.onRequestResultAdapter){t=$.onRequestResultAdapter(r)}else if(pe.list){t=i(r,pe.list)}if(t&&!a(t)){console.warn("待渲染数据为非数组结构",t);return[]}return t||[]};var we=l.useCallbackRef((function(){return new Promise((function(e,r){var t,l,a,i,o;if(!$.onRequest){return r(new Error("onRequest 调用接口服务不能为空"))}t=$.requiredParamsKeys||[];l=n({},$.params);a=t.find((function(e){return qe(l[e])}));if(a){void se.changeRequestStatus("no-dependencies-params");console.warn("TreeSelectorWrapper组件:参数:"+t.join("、")+"不能为空");return e()}var u=function(){try{return e()}catch(e){return r(e)}};var s=function(e){try{ne(false);window[ce]=false;void se.changeRequestStatus("request-error");A==null||A(e);return u()}catch(e){return r(e)}};try{ne(true);window[ce]=true;void se.changeRequestStatus("request-progress");return Promise.resolve($.onRequest==null?void 0:$.onRequest(l)).then((function(e){try{i=e;o=Le(i);ne(false);window[ce]=false;Re(o||[]);return u()}catch(e){return s(e)}}),s)}catch(e){s(e)}}))}));l.useCustomCompareEffect((function(){if(Z)return;if(ee.length){Re([]);void we();return}var e=M(P).getState();if(e.requestStatus==="request-success"){return}if(!window[ce]){void we();return}}),ee,g);var Re=l.useCallbackRef((function(e){var r;if((e==null?void 0:e.length)===0&&ue.treeSelectorList.length===0){void se.setSelectBoxList({treeSelectorList:[],treeSelectorTiledMap:{}});E==null||E([]);return}var t=he?(r={},r[pe.label]=he.label,r[pe.value]=he.value,r):undefined;var n=G?[t].concat(e):e;void se.setSelectBoxList({treeSelectorList:n,treeSelectorTiledMap:f(n,{value:pe.value,children:pe.children},"pId")});E==null||E(e)}));L.useEffectCustom((function(){if(Z){Re(O||[])}}),[O]);var Te=l.useCallbackRef((function(e){ie(e)}));var je=l.useCallbackRef((function(){void we()}));var ke=l.useCallbackRef((function(e,r,t){var n=c(e);if(Y.treeCheckStrictly){if(J&&t.checked){var l=ue.treeSelectorTiledMap[t==null?void 0:t.triggerValue];if(d(l[pe.children])){n=v([l],pe.children).map((function(e){return e[pe.value]}))}else{n=e==null?void 0:e.map((function(e){return e.value}))}}else{n=e==null?void 0:e.map((function(e){return e.value}))}}if(ve){var a=n.map((function(e){var r;var t=ue.treeSelectorTiledMap[e];return r={},r[me.label]=t[pe.label],r[me.value]=t[pe.value],r}));if(fe){_==null||_(a,a,t)}else{_==null||_(a[0],a[0],t)}}else{var i=n.map((function(e){return ue.treeSelectorTiledMap[e]}));if(fe){_==null||_(n,i,t)}else{_==null||_(n[0],i[0],t)}}}));var xe=l.useCallbackRef((function(e){if(!e)return null;return e.map((function(e){var r=(K==null?void 0:K(s({},e)))||e;var t=r[pe.children];var n=r[pe.value];var l=r[pe.label];var a=r[pe.disabled]?r[pe.disabled]:r.disabled;return q(h.TreeNode,s({},r,{disabled:a,value:n,title:l,key:""+n}),t&&t.length>0&&xe(t))}))}));var Me=function e(r){Ce(r);var t=[];if(!r){Ce(undefined);t=be}else{Object.keys(ue.treeSelectorTiledMap).forEach((function(e){var n=ue.treeSelectorTiledMap[e];var l=n==null?void 0:n[pe.label];if(l!=null&&l.includes(r)){t.push(n[pe.value])}}))}var n=I(t,ue.treeSelectorTiledMap);ie(n)};var Ee=fe?be:be[0];return T(h,s({searchValue:ge,dropdownStyle:{maxHeight:400,overflow:"auto"},showSearch:true,treeLine:{showLeafIcon:false},treeNodeFilterProp:"title",switcherIcon:T(t,{}),popupMatchSelectWidth:false},Y,{className:r("v-tree-select-wrapper",Y.className),popupClassName:r("v-tree-select-wrapper-dropdown",Y.popupClassName),onChange:ke,treeExpandedKeys:ae,value:Ee,onSearch:Me,loading:te,onTreeExpand:Te,style:s({width:"100%"},Y.style),suffixIcon:ue.requestStatus==="request-error"?T(e,{spin:te,onClick:je}):undefined,notFoundContent:T(w,{status:ue.requestStatus,messageConfig:D,loading:te,errorButton:T(S,{type:"primary",onClick:je,children:"重新获取数据"})}),children:xe(ue.treeSelectorList)}))};export{A as TreeSelectorWrapper};
6
+ import e from"@ant-design/icons/es/icons/RedoOutlined";import{classNames as r}from"@dimjs/utils/cjs/class-names";import t from"@ant-design/icons/es/icons/CaretDownFilled";import{extend as n}from"@dimjs/utils/cjs/extend";import{hooks as l}from"@wove/react/cjs/hooks";import{isArray as a}from"@dimjs/lang/cjs/is-array";import{get as i}from"@dimjs/utils/cjs/get";import{isObject as o}from"@dimjs/lang/cjs/is-object";import{a as u,_ as s}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{toArray as c,treeToTiledMap as f,isNotEmptyArray as d,treeToArray as v,isUndefinedOrNull as p}from"@flatbiz/utils";import{usePrevious as m}from"ahooks";import{TreeSelect as h,Button as S}from"antd";import{dequal as g}from"dequal";import{useState as C,useRef as b,useMemo as y,createElement as q}from"react";import{fbaHooks as L}from"../fba-hooks/index.js";import{RequestStatus as w}from"../request-status/index.js";import{Model as R}from"@dimjs/model-react";import{jsx as T}from"react/jsx-runtime";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/uuid";var j={treeSelectorList:[],treeSelectorTiledMap:{},queryIsEmpty:false};var k={actions:{setSelectBoxList:function e(r){return function(e){e.treeSelectorList=r.treeSelectorList||[];e.treeSelectorTiledMap=r.treeSelectorTiledMap||{};e.requestStatus="request-success"}},resetSelectBoxList:function e(){return function(e){e.treeSelectorList=[];e.treeSelectorTiledMap={}}},changeRequestStatus:function e(r){return function(e){e.requestStatus=r}}},state:j};var x={};var M=function e(r){if(!x[r]){x[r]=R(k)}return x[r]};var E=function e(r,t){var n=[];var l=t[r];while(l){var a=l.pId;l=t[a];if(l){n.push(a)}}return n};var I=function e(r,t){if(r.length===0)return[];var n=[];r.forEach((function(e){var r=E(e,t);n.push.apply(n,r)}));return Array.from(new Set(n))};var N=["serviceConfig","effectDependencyList","onTreeSelectorListChange","onTreeSelectorRequestError","treeSelectorList","requestMessageConfig","modelKey","value","labelInValue","labelInValueFieldNames","onTreeItemDataAdapter","selectedParentCheckedAllChildrenList","fieldNames","onChange","treeDefaultExpandAll","showAllOption","initRootExpand","treeDefaultExpandedKeys","executeOnChangeInRenderFirstValue"];var A=function R(j){var k=j.serviceConfig,x=j.effectDependencyList,E=j.onTreeSelectorListChange,A=j.onTreeSelectorRequestError,O=j.treeSelectorList,D=j.requestMessageConfig,P=j.modelKey,V=j.value,F=j.labelInValue,B=j.labelInValueFieldNames,K=j.onTreeItemDataAdapter,H=j.selectedParentCheckedAllChildrenList,J=H===void 0?true:H,W=j.fieldNames,_=j.onChange,z=j.treeDefaultExpandAll,G=j.showAllOption,Q=j.initRootExpand,U=j.treeDefaultExpandedKeys,X=j.executeOnChangeInRenderFirstValue,Y=u(j,N);var Z=Object.prototype.hasOwnProperty.call(j,"treeSelectorList");var $=k||{};var ee=x||[];var re=L.useSafeState(false),te=re[0],ne=re[1];var le=C(),ae=le[0],ie=le[1];var oe=M(P).useStore(),ue=oe[0],se=oe[1];var ce="request-progress-"+P;var fe=Y.treeCheckable||Y.multiple;var de=b(true);var ve=y((function(){if(Y.treeCheckStrictly)return true;return F}),[F,Y.treeCheckStrictly]);var pe=y((function(){return s({label:"label",value:"value",children:"children",disabled:"disabled"},W)}),[W]);var me=y((function(){return s({label:"label",value:"value"},B)}),[B]);var he=y((function(){if(G){var e=G===true;return{label:e?"全部":G.label,value:e?"":G.value}}return null}),[G]);var Se=C(),ge=Se[0],Ce=Se[1];var be=L.useMemoCustom((function(){return c(V).map((function(e){if(o(e)){return ve?e[me.value]:e[pe.value]}return e}))}),[pe.value,ve,me.value,j.value]);var ye=m(be);L.useEffectCustom((function(){if(ue.treeSelectorList.length>0){if(de.current&&X&&ve){var e=[];var r=[];be.forEach((function(t){var n=ue.treeSelectorTiledMap[t];if(n){var l;r.push(n);e.push((l={},l[me.label]=n[pe.label],l[me.value]=n[pe.value],l))}}));if(fe){j.onChange==null||j.onChange(e?e:undefined,r)}else{j.onChange==null||j.onChange(e?e[0]:undefined,r[0])}}var t=[];if(de.current){de.current=false;if(U){t=U}else if(z){var n=Object.keys(ue.treeSelectorTiledMap).map((function(e){var r;return(r=ue.treeSelectorTiledMap[e])==null?void 0:r[pe.value]}));t=n}else if(Q&&ue.treeSelectorList.length===1){t=[ue.treeSelectorList[0][pe.value]]}ie(t)}}}),[be,ue.treeSelectorList]);L.useEffectCustom((function(){if(!de.current&&be.length>0){if(ue.treeSelectorList.length>0&&JSON.stringify(be)!==JSON.stringify(ye)){if(!ge){var e=I(be,ue.treeSelectorTiledMap);ie(e)}}}}),[be,ue.treeSelectorList]);var qe=function e(r){return r===""||p(r)};var Le=function e(r){var t=r;if($.onRequestResultAdapter){t=$.onRequestResultAdapter(r)}else if(pe.list){t=i(r,pe.list)}if(t&&!a(t)){console.warn("待渲染数据为非数组结构",t);return[]}return t||[]};var we=l.useCallbackRef((function(){return new Promise((function(e,r){var t,l,a,i,o;if(!$.onRequest){return r(new Error("onRequest 调用接口服务不能为空"))}t=$.requiredParamsKeys||[];l=n({},$.params);a=t.find((function(e){return qe(l[e])}));if(a){void se.changeRequestStatus("no-dependencies-params");console.warn("TreeSelectorWrapper组件:参数:"+t.join("、")+"不能为空");return e()}var u=function(){try{return e()}catch(e){return r(e)}};var s=function(e){try{ne(false);window[ce]=false;void se.changeRequestStatus("request-error");A==null||A(e);return u()}catch(e){return r(e)}};try{ne(true);window[ce]=true;void se.changeRequestStatus("request-progress");return Promise.resolve($.onRequest==null?void 0:$.onRequest(l)).then((function(e){try{i=e;o=Le(i);ne(false);window[ce]=false;Re(o||[]);return u()}catch(e){return s(e)}}),s)}catch(e){s(e)}}))}));l.useCustomCompareEffect((function(){if(Z)return;if(ee.length){Re([]);void we();return}var e=M(P).getState();if(e.requestStatus==="request-success"){return}if(!window[ce]){void we();return}}),ee,g);var Re=l.useCallbackRef((function(e){var r;if((e==null?void 0:e.length)===0&&ue.treeSelectorList.length===0){void se.setSelectBoxList({treeSelectorList:[],treeSelectorTiledMap:{}});E==null||E([]);return}var t=he?(r={},r[pe.label]=he.label,r[pe.value]=he.value,r):undefined;var n=G?[t].concat(e):e;void se.setSelectBoxList({treeSelectorList:n,treeSelectorTiledMap:f(n,{value:pe.value,children:pe.children},"pId")});E==null||E(e)}));L.useEffectCustom((function(){if(Z){Re(O||[])}}),[O]);var Te=l.useCallbackRef((function(e){ie(e)}));var je=l.useCallbackRef((function(){void we()}));var ke=l.useCallbackRef((function(e,r,t){var n=c(e);if(Y.treeCheckStrictly){if(J&&t.checked){var l=ue.treeSelectorTiledMap[t==null?void 0:t.triggerValue];if(d(l[pe.children])){n=v([l],pe.children).map((function(e){return e[pe.value]}))}else{n=e==null?void 0:e.map((function(e){return e.value}))}}else{n=e==null?void 0:e.map((function(e){return e.value}))}}if(ve){var a=n.map((function(e){var r;var t=ue.treeSelectorTiledMap[e];return r={},r[me.label]=t[pe.label],r[me.value]=t[pe.value],r}));if(fe){_==null||_(a,a,t)}else{_==null||_(a[0],a[0],t)}}else{var i=n.map((function(e){return ue.treeSelectorTiledMap[e]}));if(fe){_==null||_(n,i,t)}else{_==null||_(n[0],i[0],t)}}}));var xe=l.useCallbackRef((function(e){if(!e)return null;return e.map((function(e){var r=(K==null?void 0:K(s({},e)))||e;var t=r[pe.children];var n=r[pe.value];var l=r[pe.label];var a=r[pe.disabled]?r[pe.disabled]:r.disabled;return q(h.TreeNode,s({},r,{disabled:a,value:n,title:l,key:""+n}),t&&t.length>0&&xe(t))}))}));var Me=function e(r){Ce(r);var t=[];if(!r){Ce(undefined);t=be}else{Object.keys(ue.treeSelectorTiledMap).forEach((function(e){var n=ue.treeSelectorTiledMap[e];var l=n==null?void 0:n[pe.label];if(l!=null&&l.includes(r)){t.push(n[pe.value])}}))}var n=I(t,ue.treeSelectorTiledMap);ie(n)};var Ee=fe?be:be[0];return T(h,s({searchValue:ge,dropdownStyle:{maxHeight:400,overflow:"auto"},showSearch:true,treeLine:{showLeafIcon:false},treeNodeFilterProp:"title",switcherIcon:T(t,{}),popupMatchSelectWidth:false},Y,{className:r("v-tree-select-wrapper",Y.className),popupClassName:r("v-tree-select-wrapper-dropdown",Y.popupClassName),onChange:ke,treeExpandedKeys:ae,value:Ee,onSearch:Me,loading:te,onTreeExpand:Te,style:s({width:"100%"},Y.style),suffixIcon:ue.requestStatus==="request-error"?T(e,{spin:te,onClick:je}):undefined,notFoundContent:T(w,{status:ue.requestStatus,messageConfig:D,loading:te,errorButton:T(S,{type:"primary",onClick:je,children:"重新获取数据"})}),children:xe(ue.treeSelectorList)}))};export{A as TreeSelectorWrapper};
7
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/tree-selector-wrapper/model.ts","@flatbiz/antd/src/tree-selector-wrapper/utils.ts","@flatbiz/antd/src/tree-selector-wrapper/selector.tsx"],"sourcesContent":["import { API, ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport { TAny, TPlainObject, TSetDefaultDefined } from '@flatbiz/utils';\nimport { TreeSelectProps } from 'antd';\nimport { TRequestStatus } from '../request-status';\n\nexport type ModelState = {\n treeSelectorList: TSetDefaultDefined<TreeSelectProps['treeData'], []>;\n treeSelectorTiledMap: TPlainObject;\n queryIsEmpty: boolean;\n requestStatus?: TRequestStatus;\n};\n\ntype ModelActionParams = {\n setSelectBoxList: {\n treeSelectorList: ModelState['treeSelectorList'];\n treeSelectorTiledMap: TPlainObject;\n };\n resetSelectBoxList: void;\n changeRequestStatus: TRequestStatus;\n};\n\nconst defaultState: ModelState = {\n treeSelectorList: [],\n treeSelectorTiledMap: {},\n queryIsEmpty: false,\n};\n\nconst TreeSelectorWrapperModel: ModelType<ModelState, ModelActionParams> = {\n actions: {\n setSelectBoxList: (params) => {\n return (state) => {\n state.treeSelectorList = params.treeSelectorList || [];\n state.treeSelectorTiledMap = params.treeSelectorTiledMap || {};\n state.requestStatus = 'request-success';\n };\n },\n resetSelectBoxList: () => {\n return (state) => {\n state.treeSelectorList = [];\n state.treeSelectorTiledMap = {};\n };\n },\n changeRequestStatus: (params) => {\n return (state) => {\n state.requestStatus = params;\n };\n },\n },\n state: defaultState,\n};\n\nconst treeSelectorWrapperModels: Record<string, API<ModelType<ModelState, ModelActionParams, TAny>>> = {};\n\n/**\n * ```\n * 使用方式\n * const [state, actions] = useTreeSelectorWrapperModel('key值').useStore();\n * ```\n */\nexport const treeSelectorWrapperModel = (key: string) => {\n if (!treeSelectorWrapperModels[key]) {\n treeSelectorWrapperModels[key] = Model(TreeSelectorWrapperModel);\n }\n return treeSelectorWrapperModels[key];\n};\n","export const getExpandedKeysByValue = (value: string | number, treeSelectorTiledMap) => {\n const tempList: Array<string | number> = [];\n let parentNode = treeSelectorTiledMap[value];\n while (parentNode) {\n const pId = parentNode.pId;\n parentNode = treeSelectorTiledMap[pId];\n if (parentNode) {\n tempList.push(pId);\n }\n }\n return tempList;\n};\n\nexport const getExpandedKeysByValues = (values: Array<string | number>, treeSelectorTiledMap) => {\n if (values.length === 0) return [];\n const expandedKeys: Array<string | number> = [];\n values.forEach((value) => {\n const targetList = getExpandedKeysByValue(value, treeSelectorTiledMap);\n expandedKeys.push(...targetList);\n });\n return Array.from(new Set(expandedKeys));\n};\n","import { CaretDownFilled, RedoOutlined } from '@ant-design/icons';\nimport { isArray, isObject } from '@dimjs/lang';\nimport { classNames, extend, get } from '@dimjs/utils';\nimport {\n isNotEmptyArray,\n isUndefinedOrNull,\n toArray,\n treeToArray,\n treeToTiledMap,\n type TAny,\n type TPlainObject,\n} from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { usePrevious } from 'ahooks';\nimport { Button, TreeSelect, type TreeSelectProps } from 'antd';\nimport { dequal } from 'dequal';\nimport { useMemo, useRef, useState, type DependencyList } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { RequestStatus, type TRequestStatusProps } from '../request-status';\nimport { treeSelectorWrapperModel } from './model';\nimport './style.less';\nimport { getExpandedKeysByValues } from './utils';\n\ntype TreeSelectorWrapperValue =\n | string\n | number\n | Array<string | number>\n | TPlainObject<string | number>\n | Array<TPlainObject<string | number>>;\n\ntype TreeSelectorServiceConfig = {\n params?: TPlainObject;\n requiredParamsKeys?: string[];\n onRequest?: (params?: TAny) => TAny;\n /**\n * 响应数据适配器\n */\n onRequestResultAdapter?: (respData: TAny) => TPlainObject[];\n};\n\nexport type TreeSelectorWrapperProps = Omit<\n TreeSelectProps,\n | 'treeExpandedKeys'\n | 'treeData'\n | 'loading'\n | 'onTreeExpand'\n | 'onChange'\n | 'value'\n | 'fieldNames'\n | 'defaultValue'\n | 'treeDataSimpleMode'\n | 'onSearch'\n> & {\n modelKey: string;\n fieldNames?: {\n /**\n * 1. list 为 onRequest 返回数据中列表key值,可多级取值,例如: 'a.b.c'\n * 2. 配置 serviceConfig.onRequestResultAdapter 后此配置失效\n */\n list?: string;\n label?: string;\n value?: string;\n children?: string;\n disabled?: string;\n };\n /**\n * useEffect依赖项数组,用于重新发起获取接口数据\n */\n effectDependencyList?: DependencyList;\n /**\n * 请求服务需求的数据,当设置`treeSelectorList`后无效果\n */\n serviceConfig?: TreeSelectorServiceConfig;\n /**\n * 当设置treeSelectorList后,serviceConfig 将失效\n */\n treeSelectorList?: TreeSelectProps['treeData'];\n /**\n * treeSelectorList发生变更时触发\n */\n onTreeSelectorListChange?: (treeSelectorList?: TreeSelectProps['treeData']) => void;\n /**\n * 通过服务获取数据异常回调,当设置`treeSelectorList`后无效果\n */\n onTreeSelectorRequestError?: (error: Error) => void;\n /**\n * 添加全部选项\n * ```\n * 1. showAllOption = true,添加默认全部选项(value值为空字符串)\n * 2. 可自定义全部选项,例如:{ label: '全部', value: 'all' }\n * 3. 自定义字段会通过fieldNames转换后使用\n * 4. 多选操作时,最好不要设置全部选项\n * ```\n */\n showAllOption?: true | TPlainObject<string | number>;\n /**\n * 1. 当 treeCheckable = true && treeCheckStrictly = true,如果选择的数据中含有父节点,selectedValue、selectedList返回数据包含父节点\n * 2. 当 treeCheckable = true && treeCheckStrictly = false,selectedValue、selectedList返回的数据不包含父节点\n * 3. 当 treeCheckable = false,节点选择没有级联关系,selectedValue、selectedList返回的数据就是实际选择\n * 4. selectAllDataList 返回的数据都包含父节点\n * 5. 使用 onTreeItemAdapter 拼接label数据后,选中回填数据也是拼接后的\n * 6. triggerInfo 当前操作节点数据\n */\n onChange?: (\n selectedValue?: TreeSelectorWrapperValue,\n selectedData?: TPlainObject[] | TPlainObject,\n triggerInfo?: TPlainObject,\n ) => void;\n /**\n * tree item 数据适配器,返回的数据会通过fieldNames配置取数据\n * ```\n * 1. 可用于设置disabled状态\n * onTreeItemDataAdapter: (dataItem) => {\n * if(dataItem.xx === xx){\n * dataItem['disabled] = true;\n * }\n * return dataItem;\n * }\n * 2. 可设置label数据显示\n * ```\n */\n onTreeItemDataAdapter?: (dataItem: TPlainObject) => TPlainObject;\n // icon 无法实现、treeIcon不起作用4.20.0\n // showIcon?: boolean;\n // icon?: (data: TPlainObject) => ReactElement;\n /** 自定义异常提示文案 */\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?: TreeSelectorWrapperValue;\n\n /**\n * treeCheckStrictly \tcheckable 状态下节点选择完全受控(父子节点选中状态不再关联),\n * 会使得 labelInValue 强制为 true\n */\n labelInValue?: boolean;\n /**\n * @deprecated 已弃用\n * ```\n * lableInValue = true,onChange输出数据字段名称,默认:{ label: string; value: string|number }\n * ```\n */\n labelInValueFieldNames?: { label: string; value: string };\n /**\n * treeCheckStrictly = true模式下有效,点击父节点是否选中所有子节点,默认值:true\n */\n selectedParentCheckedAllChildrenList?: boolean;\n /** 有唯一跟节点时,初始化是否展开,默认值:false */\n initRootExpand?: boolean;\n\n /**\n * 在第一次渲染value时,主动执行一次onChange\n * ```\n * 1. 设置labelInValue = true 时有效\n * 2. 不考虑子父节点的关系\n * ```\n */\n executeOnChangeInRenderFirstValue?: boolean;\n};\n\n/**\n * 树选择器包装组件,由于过度封装,部分antd TreeSelect原始功能不支持,不满足情况的请使用antd TreeSelect实现\n * ```\n * 1. 当设置treeSelectorList属性后,serviceConfig、onTreeSelectorListChange将失效\n * 2. 父节点默认不返回,需要返回请设置showCheckedStrategy\n * ```\n */\nexport const TreeSelectorWrapper = (props: TreeSelectorWrapperProps) => {\n const {\n serviceConfig,\n effectDependencyList,\n onTreeSelectorListChange,\n onTreeSelectorRequestError,\n treeSelectorList,\n requestMessageConfig,\n modelKey,\n value,\n labelInValue: _labelInValue,\n labelInValueFieldNames,\n onTreeItemDataAdapter,\n selectedParentCheckedAllChildrenList = true,\n fieldNames,\n onChange,\n treeDefaultExpandAll,\n showAllOption,\n initRootExpand,\n treeDefaultExpandedKeys,\n executeOnChangeInRenderFirstValue,\n ...otherProps\n } = props;\n /**\n * 不能使用key、defaultValue模式\n * 1. 勾选的和回填选中不相同情况,勾选后会渲染defaultValue模式后,弹框被关闭,操作体验存在问题\n */\n const hasTreeSelectorList = Object.prototype.hasOwnProperty.call(props, 'treeSelectorList');\n const newServiceConfig = serviceConfig || {};\n const newEffectDependencyList = effectDependencyList || [];\n const [loading, setLoading] = fbaHooks.useSafeState(false);\n const [treeExpandedKeys, setTreeExpandedKeys] = useState<React.Key[]>();\n const [state, actions] = treeSelectorWrapperModel(modelKey).useStore();\n const requestPreKey = `request-progress-${modelKey}`;\n const isMultiple = otherProps.treeCheckable || otherProps.multiple;\n const responseFirstRef = useRef(true);\n /**\n * treeCheckStrictly \tcheckable 状态下节点选择完全受控(父子节点选中状态不再关联),\n * 会使得 labelInValue 强制为 true\n */\n const labelInValue = useMemo(() => {\n if (otherProps.treeCheckStrictly) return true;\n return _labelInValue;\n }, [_labelInValue, otherProps.treeCheckStrictly]);\n\n const fieldNamesMerge = useMemo(() => {\n return {\n label: 'label',\n value: 'value',\n children: 'children',\n disabled: 'disabled',\n ...fieldNames,\n };\n }, [fieldNames]);\n\n const labelInValueFieldNamesMerge = useMemo(() => {\n return { label: 'label', value: 'value', ...labelInValueFieldNames };\n }, [labelInValueFieldNames]);\n\n const allOptionConfig = useMemo(() => {\n if (showAllOption) {\n const isTrue = showAllOption === true;\n return {\n label: isTrue ? '全部' : showAllOption.label,\n value: isTrue ? '' : showAllOption.value,\n };\n }\n return null;\n }, [showAllOption]);\n\n const [searchValue, setSearchValue] = useState<string>();\n\n const propsPureValue = fbaHooks.useMemoCustom(() => {\n return toArray<TAny>(value).map((item) => {\n if (isObject(item)) {\n return (labelInValue ? item[labelInValueFieldNamesMerge.value] : item[fieldNamesMerge.value]) as\n | string\n | number;\n }\n return item as string | number;\n });\n }, [fieldNamesMerge.value, labelInValue, labelInValueFieldNamesMerge.value, props.value]);\n\n const prevPropsPureValue = usePrevious(propsPureValue);\n\n fbaHooks.useEffectCustom(() => {\n if (state.treeSelectorList.length > 0) {\n if (responseFirstRef.current && executeOnChangeInRenderFirstValue && labelInValue) {\n const dataList: TPlainObject[] = [];\n const originalList: TPlainObject[] = [];\n propsPureValue.forEach((item) => {\n const target = state.treeSelectorTiledMap[item];\n if (target) {\n originalList.push(target);\n dataList.push({\n [labelInValueFieldNamesMerge.label]: target[fieldNamesMerge.label],\n [labelInValueFieldNamesMerge.value]: target[fieldNamesMerge.value],\n });\n }\n });\n if (isMultiple) {\n props.onChange?.(dataList ? dataList : undefined, originalList);\n } else {\n props.onChange?.(dataList ? dataList[0] : undefined, originalList[0]);\n }\n }\n let treeExpandedKeys: Array<string | number> = [];\n if (responseFirstRef.current) {\n responseFirstRef.current = false;\n if (treeDefaultExpandedKeys) {\n treeExpandedKeys = treeDefaultExpandedKeys as Array<string | number>;\n } else if (treeDefaultExpandAll) {\n const allValues = Object.keys(state.treeSelectorTiledMap).map(\n (item) => state.treeSelectorTiledMap[item]?.[fieldNamesMerge.value] as string | number,\n );\n treeExpandedKeys = allValues;\n } else if (initRootExpand && state.treeSelectorList.length === 1) {\n treeExpandedKeys = [state.treeSelectorList[0][fieldNamesMerge.value]];\n }\n setTreeExpandedKeys(treeExpandedKeys);\n }\n // else {\n // responseFirstRef.current = false;\n // if (!searchValue) {\n // const expandedKeys = getExpandedKeysByValues(\n // propsPureValue,\n // state.treeSelectorTiledMap\n // );\n // setTreeExpandedKeys(expandedKeys);\n // }\n // }\n }\n }, [propsPureValue, state.treeSelectorList]);\n\n fbaHooks.useEffectCustom(() => {\n if (!responseFirstRef.current && propsPureValue.length > 0) {\n if (\n state.treeSelectorList.length > 0 &&\n JSON.stringify(propsPureValue) !== JSON.stringify(prevPropsPureValue)\n ) {\n if (!searchValue) {\n const expandedKeys = getExpandedKeysByValues(propsPureValue, state.treeSelectorTiledMap);\n setTreeExpandedKeys(expandedKeys);\n }\n }\n }\n }, [propsPureValue, state.treeSelectorList]);\n\n const valueIsEmpty = (value: string | number) => {\n return value === '' || isUndefinedOrNull(value);\n };\n\n const serviceResponseHandle = (respData) => {\n let result = respData;\n if (newServiceConfig.onRequestResultAdapter) {\n result = newServiceConfig.onRequestResultAdapter(respData as unknown as TPlainObject);\n } else if (fieldNamesMerge.list) {\n result = get(respData, fieldNamesMerge.list);\n }\n if (result && !isArray(result)) {\n console.warn('待渲染数据为非数组结构', result);\n return [];\n }\n return result || [];\n };\n\n const startDataSourceRequest = hooks.useCallbackRef(async () => {\n if (!newServiceConfig.onRequest) {\n throw new Error('onRequest 调用接口服务不能为空');\n }\n const requiredParamsKeys = newServiceConfig.requiredParamsKeys || [];\n const params = extend({}, newServiceConfig.params);\n const isEmpty = requiredParamsKeys.find((key) => {\n return valueIsEmpty(params[key] as string | number);\n });\n if (isEmpty) {\n void actions.changeRequestStatus('no-dependencies-params');\n console.warn(`TreeSelectorWrapper组件:参数:${requiredParamsKeys.join('、')}不能为空`);\n return;\n }\n try {\n setLoading(true);\n window[requestPreKey] = true;\n void actions.changeRequestStatus('request-progress');\n const _respData = await newServiceConfig.onRequest?.(params);\n const respData = serviceResponseHandle(_respData) as TreeSelectProps['treeData'];\n setLoading(false);\n window[requestPreKey] = false;\n onChangeSelectorList(respData || []);\n } catch (error: TAny) {\n setLoading(false);\n window[requestPreKey] = false;\n void actions.changeRequestStatus('request-error');\n onTreeSelectorRequestError?.(error);\n }\n });\n\n hooks.useCustomCompareEffect(\n () => {\n if (hasTreeSelectorList) return;\n // 当无依赖项时,如果存在缓存数据,就不在调用接口\n if (newEffectDependencyList.length) {\n // 内部主动清楚数据,被依赖的数据发生变更时,依赖组件数据清空\n onChangeSelectorList([]);\n void startDataSourceRequest();\n return;\n }\n const allState = treeSelectorWrapperModel(modelKey).getState();\n if (allState.requestStatus === 'request-success') {\n return;\n }\n // 判断相同的modelKey是否已经在请求数据中,避免重复请求\n if (!window[requestPreKey]) {\n void startDataSourceRequest();\n return;\n }\n },\n newEffectDependencyList,\n dequal,\n );\n\n const onChangeSelectorList = hooks.useCallbackRef((dataList: TAny[]) => {\n if (dataList?.length === 0 && state.treeSelectorList.length === 0) {\n void actions.setSelectBoxList({\n treeSelectorList: [],\n treeSelectorTiledMap: {},\n });\n onTreeSelectorListChange?.([]);\n return;\n }\n // 全部选项\n const tempItem = allOptionConfig\n ? {\n [fieldNamesMerge.label]: allOptionConfig.label,\n [fieldNamesMerge.value]: allOptionConfig.value,\n }\n : undefined;\n const newdataList = showAllOption ? [tempItem, ...dataList] : dataList;\n void actions.setSelectBoxList({\n treeSelectorList: newdataList,\n treeSelectorTiledMap: treeToTiledMap(\n newdataList,\n {\n value: fieldNamesMerge.value,\n children: fieldNamesMerge.children,\n },\n 'pId',\n ),\n });\n onTreeSelectorListChange?.(dataList);\n });\n\n fbaHooks.useEffectCustom(() => {\n if (hasTreeSelectorList) {\n onChangeSelectorList(treeSelectorList || []);\n }\n }, [treeSelectorList]);\n\n const onTreeExpand = hooks.useCallbackRef((expandedKeys) => {\n setTreeExpandedKeys(expandedKeys as string[]);\n });\n\n const onAgainRequest = hooks.useCallbackRef(() => {\n void startDataSourceRequest();\n });\n\n /**\n * 根据treeCheckable、treeCheckStrictly、showCheckedStrategy等设置情况,判断返回数据是否包含父节点\n * 1. 当 treeCheckable = true,changeValue 数据格式为 { label,value }[]\n */\n const onInnerChange = hooks.useCallbackRef((changeValue: TAny, _data, triggerInfo: TPlainObject) => {\n let resultValueList = toArray<TAny>(changeValue);\n if (otherProps.treeCheckStrictly) {\n if (selectedParentCheckedAllChildrenList && triggerInfo.checked) {\n const target = state.treeSelectorTiledMap[triggerInfo?.triggerValue];\n if (isNotEmptyArray(target[fieldNamesMerge.children])) {\n resultValueList = treeToArray([target], fieldNamesMerge.children).map((item) => {\n return item[fieldNamesMerge.value];\n });\n } else {\n resultValueList = changeValue?.map((item) => item.value);\n }\n } else {\n resultValueList = changeValue?.map((item) => item.value);\n }\n }\n if (labelInValue) {\n const resultItemList = resultValueList.map((item) => {\n const target = state.treeSelectorTiledMap[item];\n return {\n [labelInValueFieldNamesMerge.label]: target[fieldNamesMerge.label],\n [labelInValueFieldNamesMerge.value]: target[fieldNamesMerge.value],\n };\n });\n if (isMultiple) {\n onChange?.(resultItemList, resultItemList, triggerInfo);\n } else {\n onChange?.(resultItemList[0], resultItemList[0], triggerInfo);\n }\n } else {\n const resultItemList = resultValueList.map((item) => {\n return state.treeSelectorTiledMap[item];\n });\n if (isMultiple) {\n onChange?.(resultValueList, resultItemList, triggerInfo);\n } else {\n onChange?.(resultValueList[0], resultItemList[0], triggerInfo);\n }\n }\n });\n\n const mapTree = hooks.useCallbackRef((data) => {\n if (!data) return null;\n return data.map((item) => {\n const itemAdapterData = onTreeItemDataAdapter?.({ ...item }) || item;\n const children = itemAdapterData[fieldNamesMerge.children];\n const value = itemAdapterData[fieldNamesMerge.value];\n const label = itemAdapterData[fieldNamesMerge.label];\n const disabled = itemAdapterData[fieldNamesMerge.disabled]\n ? itemAdapterData[fieldNamesMerge.disabled]\n : itemAdapterData.disabled;\n return (\n <TreeSelect.TreeNode\n {...itemAdapterData}\n disabled={disabled}\n value={value}\n title={label}\n key={`${value}`}\n >\n {children && children.length > 0 && mapTree(children)}\n </TreeSelect.TreeNode>\n );\n });\n });\n\n const onSearch = (searchValue?: string) => {\n setSearchValue(searchValue);\n let targetKeyList: Array<string | number> = [];\n if (!searchValue) {\n setSearchValue(undefined);\n targetKeyList = propsPureValue;\n } else {\n Object.keys(state.treeSelectorTiledMap).forEach((item) => {\n const target = state.treeSelectorTiledMap[item];\n const label = target?.[fieldNamesMerge.label] as string;\n if (label?.includes(searchValue)) {\n targetKeyList.push(target[fieldNamesMerge.value]);\n }\n });\n }\n\n const expandedKeysMerge = getExpandedKeysByValues(targetKeyList, state.treeSelectorTiledMap);\n setTreeExpandedKeys(expandedKeysMerge);\n };\n\n const treeValue = isMultiple ? propsPureValue : propsPureValue[0];\n\n /**\n * 1. 使用 TreeNode 渲染节点,不能重写 fieldNames 配置\n * 2. 使用 TreeNode 是为了实现 TreeNode ICON\n */\n return (\n <TreeSelect\n searchValue={searchValue}\n dropdownStyle={{ maxHeight: 400, overflow: 'auto' }}\n showSearch={true}\n treeLine={{ showLeafIcon: false }}\n treeNodeFilterProp=\"title\"\n switcherIcon={<CaretDownFilled />}\n popupMatchSelectWidth={false}\n {...otherProps}\n className={classNames('v-tree-select-wrapper', otherProps.className)}\n popupClassName={classNames('v-tree-select-wrapper-dropdown', otherProps.popupClassName)}\n onChange={onInnerChange}\n treeExpandedKeys={treeExpandedKeys}\n value={treeValue}\n onSearch={onSearch}\n loading={loading}\n onTreeExpand={onTreeExpand}\n style={{ width: '100%', ...otherProps.style }}\n suffixIcon={\n state.requestStatus === 'request-error' ? (\n <RedoOutlined spin={loading} onClick={onAgainRequest} />\n ) : undefined\n }\n notFoundContent={\n <RequestStatus\n status={state.requestStatus}\n messageConfig={requestMessageConfig}\n loading={loading}\n errorButton={\n <Button type=\"primary\" onClick={onAgainRequest}>\n 重新获取数据\n </Button>\n }\n />\n }\n >\n {mapTree(state.treeSelectorList)}\n </TreeSelect>\n );\n};\n"],"names":["defaultState","treeSelectorList","treeSelectorTiledMap","queryIsEmpty","TreeSelectorWrapperModel","actions","setSelectBoxList","params","state","requestStatus","resetSelectBoxList","changeRequestStatus","treeSelectorWrapperModels","treeSelectorWrapperModel","key","Model","getExpandedKeysByValue","value","tempList","parentNode","pId","push","getExpandedKeysByValues","values","length","expandedKeys","forEach","targetList","apply","Array","from","Set","TreeSelectorWrapper","props","serviceConfig","effectDependencyList","onTreeSelectorListChange","onTreeSelectorRequestError","requestMessageConfig","modelKey","_labelInValue","labelInValue","labelInValueFieldNames","onTreeItemDataAdapter","_props$selectedParent","selectedParentCheckedAllChildrenList","fieldNames","onChange","treeDefaultExpandAll","showAllOption","initRootExpand","treeDefaultExpandedKeys","executeOnChangeInRenderFirstValue","otherProps","_objectWithoutPropertiesLoose","_excluded","hasTreeSelectorList","Object","prototype","hasOwnProperty","call","newServiceConfig","newEffectDependencyList","_fbaHooks$useSafeStat","fbaHooks","useSafeState","loading","setLoading","_useState","useState","treeExpandedKeys","setTreeExpandedKeys","_treeSelectorWrapperM","useStore","requestPreKey","isMultiple","treeCheckable","multiple","responseFirstRef","useRef","useMemo","treeCheckStrictly","fieldNamesMerge","_extends","label","children","disabled","labelInValueFieldNamesMerge","allOptionConfig","isTrue","_useState2","searchValue","setSearchValue","propsPureValue","useMemoCustom","toArray","map","item","_isObject","prevPropsPureValue","usePrevious","useEffectCustom","current","dataList","originalList","target","_dataList$push","undefined","allValues","keys","_state$treeSelectorTi","JSON","stringify","valueIsEmpty","isUndefinedOrNull","serviceResponseHandle","respData","result","onRequestResultAdapter","list","_get","_isArray","console","warn","startDataSourceRequest","_hooks","useCallbackRef","Promise","$return","$error","requiredParamsKeys","isEmpty","_respData","onRequest","Error","_extend","find","join","$Try_1_Post","$boundEx","$Try_1_Catch","error","window","resolve","then","$await_2","onChangeSelectorList","useCustomCompareEffect","allState","getState","dequal","_ref","tempItem","newdataList","concat","treeToTiledMap","onTreeExpand","onAgainRequest","onInnerChange","changeValue","_data","triggerInfo","resultValueList","checked","triggerValue","isNotEmptyArray","treeToArray","resultItemList","_ref2","mapTree","data","itemAdapterData","_createElement","TreeSelect","TreeNode","title","onSearch","targetKeyList","includes","expandedKeysMerge","treeValue","_jsx","dropdownStyle","maxHeight","overflow","showSearch","treeLine","showLeafIcon","treeNodeFilterProp","switcherIcon","_CaretDownFilled","popupMatchSelectWidth","className","_classNames","popupClassName","style","width","suffixIcon","_RedoOutlined","spin","onClick","notFoundContent","RequestStatus","status","messageConfig","errorButton","Button","type"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/tree-selector-wrapper/model.ts","@flatbiz/antd/src/tree-selector-wrapper/utils.ts","@flatbiz/antd/src/tree-selector-wrapper/selector.tsx"],"sourcesContent":["import { API, ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport { TAny, TPlainObject, TSetDefaultDefined } from '@flatbiz/utils';\nimport { TreeSelectProps } from 'antd';\nimport { TRequestStatus } from '../request-status';\n\nexport type ModelState = {\n treeSelectorList: TSetDefaultDefined<TreeSelectProps['treeData'], []>;\n treeSelectorTiledMap: TPlainObject;\n queryIsEmpty: boolean;\n requestStatus?: TRequestStatus;\n};\n\ntype ModelActionParams = {\n setSelectBoxList: {\n treeSelectorList: ModelState['treeSelectorList'];\n treeSelectorTiledMap: TPlainObject;\n };\n resetSelectBoxList: void;\n changeRequestStatus: TRequestStatus;\n};\n\nconst defaultState: ModelState = {\n treeSelectorList: [],\n treeSelectorTiledMap: {},\n queryIsEmpty: false,\n};\n\nconst TreeSelectorWrapperModel: ModelType<ModelState, ModelActionParams> = {\n actions: {\n setSelectBoxList: (params) => {\n return (state) => {\n state.treeSelectorList = params.treeSelectorList || [];\n state.treeSelectorTiledMap = params.treeSelectorTiledMap || {};\n state.requestStatus = 'request-success';\n };\n },\n resetSelectBoxList: () => {\n return (state) => {\n state.treeSelectorList = [];\n state.treeSelectorTiledMap = {};\n };\n },\n changeRequestStatus: (params) => {\n return (state) => {\n state.requestStatus = params;\n };\n },\n },\n state: defaultState,\n};\n\nconst treeSelectorWrapperModels: Record<string, API<ModelType<ModelState, ModelActionParams, TAny>>> = {};\n\n/**\n * ```\n * 使用方式\n * const [state, actions] = useTreeSelectorWrapperModel('key值').useStore();\n * ```\n */\nexport const treeSelectorWrapperModel = (key: string) => {\n if (!treeSelectorWrapperModels[key]) {\n treeSelectorWrapperModels[key] = Model(TreeSelectorWrapperModel);\n }\n return treeSelectorWrapperModels[key];\n};\n","export const getExpandedKeysByValue = (value: string | number, treeSelectorTiledMap) => {\n const tempList: Array<string | number> = [];\n let parentNode = treeSelectorTiledMap[value];\n while (parentNode) {\n const pId = parentNode.pId;\n parentNode = treeSelectorTiledMap[pId];\n if (parentNode) {\n tempList.push(pId);\n }\n }\n return tempList;\n};\n\nexport const getExpandedKeysByValues = (values: Array<string | number>, treeSelectorTiledMap) => {\n if (values.length === 0) return [];\n const expandedKeys: Array<string | number> = [];\n values.forEach((value) => {\n const targetList = getExpandedKeysByValue(value, treeSelectorTiledMap);\n expandedKeys.push(...targetList);\n });\n return Array.from(new Set(expandedKeys));\n};\n","import { CaretDownFilled, RedoOutlined } from '@ant-design/icons';\nimport { isArray, isObject } from '@dimjs/lang';\nimport { classNames, extend, get } from '@dimjs/utils';\nimport {\n isNotEmptyArray,\n isUndefinedOrNull,\n toArray,\n treeToArray,\n treeToTiledMap,\n type TAny,\n type TPlainObject,\n} from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { usePrevious } from 'ahooks';\nimport { Button, TreeSelect, type TreeSelectProps } from 'antd';\nimport { dequal } from 'dequal';\nimport { useMemo, useRef, useState, type DependencyList } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { RequestStatus, type TRequestStatusProps } from '../request-status';\nimport { treeSelectorWrapperModel } from './model';\nimport './style.less';\nimport { getExpandedKeysByValues } from './utils';\n\ntype TreeSelectorWrapperValue =\n | string\n | number\n | Array<string | number>\n | TPlainObject<string | number>\n | Array<TPlainObject<string | number>>;\n\ntype TreeSelectorServiceConfig = {\n params?: TPlainObject;\n requiredParamsKeys?: string[];\n onRequest?: (params?: TAny) => TAny;\n /**\n * 响应数据适配器\n */\n onRequestResultAdapter?: (respData: TAny) => TPlainObject[];\n};\n\nexport type TreeSelectorWrapperProps = Omit<\n TreeSelectProps,\n | 'treeExpandedKeys'\n | 'treeData'\n | 'loading'\n | 'onTreeExpand'\n | 'onChange'\n | 'value'\n | 'fieldNames'\n | 'defaultValue'\n | 'treeDataSimpleMode'\n | 'onSearch'\n> & {\n modelKey: string;\n fieldNames?: {\n /**\n * 1. list 为 onRequest 返回数据中列表key值,可多级取值,例如: 'a.b.c'\n * 2. 配置 serviceConfig.onRequestResultAdapter 后此配置失效\n */\n list?: string;\n label?: string;\n value?: string;\n children?: string;\n disabled?: string;\n };\n /**\n * useEffect依赖项数组,用于重新发起获取接口数据\n */\n effectDependencyList?: DependencyList;\n /**\n * 请求服务需求的数据,当设置`treeSelectorList`后无效果\n */\n serviceConfig?: TreeSelectorServiceConfig;\n /**\n * 当设置treeSelectorList后,serviceConfig 将失效\n */\n treeSelectorList?: TreeSelectProps['treeData'];\n /**\n * treeSelectorList发生变更时触发\n */\n onTreeSelectorListChange?: (treeSelectorList?: TreeSelectProps['treeData']) => void;\n /**\n * 通过服务获取数据异常回调,当设置`treeSelectorList`后无效果\n */\n onTreeSelectorRequestError?: (error: Error) => void;\n /**\n * 添加全部选项\n * ```\n * 1. showAllOption = true,添加默认全部选项(value值为空字符串)\n * 2. 可自定义全部选项,例如:{ label: '全部', value: 'all' }\n * 3. 自定义字段会通过fieldNames转换后使用\n * 4. 多选操作时,最好不要设置全部选项\n * ```\n */\n showAllOption?: true | TPlainObject<string | number>;\n /**\n * 1. 当 treeCheckable = true && treeCheckStrictly = true,如果选择的数据中含有父节点,selectedValue、selectedList返回数据包含父节点\n * 2. 当 treeCheckable = true && treeCheckStrictly = false,selectedValue、selectedList返回的数据不包含父节点\n * 3. 当 treeCheckable = false,节点选择没有级联关系,selectedValue、selectedList返回的数据就是实际选择\n * 4. selectAllDataList 返回的数据都包含父节点\n * 5. 使用 onTreeItemAdapter 拼接label数据后,选中回填数据也是拼接后的\n * 6. triggerInfo 当前操作节点数据\n */\n onChange?: (\n selectedValue?: TreeSelectorWrapperValue,\n selectedData?: TPlainObject[] | TPlainObject,\n triggerInfo?: TPlainObject,\n ) => void;\n /**\n * tree item 数据适配器,返回的数据会通过fieldNames配置取数据\n * ```\n * 1. 可用于设置disabled状态\n * onTreeItemDataAdapter: (dataItem) => {\n * if(dataItem.xx === xx){\n * dataItem['disabled] = true;\n * }\n * return dataItem;\n * }\n * 2. 可设置label数据显示\n * ```\n */\n onTreeItemDataAdapter?: (dataItem: TPlainObject) => TPlainObject;\n // icon 无法实现、treeIcon不起作用4.20.0\n // showIcon?: boolean;\n // icon?: (data: TPlainObject) => ReactElement;\n /** 自定义异常提示文案 */\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?: TreeSelectorWrapperValue;\n\n /**\n * treeCheckStrictly \tcheckable 状态下节点选择完全受控(父子节点选中状态不再关联),\n * 会使得 labelInValue 强制为 true\n */\n labelInValue?: boolean;\n /**\n * @deprecated 已弃用\n * ```\n * lableInValue = true,onChange输出数据字段名称,默认:{ label: string; value: string|number }\n * ```\n */\n labelInValueFieldNames?: { label: string; value: string };\n /**\n * treeCheckStrictly = true模式下有效,点击父节点是否选中所有子节点,默认值:true\n */\n selectedParentCheckedAllChildrenList?: boolean;\n /** 有唯一跟节点时,初始化是否展开,默认值:false */\n initRootExpand?: boolean;\n\n /**\n * 在第一次渲染value时,主动执行一次onChange\n * ```\n * 1. 设置labelInValue = true 时有效\n * 2. 不考虑子父节点的关系\n * ```\n */\n executeOnChangeInRenderFirstValue?: boolean;\n};\n\n/**\n * 树选择器包装组件,由于过度封装,部分antd TreeSelect原始功能不支持,不满足情况的请使用antd TreeSelect实现\n * ```\n * 1. 当设置treeSelectorList属性后,serviceConfig、onTreeSelectorListChange将失效\n * 2. 父节点默认不返回,需要返回请设置showCheckedStrategy\n * ```\n */\nexport const TreeSelectorWrapper = (props: TreeSelectorWrapperProps) => {\n const {\n serviceConfig,\n effectDependencyList,\n onTreeSelectorListChange,\n onTreeSelectorRequestError,\n treeSelectorList,\n requestMessageConfig,\n modelKey,\n value,\n labelInValue: _labelInValue,\n labelInValueFieldNames,\n onTreeItemDataAdapter,\n selectedParentCheckedAllChildrenList = true,\n fieldNames,\n onChange,\n treeDefaultExpandAll,\n showAllOption,\n initRootExpand,\n treeDefaultExpandedKeys,\n executeOnChangeInRenderFirstValue,\n ...otherProps\n } = props;\n /**\n * 不能使用key、defaultValue模式\n * 1. 勾选的和回填选中不相同情况,勾选后会渲染defaultValue模式后,弹框被关闭,操作体验存在问题\n */\n const hasTreeSelectorList = Object.prototype.hasOwnProperty.call(props, 'treeSelectorList');\n const newServiceConfig = serviceConfig || {};\n const newEffectDependencyList = effectDependencyList || [];\n const [loading, setLoading] = fbaHooks.useSafeState(false);\n const [treeExpandedKeys, setTreeExpandedKeys] = useState<React.Key[]>();\n const [state, actions] = treeSelectorWrapperModel(modelKey).useStore();\n const requestPreKey = `request-progress-${modelKey}`;\n const isMultiple = otherProps.treeCheckable || otherProps.multiple;\n const responseFirstRef = useRef(true);\n /**\n * treeCheckStrictly \tcheckable 状态下节点选择完全受控(父子节点选中状态不再关联),\n * 会使得 labelInValue 强制为 true\n */\n const labelInValue = useMemo(() => {\n if (otherProps.treeCheckStrictly) return true;\n return _labelInValue;\n }, [_labelInValue, otherProps.treeCheckStrictly]);\n\n const fieldNamesMerge = useMemo(() => {\n return {\n label: 'label',\n value: 'value',\n children: 'children',\n disabled: 'disabled',\n ...fieldNames,\n };\n }, [fieldNames]);\n\n const labelInValueFieldNamesMerge = useMemo(() => {\n return { label: 'label', value: 'value', ...labelInValueFieldNames };\n }, [labelInValueFieldNames]);\n\n const allOptionConfig = useMemo(() => {\n if (showAllOption) {\n const isTrue = showAllOption === true;\n return {\n label: isTrue ? '全部' : showAllOption.label,\n value: isTrue ? '' : showAllOption.value,\n };\n }\n return null;\n }, [showAllOption]);\n\n const [searchValue, setSearchValue] = useState<string>();\n\n const propsPureValue = fbaHooks.useMemoCustom(() => {\n return toArray<TAny>(value).map((item) => {\n if (isObject(item)) {\n return (labelInValue ? item[labelInValueFieldNamesMerge.value] : item[fieldNamesMerge.value]) as\n | string\n | number;\n }\n return item as string | number;\n });\n }, [fieldNamesMerge.value, labelInValue, labelInValueFieldNamesMerge.value, props.value]);\n\n const prevPropsPureValue = usePrevious(propsPureValue);\n\n fbaHooks.useEffectCustom(() => {\n if (state.treeSelectorList.length > 0) {\n if (responseFirstRef.current && executeOnChangeInRenderFirstValue && labelInValue) {\n const dataList: TPlainObject[] = [];\n const originalList: TPlainObject[] = [];\n propsPureValue.forEach((item) => {\n const target = state.treeSelectorTiledMap[item];\n if (target) {\n originalList.push(target);\n dataList.push({\n [labelInValueFieldNamesMerge.label]: target[fieldNamesMerge.label],\n [labelInValueFieldNamesMerge.value]: target[fieldNamesMerge.value],\n });\n }\n });\n if (isMultiple) {\n props.onChange?.(dataList ? dataList : undefined, originalList);\n } else {\n props.onChange?.(dataList ? dataList[0] : undefined, originalList[0]);\n }\n }\n let treeExpandedKeys: Array<string | number> = [];\n if (responseFirstRef.current) {\n responseFirstRef.current = false;\n if (treeDefaultExpandedKeys) {\n treeExpandedKeys = treeDefaultExpandedKeys as Array<string | number>;\n } else if (treeDefaultExpandAll) {\n const allValues = Object.keys(state.treeSelectorTiledMap).map(\n (item) => state.treeSelectorTiledMap[item]?.[fieldNamesMerge.value] as string | number,\n );\n treeExpandedKeys = allValues;\n } else if (initRootExpand && state.treeSelectorList.length === 1) {\n treeExpandedKeys = [state.treeSelectorList[0][fieldNamesMerge.value]];\n }\n setTreeExpandedKeys(treeExpandedKeys);\n }\n // else {\n // responseFirstRef.current = false;\n // if (!searchValue) {\n // const expandedKeys = getExpandedKeysByValues(\n // propsPureValue,\n // state.treeSelectorTiledMap\n // );\n // setTreeExpandedKeys(expandedKeys);\n // }\n // }\n }\n }, [propsPureValue, state.treeSelectorList]);\n\n fbaHooks.useEffectCustom(() => {\n if (!responseFirstRef.current && propsPureValue.length > 0) {\n if (\n state.treeSelectorList.length > 0 &&\n JSON.stringify(propsPureValue) !== JSON.stringify(prevPropsPureValue)\n ) {\n if (!searchValue) {\n const expandedKeys = getExpandedKeysByValues(propsPureValue, state.treeSelectorTiledMap);\n setTreeExpandedKeys(expandedKeys);\n }\n }\n }\n }, [propsPureValue, state.treeSelectorList]);\n\n const valueIsEmpty = (value: string | number) => {\n return value === '' || isUndefinedOrNull(value);\n };\n\n const serviceResponseHandle = (respData) => {\n let result = respData;\n if (newServiceConfig.onRequestResultAdapter) {\n result = newServiceConfig.onRequestResultAdapter(respData as unknown as TPlainObject);\n } else if (fieldNamesMerge.list) {\n result = get(respData, fieldNamesMerge.list);\n }\n if (result && !isArray(result)) {\n console.warn('待渲染数据为非数组结构', result);\n return [];\n }\n return result || [];\n };\n\n const startDataSourceRequest = hooks.useCallbackRef(async () => {\n if (!newServiceConfig.onRequest) {\n throw new Error('onRequest 调用接口服务不能为空');\n }\n const requiredParamsKeys = newServiceConfig.requiredParamsKeys || [];\n const params = extend({}, newServiceConfig.params);\n const isEmpty = requiredParamsKeys.find((key) => {\n return valueIsEmpty(params[key] as string | number);\n });\n if (isEmpty) {\n void actions.changeRequestStatus('no-dependencies-params');\n console.warn(`TreeSelectorWrapper组件:参数:${requiredParamsKeys.join('、')}不能为空`);\n return;\n }\n try {\n setLoading(true);\n window[requestPreKey] = true;\n void actions.changeRequestStatus('request-progress');\n const _respData = await newServiceConfig.onRequest?.(params);\n const respData = serviceResponseHandle(_respData) as TreeSelectProps['treeData'];\n setLoading(false);\n window[requestPreKey] = false;\n onChangeSelectorList(respData || []);\n } catch (error: TAny) {\n setLoading(false);\n window[requestPreKey] = false;\n void actions.changeRequestStatus('request-error');\n onTreeSelectorRequestError?.(error);\n }\n });\n\n hooks.useCustomCompareEffect(\n () => {\n if (hasTreeSelectorList) return;\n // 当无依赖项时,如果存在缓存数据,就不在调用接口\n if (newEffectDependencyList.length) {\n // 内部主动清楚数据,被依赖的数据发生变更时,依赖组件数据清空\n onChangeSelectorList([]);\n void startDataSourceRequest();\n return;\n }\n const allState = treeSelectorWrapperModel(modelKey).getState();\n if (allState.requestStatus === 'request-success') {\n return;\n }\n // 判断相同的modelKey是否已经在请求数据中,避免重复请求\n if (!window[requestPreKey]) {\n void startDataSourceRequest();\n return;\n }\n },\n newEffectDependencyList,\n dequal,\n );\n\n const onChangeSelectorList = hooks.useCallbackRef((dataList: TAny[]) => {\n if (dataList?.length === 0 && state.treeSelectorList.length === 0) {\n void actions.setSelectBoxList({\n treeSelectorList: [],\n treeSelectorTiledMap: {},\n });\n onTreeSelectorListChange?.([]);\n return;\n }\n // 全部选项\n const tempItem = allOptionConfig\n ? {\n [fieldNamesMerge.label]: allOptionConfig.label,\n [fieldNamesMerge.value]: allOptionConfig.value,\n }\n : undefined;\n const newdataList = showAllOption ? [tempItem, ...dataList] : dataList;\n void actions.setSelectBoxList({\n treeSelectorList: newdataList,\n treeSelectorTiledMap: treeToTiledMap(\n newdataList,\n {\n value: fieldNamesMerge.value,\n children: fieldNamesMerge.children,\n },\n 'pId',\n ),\n });\n onTreeSelectorListChange?.(dataList);\n });\n\n fbaHooks.useEffectCustom(() => {\n if (hasTreeSelectorList) {\n onChangeSelectorList(treeSelectorList || []);\n }\n }, [treeSelectorList]);\n\n const onTreeExpand = hooks.useCallbackRef((expandedKeys) => {\n setTreeExpandedKeys(expandedKeys as string[]);\n });\n\n const onAgainRequest = hooks.useCallbackRef(() => {\n void startDataSourceRequest();\n });\n\n /**\n * 根据treeCheckable、treeCheckStrictly、showCheckedStrategy等设置情况,判断返回数据是否包含父节点\n * 1. 当 treeCheckable = true,changeValue 数据格式为 { label,value }[]\n */\n const onInnerChange = hooks.useCallbackRef((changeValue: TAny, _data, triggerInfo: TPlainObject) => {\n let resultValueList = toArray<TAny>(changeValue);\n if (otherProps.treeCheckStrictly) {\n if (selectedParentCheckedAllChildrenList && triggerInfo.checked) {\n const target = state.treeSelectorTiledMap[triggerInfo?.triggerValue];\n if (isNotEmptyArray(target[fieldNamesMerge.children])) {\n resultValueList = treeToArray([target], fieldNamesMerge.children).map((item) => {\n return item[fieldNamesMerge.value];\n });\n } else {\n resultValueList = changeValue?.map((item) => item.value);\n }\n } else {\n resultValueList = changeValue?.map((item) => item.value);\n }\n }\n if (labelInValue) {\n const resultItemList = resultValueList.map((item) => {\n const target = state.treeSelectorTiledMap[item];\n return {\n [labelInValueFieldNamesMerge.label]: target[fieldNamesMerge.label],\n [labelInValueFieldNamesMerge.value]: target[fieldNamesMerge.value],\n };\n });\n if (isMultiple) {\n onChange?.(resultItemList, resultItemList, triggerInfo);\n } else {\n onChange?.(resultItemList[0], resultItemList[0], triggerInfo);\n }\n } else {\n const resultItemList = resultValueList.map((item) => {\n return state.treeSelectorTiledMap[item];\n });\n if (isMultiple) {\n onChange?.(resultValueList, resultItemList, triggerInfo);\n } else {\n onChange?.(resultValueList[0], resultItemList[0], triggerInfo);\n }\n }\n });\n\n const mapTree = hooks.useCallbackRef((data) => {\n if (!data) return null;\n return data.map((item) => {\n const itemAdapterData = onTreeItemDataAdapter?.({ ...item }) || item;\n const children = itemAdapterData[fieldNamesMerge.children];\n const value = itemAdapterData[fieldNamesMerge.value];\n const label = itemAdapterData[fieldNamesMerge.label];\n const disabled = itemAdapterData[fieldNamesMerge.disabled]\n ? itemAdapterData[fieldNamesMerge.disabled]\n : itemAdapterData.disabled;\n return (\n <TreeSelect.TreeNode\n {...itemAdapterData}\n disabled={disabled}\n value={value}\n title={label}\n key={`${value}`}\n >\n {children && children.length > 0 && mapTree(children)}\n </TreeSelect.TreeNode>\n );\n });\n });\n\n const onSearch = (searchValue?: string) => {\n setSearchValue(searchValue);\n let targetKeyList: Array<string | number> = [];\n if (!searchValue) {\n setSearchValue(undefined);\n targetKeyList = propsPureValue;\n } else {\n Object.keys(state.treeSelectorTiledMap).forEach((item) => {\n const target = state.treeSelectorTiledMap[item];\n const label = target?.[fieldNamesMerge.label] as string;\n if (label?.includes(searchValue)) {\n targetKeyList.push(target[fieldNamesMerge.value]);\n }\n });\n }\n\n const expandedKeysMerge = getExpandedKeysByValues(targetKeyList, state.treeSelectorTiledMap);\n setTreeExpandedKeys(expandedKeysMerge);\n };\n\n const treeValue = isMultiple ? propsPureValue : propsPureValue[0];\n\n /**\n * 1. 使用 TreeNode 渲染节点,不能重写 fieldNames 配置\n * 2. 使用 TreeNode 是为了实现 TreeNode ICON\n */\n return (\n <TreeSelect\n searchValue={searchValue}\n dropdownStyle={{ maxHeight: 400, overflow: 'auto' }}\n showSearch={true}\n treeLine={{ showLeafIcon: false }}\n treeNodeFilterProp=\"title\"\n switcherIcon={<CaretDownFilled />}\n popupMatchSelectWidth={false}\n {...otherProps}\n className={classNames('v-tree-select-wrapper', otherProps.className)}\n popupClassName={classNames('v-tree-select-wrapper-dropdown', otherProps.popupClassName)}\n onChange={onInnerChange}\n treeExpandedKeys={treeExpandedKeys}\n value={treeValue}\n onSearch={onSearch}\n loading={loading}\n onTreeExpand={onTreeExpand}\n style={{ width: '100%', ...otherProps.style }}\n suffixIcon={\n state.requestStatus === 'request-error' ? (\n <RedoOutlined spin={loading} onClick={onAgainRequest} />\n ) : undefined\n }\n notFoundContent={\n <RequestStatus\n status={state.requestStatus}\n messageConfig={requestMessageConfig}\n loading={loading}\n errorButton={\n <Button type=\"primary\" onClick={onAgainRequest}>\n 重新获取数据\n </Button>\n }\n />\n }\n >\n {mapTree(state.treeSelectorList)}\n </TreeSelect>\n );\n};\n"],"names":["defaultState","treeSelectorList","treeSelectorTiledMap","queryIsEmpty","TreeSelectorWrapperModel","actions","setSelectBoxList","params","state","requestStatus","resetSelectBoxList","changeRequestStatus","treeSelectorWrapperModels","treeSelectorWrapperModel","key","Model","getExpandedKeysByValue","value","tempList","parentNode","pId","push","getExpandedKeysByValues","values","length","expandedKeys","forEach","targetList","apply","Array","from","Set","TreeSelectorWrapper","props","serviceConfig","effectDependencyList","onTreeSelectorListChange","onTreeSelectorRequestError","requestMessageConfig","modelKey","_labelInValue","labelInValue","labelInValueFieldNames","onTreeItemDataAdapter","_props$selectedParent","selectedParentCheckedAllChildrenList","fieldNames","onChange","treeDefaultExpandAll","showAllOption","initRootExpand","treeDefaultExpandedKeys","executeOnChangeInRenderFirstValue","otherProps","_objectWithoutPropertiesLoose","_excluded","hasTreeSelectorList","Object","prototype","hasOwnProperty","call","newServiceConfig","newEffectDependencyList","_fbaHooks$useSafeStat","fbaHooks","useSafeState","loading","setLoading","_useState","useState","treeExpandedKeys","setTreeExpandedKeys","_treeSelectorWrapperM","useStore","requestPreKey","isMultiple","treeCheckable","multiple","responseFirstRef","useRef","useMemo","treeCheckStrictly","fieldNamesMerge","_extends","label","children","disabled","labelInValueFieldNamesMerge","allOptionConfig","isTrue","_useState2","searchValue","setSearchValue","propsPureValue","useMemoCustom","toArray","map","item","_isObject","prevPropsPureValue","usePrevious","useEffectCustom","current","dataList","originalList","target","_dataList$push","undefined","allValues","keys","_state$treeSelectorTi","JSON","stringify","valueIsEmpty","isUndefinedOrNull","serviceResponseHandle","respData","result","onRequestResultAdapter","list","_get","_isArray","console","warn","startDataSourceRequest","_hooks","useCallbackRef","Promise","$return","$error","requiredParamsKeys","isEmpty","_respData","onRequest","Error","_extend","find","join","$Try_1_Post","$boundEx","$Try_1_Catch","error","window","resolve","then","$await_2","onChangeSelectorList","useCustomCompareEffect","allState","getState","dequal","_ref","tempItem","newdataList","concat","treeToTiledMap","onTreeExpand","onAgainRequest","onInnerChange","changeValue","_data","triggerInfo","resultValueList","checked","triggerValue","isNotEmptyArray","treeToArray","resultItemList","_ref2","mapTree","data","itemAdapterData","_createElement","TreeSelect","TreeNode","title","onSearch","targetKeyList","includes","expandedKeysMerge","treeValue","_jsx","dropdownStyle","maxHeight","overflow","showSearch","treeLine","showLeafIcon","treeNodeFilterProp","switcherIcon","_CaretDownFilled","popupMatchSelectWidth","className","_classNames","popupClassName","style","width","suffixIcon","_RedoOutlined","spin","onClick","notFoundContent","RequestStatus","status","messageConfig","errorButton","Button","type"],"mappings":"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"}