amis-rev-ui 6.13.0

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 (783) hide show
  1. package/LICENSE +201 -0
  2. package/esm/HTMLFilterContext.d.ts +3 -0
  3. package/esm/HTMLFilterContext.js +10 -0
  4. package/esm/components/404.js +35 -0
  5. package/esm/components/Alert.js +266 -0
  6. package/esm/components/Alert2.js +58 -0
  7. package/esm/components/AlphabetIndexer.d.ts +11 -0
  8. package/esm/components/AlphabetIndexer.js +48 -0
  9. package/esm/components/AnchorNav.js +153 -0
  10. package/esm/components/AnchorNavSection.d.ts +2 -0
  11. package/esm/components/AnchorNavSection.js +7 -0
  12. package/esm/components/ArrayInput.js +146 -0
  13. package/esm/components/AsideNav.js +133 -0
  14. package/esm/components/AssociatedSelection.js +107 -0
  15. package/esm/components/AutoFoldedList.js +124 -0
  16. package/esm/components/AutoSizer.d.ts +2 -0
  17. package/esm/components/AutoSizer.js +8 -0
  18. package/esm/components/Avatar.js +126 -0
  19. package/esm/components/Badge.d.ts +20 -0
  20. package/esm/components/Badge.js +154 -0
  21. package/esm/components/BaiduMapPicker.js +366 -0
  22. package/esm/components/BarCode.js +42 -0
  23. package/esm/components/Breadcrumb.js +160 -0
  24. package/esm/components/Button.js +64 -0
  25. package/esm/components/CalendarMobile.js +538 -0
  26. package/esm/components/Card.js +88 -0
  27. package/esm/components/Cascader.js +515 -0
  28. package/esm/components/ChainedDropdownSelection.js +104 -0
  29. package/esm/components/ChainedSelection.js +184 -0
  30. package/esm/components/Checkbox.js +87 -0
  31. package/esm/components/CityArea.js +190 -0
  32. package/esm/components/CityDB.d.ts +13 -0
  33. package/esm/components/CityDB.js +3942 -0
  34. package/esm/components/CodeMirror.d.ts +29 -0
  35. package/esm/components/CodeMirror.js +140 -0
  36. package/esm/components/Collapse.js +184 -0
  37. package/esm/components/CollapseGroup.js +117 -0
  38. package/esm/components/ColorPicker.js +259 -0
  39. package/esm/components/Combo.js +212 -0
  40. package/esm/components/ConditionBuilder.d.ts +2 -0
  41. package/esm/components/ConditionBuilder.js +7 -0
  42. package/esm/components/ConfirmBox.js +128 -0
  43. package/esm/components/ContextMenu.js +310 -0
  44. package/esm/components/DatePicker.js +716 -0
  45. package/esm/components/DateRangePicker.js +1385 -0
  46. package/esm/components/DiffEditor.d.ts +21 -0
  47. package/esm/components/DiffEditor.js +119 -0
  48. package/esm/components/DndContainer.js +25 -0
  49. package/esm/components/Drawer.js +272 -0
  50. package/esm/components/DropDownSelection.js +77 -0
  51. package/esm/components/DropdownContextMenus.js +93 -0
  52. package/esm/components/Editor.js +238 -0
  53. package/esm/components/Form.d.ts +31 -0
  54. package/esm/components/Form.js +84 -0
  55. package/esm/components/FormField.js +78 -0
  56. package/esm/components/FormulaPicker.d.ts +2 -0
  57. package/esm/components/FormulaPicker.js +7 -0
  58. package/esm/components/GaodeMapPicker.js +204 -0
  59. package/esm/components/GridNav.d.ts +53 -0
  60. package/esm/components/GridNav.js +125 -0
  61. package/esm/components/GridNavItem.d.ts +2 -0
  62. package/esm/components/GridNavItem.js +7 -0
  63. package/esm/components/GroupedSelection.js +138 -0
  64. package/esm/components/HeadCellDropDown.d.ts +2 -0
  65. package/esm/components/HeadCellDropDown.js +7 -0
  66. package/esm/components/HorizontalScroll.d.ts +74 -0
  67. package/esm/components/HorizontalScroll.js +271 -0
  68. package/esm/components/Html.js +55 -0
  69. package/esm/components/Icon.d.ts +2 -0
  70. package/esm/components/Icon.js +7 -0
  71. package/esm/components/ImageGallery.js +396 -0
  72. package/esm/components/Input.d.ts +18 -0
  73. package/esm/components/Input.js +75 -0
  74. package/esm/components/InputBox.js +99 -0
  75. package/esm/components/InputBoxWithSuggestion.js +70 -0
  76. package/esm/components/InputJSONSchema.d.ts +2 -0
  77. package/esm/components/InputJSONSchema.js +7 -0
  78. package/esm/components/InputTable.js +176 -0
  79. package/esm/components/JSONSchemaEditor.d.ts +2 -0
  80. package/esm/components/JSONSchemaEditor.js +7 -0
  81. package/esm/components/Layout.js +60 -0
  82. package/esm/components/Link.js +44 -0
  83. package/esm/components/ListGroup.js +31 -0
  84. package/esm/components/ListMenu.js +62 -0
  85. package/esm/components/LocationPicker.js +208 -0
  86. package/esm/components/Markdown.d.ts +25 -0
  87. package/esm/components/Markdown.js +70 -0
  88. package/esm/components/Menu.d.ts +2 -0
  89. package/esm/components/Menu.js +7 -0
  90. package/esm/components/MixedInput.js +88 -0
  91. package/esm/components/MobileDevTool.d.ts +12 -0
  92. package/esm/components/MobileDevTool.js +312 -0
  93. package/esm/components/Modal.js +261 -0
  94. package/esm/components/ModalManager.d.ts +16 -0
  95. package/esm/components/ModalManager.js +42 -0
  96. package/esm/components/MultilineText.js +90 -0
  97. package/esm/components/NumberInput.js +274 -0
  98. package/esm/components/OverflowTpl.js +100 -0
  99. package/esm/components/Pagination.js +377 -0
  100. package/esm/components/PdfViewer.js +83 -0
  101. package/esm/components/Picker.js +73 -0
  102. package/esm/components/PickerColumn.js +276 -0
  103. package/esm/components/PickerContainer.js +157 -0
  104. package/esm/components/PopOverContainer.d.ts +59 -0
  105. package/esm/components/PopOverContainer.js +148 -0
  106. package/esm/components/PopUp.js +85 -0
  107. package/esm/components/Progress.js +136 -0
  108. package/esm/components/PullRefresh.js +172 -0
  109. package/esm/components/Radios.js +129 -0
  110. package/esm/components/Range.js +516 -0
  111. package/esm/components/Rating.js +341 -0
  112. package/esm/components/ResultBox.js +195 -0
  113. package/esm/components/ResultList.js +253 -0
  114. package/esm/components/ResultTableList.js +152 -0
  115. package/esm/components/ResultTreeList.js +241 -0
  116. package/esm/components/RichText.d.ts +48 -0
  117. package/esm/components/RichText.js +271 -0
  118. package/esm/components/SearchBox.js +298 -0
  119. package/esm/components/Select.js +814 -0
  120. package/esm/components/SelectMobile.d.ts +38 -0
  121. package/esm/components/SelectMobile.js +369 -0
  122. package/esm/components/Selection.js +166 -0
  123. package/esm/components/Shape.js +429 -0
  124. package/esm/components/Signature.js +294 -0
  125. package/esm/components/Slider.js +140 -0
  126. package/esm/components/SparkLine.js +62 -0
  127. package/esm/components/Spinner.js +202 -0
  128. package/esm/components/Steps.js +76 -0
  129. package/esm/components/Switch.js +73 -0
  130. package/esm/components/Tab.d.ts +2 -0
  131. package/esm/components/Tab.js +7 -0
  132. package/esm/components/Table.d.ts +2 -0
  133. package/esm/components/Table.js +7 -0
  134. package/esm/components/TableSelection.js +169 -0
  135. package/esm/components/Tabs.js +607 -0
  136. package/esm/components/TabsTransfer.js +221 -0
  137. package/esm/components/TabsTransferPicker.js +81 -0
  138. package/esm/components/Tag.js +137 -0
  139. package/esm/components/Textarea.js +146 -0
  140. package/esm/components/Timeline.js +60 -0
  141. package/esm/components/TimelineItem.js +101 -0
  142. package/esm/components/Tinymce.d.ts +66 -0
  143. package/esm/components/Tinymce.js +634 -0
  144. package/esm/components/TitleBar.js +48 -0
  145. package/esm/components/Toast.js +247 -0
  146. package/esm/components/Tooltip.js +36 -0
  147. package/esm/components/TooltipWrapper.js +180 -0
  148. package/esm/components/Transfer.js +485 -0
  149. package/esm/components/TransferDropDown.js +98 -0
  150. package/esm/components/TransferPicker.js +98 -0
  151. package/esm/components/TransferSearch.js +100 -0
  152. package/esm/components/Tree.js +1256 -0
  153. package/esm/components/TreeSelection.js +201 -0
  154. package/esm/components/UserSelect.js +674 -0
  155. package/esm/components/UserTabSelect.js +227 -0
  156. package/esm/components/VerificationCode.js +172 -0
  157. package/esm/components/VirtualList.d.ts +2 -0
  158. package/esm/components/VirtualList.js +7 -0
  159. package/esm/components/WithRemoteConfig.d.ts +70 -0
  160. package/esm/components/WithRemoteConfig.js +301 -0
  161. package/esm/components/WithStore.d.ts +13 -0
  162. package/esm/components/WithStore.js +48 -0
  163. package/esm/components/calendar/Calendar.d.ts +83 -0
  164. package/esm/components/calendar/Calendar.js +529 -0
  165. package/esm/components/calendar/CalendarContainer.d.ts +10 -0
  166. package/esm/components/calendar/CalendarContainer.js +27 -0
  167. package/esm/components/calendar/DaysView.js +528 -0
  168. package/esm/components/calendar/MonthsView.js +175 -0
  169. package/esm/components/calendar/QuartersView.js +125 -0
  170. package/esm/components/calendar/TimeView.js +559 -0
  171. package/esm/components/calendar/YearsView.js +122 -0
  172. package/esm/components/condition-builder/Expression.js +121 -0
  173. package/esm/components/condition-builder/Field.js +32 -0
  174. package/esm/components/condition-builder/Func.js +75 -0
  175. package/esm/components/condition-builder/Group.js +196 -0
  176. package/esm/components/condition-builder/GroupOrItem.js +107 -0
  177. package/esm/components/condition-builder/InputSwitch.js +28 -0
  178. package/esm/components/condition-builder/Item.js +233 -0
  179. package/esm/components/condition-builder/Value.js +115 -0
  180. package/esm/components/condition-builder/config.d.ts +36 -0
  181. package/esm/components/condition-builder/config.js +120 -0
  182. package/esm/components/condition-builder/index.js +242 -0
  183. package/esm/components/condition-builder/types.d.ts +116 -0
  184. package/esm/components/formula/CodeEditor.js +99 -0
  185. package/esm/components/formula/Editor.js +446 -0
  186. package/esm/components/formula/FuncList.js +64 -0
  187. package/esm/components/formula/Input.js +141 -0
  188. package/esm/components/formula/Picker.js +454 -0
  189. package/esm/components/formula/VariableList.js +185 -0
  190. package/esm/components/formula/plugin.d.ts +51 -0
  191. package/esm/components/formula/plugin.js +445 -0
  192. package/esm/components/icons.d.ts +61 -0
  193. package/esm/components/icons.js +458 -0
  194. package/esm/components/index.d.ts +138 -0
  195. package/esm/components/json-schema/Array.d.ts +3 -0
  196. package/esm/components/json-schema/Array.js +129 -0
  197. package/esm/components/json-schema/Item.d.ts +5 -0
  198. package/esm/components/json-schema/Item.js +63 -0
  199. package/esm/components/json-schema/Object.d.ts +5 -0
  200. package/esm/components/json-schema/Object.js +272 -0
  201. package/esm/components/json-schema/index.js +29 -0
  202. package/esm/components/menu/MenuContext.d.ts +82 -0
  203. package/esm/components/menu/MenuContext.js +25 -0
  204. package/esm/components/menu/MenuItem.js +112 -0
  205. package/esm/components/menu/PanelMenu.js +68 -0
  206. package/esm/components/menu/SubMenu.js +137 -0
  207. package/esm/components/menu/index.js +368 -0
  208. package/esm/components/schema-editor/Array.d.ts +11 -0
  209. package/esm/components/schema-editor/Array.js +84 -0
  210. package/esm/components/schema-editor/Common.d.ts +61 -0
  211. package/esm/components/schema-editor/Common.js +162 -0
  212. package/esm/components/schema-editor/Item.d.ts +8 -0
  213. package/esm/components/schema-editor/Item.js +24 -0
  214. package/esm/components/schema-editor/Object.d.ts +51 -0
  215. package/esm/components/schema-editor/Object.js +294 -0
  216. package/esm/components/schema-editor/SchemaVariableList.js +74 -0
  217. package/esm/components/schema-editor/SchemaVariableListPicker.js +34 -0
  218. package/esm/components/schema-editor/index.js +122 -0
  219. package/esm/components/table/Cell.d.ts +36 -0
  220. package/esm/components/table/Cell.js +43 -0
  221. package/esm/components/table/ColGroup.d.ts +24 -0
  222. package/esm/components/table/ColGroup.js +77 -0
  223. package/esm/components/table/Head.d.ts +45 -0
  224. package/esm/components/table/Head.js +150 -0
  225. package/esm/components/table/HeadCellDropDown.js +54 -0
  226. package/esm/components/table/HeadCellFilter.js +130 -0
  227. package/esm/components/table/HeadCellSelect.js +51 -0
  228. package/esm/components/table/HeadCellSort.js +88 -0
  229. package/esm/components/table/ItemActionsWrapper.d.ts +10 -0
  230. package/esm/components/table/ItemActionsWrapper.js +29 -0
  231. package/esm/components/table/Row.d.ts +56 -0
  232. package/esm/components/table/Row.js +224 -0
  233. package/esm/components/table/SummaryRow.d.ts +28 -0
  234. package/esm/components/table/SummaryRow.js +73 -0
  235. package/esm/components/table/index.js +1095 -0
  236. package/esm/components/table/util.d.ts +25 -0
  237. package/esm/components/table/util.js +279 -0
  238. package/esm/components/virtual-list/AutoSizer.d.ts +19 -0
  239. package/esm/components/virtual-list/AutoSizer.js +48 -0
  240. package/esm/components/virtual-list/SizeAndPositionManager.d.ts +70 -0
  241. package/esm/components/virtual-list/SizeAndPositionManager.js +216 -0
  242. package/esm/components/virtual-list/constants.d.ts +34 -0
  243. package/esm/components/virtual-list/constants.js +45 -0
  244. package/esm/components/virtual-list/index.d.ts +98 -0
  245. package/esm/components/virtual-list/index.js +288 -0
  246. package/esm/components/withBadge.d.ts +2 -0
  247. package/esm/components/withBadge.js +7 -0
  248. package/esm/hooks/index.d.ts +8 -0
  249. package/esm/hooks/use-click-away.d.ts +12 -0
  250. package/esm/hooks/use-click-away.js +55 -0
  251. package/esm/hooks/use-on-screen.d.ts +2 -0
  252. package/esm/hooks/use-on-screen.js +28 -0
  253. package/esm/hooks/use-set-state.d.ts +2 -0
  254. package/esm/hooks/use-set-state.js +19 -0
  255. package/esm/hooks/use-sub-form.d.ts +4 -0
  256. package/esm/hooks/use-sub-form.js +39 -0
  257. package/esm/hooks/use-touch.d.ts +16 -0
  258. package/esm/hooks/use-touch.js +77 -0
  259. package/esm/hooks/use-update-effect.d.ts +3 -0
  260. package/esm/hooks/use-update-effect.js +21 -0
  261. package/esm/hooks/use-validation-resolver.d.ts +7 -0
  262. package/esm/hooks/use-validation-resolver.js +115 -0
  263. package/esm/icons/alert-danger.svg.js +22 -0
  264. package/esm/icons/alert-info.svg.js +22 -0
  265. package/esm/icons/alert-success.svg.js +22 -0
  266. package/esm/icons/alert-warning.svg.js +22 -0
  267. package/esm/icons/arrow-double-left.svg.js +24 -0
  268. package/esm/icons/arrow-double-right.svg.js +24 -0
  269. package/esm/icons/back.svg.js +21 -0
  270. package/esm/icons/calendar.svg.js +31 -0
  271. package/esm/icons/caret.svg.js +21 -0
  272. package/esm/icons/check.svg.js +21 -0
  273. package/esm/icons/clock.svg.js +29 -0
  274. package/esm/icons/close-small.svg.js +24 -0
  275. package/esm/icons/close.svg.js +21 -0
  276. package/esm/icons/cloud-upload.svg.js +22 -0
  277. package/esm/icons/column-filter.svg.js +22 -0
  278. package/esm/icons/columns.svg.js +21 -0
  279. package/esm/icons/compress-alt.svg.js +21 -0
  280. package/esm/icons/copy.svg.js +26 -0
  281. package/esm/icons/date.svg.js +26 -0
  282. package/esm/icons/department.svg.js +52 -0
  283. package/esm/icons/desk-empty.svg.js +73 -0
  284. package/esm/icons/dot.svg.js +36 -0
  285. package/esm/icons/down-arrow-bold.svg.js +22 -0
  286. package/esm/icons/down.svg.js +23 -0
  287. package/esm/icons/download.svg.js +24 -0
  288. package/esm/icons/drag-bar.svg.js +53 -0
  289. package/esm/icons/drag.svg.js +22 -0
  290. package/esm/icons/edit.svg.js +21 -0
  291. package/esm/icons/ellipsis-v.svg.js +21 -0
  292. package/esm/icons/enter.svg.js +20 -0
  293. package/esm/icons/exchange.svg.js +21 -0
  294. package/esm/icons/expand-alt.svg.js +21 -0
  295. package/esm/icons/fail.svg.js +31 -0
  296. package/esm/icons/file.svg.js +22 -0
  297. package/esm/icons/filter.svg.js +21 -0
  298. package/esm/icons/folder.svg.js +24 -0
  299. package/esm/icons/fullscreen.svg.js +21 -0
  300. package/esm/icons/function.svg.js +21 -0
  301. package/esm/icons/home.svg.js +21 -0
  302. package/esm/icons/if.svg.js +21 -0
  303. package/esm/icons/image.svg.js +20 -0
  304. package/esm/icons/info-circle.svg.js +21 -0
  305. package/esm/icons/info.svg.js +27 -0
  306. package/esm/icons/input-clear.svg.js +20 -0
  307. package/esm/icons/invisible.svg.js +22 -0
  308. package/esm/icons/left-arrow.svg.js +23 -0
  309. package/esm/icons/loading-outline.svg.js +21 -0
  310. package/esm/icons/location.svg.js +20 -0
  311. package/esm/icons/menu.svg.js +20 -0
  312. package/esm/icons/minus.svg.js +21 -0
  313. package/esm/icons/move.svg.js +22 -0
  314. package/esm/icons/mute.svg.js +21 -0
  315. package/esm/icons/new-edit.svg.js +22 -0
  316. package/esm/icons/pause.svg.js +21 -0
  317. package/esm/icons/pencil.svg.js +21 -0
  318. package/esm/icons/play.svg.js +20 -0
  319. package/esm/icons/plus-cicle.svg.js +20 -0
  320. package/esm/icons/plus-fine.svg.js +21 -0
  321. package/esm/icons/plus.svg.js +21 -0
  322. package/esm/icons/post.svg.js +48 -0
  323. package/esm/icons/question-mark.svg.js +26 -0
  324. package/esm/icons/question.svg.js +21 -0
  325. package/esm/icons/question2.svg.js +34 -0
  326. package/esm/icons/redo.svg.js +21 -0
  327. package/esm/icons/refresh.svg.js +21 -0
  328. package/esm/icons/reload.svg.js +21 -0
  329. package/esm/icons/remove.svg.js +21 -0
  330. package/esm/icons/retry.svg.js +24 -0
  331. package/esm/icons/right-arrow-bold.svg.js +21 -0
  332. package/esm/icons/right-arrow.svg.js +23 -0
  333. package/esm/icons/right-double-arrow.svg.js +22 -0
  334. package/esm/icons/role.svg.js +43 -0
  335. package/esm/icons/rotate-left.svg.js +22 -0
  336. package/esm/icons/rotate-right.svg.js +22 -0
  337. package/esm/icons/rotate-screen.svg.js +21 -0
  338. package/esm/icons/scale-origin.svg.js +24 -0
  339. package/esm/icons/schedule.svg.js +24 -0
  340. package/esm/icons/search.svg.js +21 -0
  341. package/esm/icons/setting.svg.js +21 -0
  342. package/esm/icons/slider-handle-icon.svg.js +22 -0
  343. package/esm/icons/sort-asc.svg.js +21 -0
  344. package/esm/icons/sort-default.svg.js +21 -0
  345. package/esm/icons/sort-desc.svg.js +21 -0
  346. package/esm/icons/star.svg.js +21 -0
  347. package/esm/icons/status-close.svg.js +23 -0
  348. package/esm/icons/steps-finsh.svg.js +22 -0
  349. package/esm/icons/sub-plus.svg.js +20 -0
  350. package/esm/icons/success.svg.js +29 -0
  351. package/esm/icons/transparent.svg.js +38 -0
  352. package/esm/icons/trash.svg.js +22 -0
  353. package/esm/icons/tree-down.svg.js +21 -0
  354. package/esm/icons/undo-normal.svg.js +25 -0
  355. package/esm/icons/undo.svg.js +21 -0
  356. package/esm/icons/unfullscreen.svg.js +21 -0
  357. package/esm/icons/upload.svg.js +21 -0
  358. package/esm/icons/user-remove.svg.js +33 -0
  359. package/esm/icons/view.svg.js +22 -0
  360. package/esm/icons/volume.svg.js +24 -0
  361. package/esm/icons/warning-mark.svg.js +22 -0
  362. package/esm/icons/warning.svg.js +21 -0
  363. package/esm/icons/window-restore.svg.js +21 -0
  364. package/esm/icons/zoom-in.svg.js +21 -0
  365. package/esm/icons/zoom-out.svg.js +21 -0
  366. package/esm/index.d.ts +16 -0
  367. package/esm/index.js +157 -0
  368. package/esm/locale/de-DE.d.ts +1 -0
  369. package/esm/locale/de-DE.js +423 -0
  370. package/esm/locale/en-US.d.ts +1 -0
  371. package/esm/locale/en-US.js +429 -0
  372. package/esm/locale/zh-CN.d.ts +1 -0
  373. package/esm/locale/zh-CN.js +438 -0
  374. package/esm/themes/ang.d.ts +3 -0
  375. package/esm/themes/ang.js +15 -0
  376. package/esm/themes/antd.d.ts +1 -0
  377. package/esm/themes/antd.js +42 -0
  378. package/esm/themes/cxd.d.ts +3 -0
  379. package/esm/themes/cxd.js +455 -0
  380. package/esm/themes/dark.d.ts +3 -0
  381. package/esm/themes/dark.js +23 -0
  382. package/esm/themes/default.d.ts +4 -0
  383. package/esm/utils/index.d.ts +2 -0
  384. package/esm/utils/smoothSignature.d.ts +86 -0
  385. package/esm/utils/vectorComputed.d.ts +20 -0
  386. package/esm/utils/vectorComputed.js +75 -0
  387. package/esm/withRemoteConfig.d.ts +2 -0
  388. package/esm/withRemoteConfig.js +7 -0
  389. package/esm/withStore.d.ts +2 -0
  390. package/esm/withStore.js +7 -0
  391. package/lib/HTMLFilterContext.d.ts +3 -0
  392. package/lib/components/AlphabetIndexer.d.ts +11 -0
  393. package/lib/components/AnchorNavSection.d.ts +2 -0
  394. package/lib/components/AutoSizer.d.ts +2 -0
  395. package/lib/components/Badge.d.ts +20 -0
  396. package/lib/components/BarCode.js +44 -0
  397. package/lib/components/CityDB.d.ts +13 -0
  398. package/lib/components/CityDB.js +3945 -0
  399. package/lib/components/CodeMirror.d.ts +29 -0
  400. package/lib/components/ColorPicker.js +267 -0
  401. package/lib/components/ConditionBuilder.d.ts +2 -0
  402. package/lib/components/DiffEditor.d.ts +21 -0
  403. package/lib/components/Form.d.ts +31 -0
  404. package/lib/components/FormulaPicker.d.ts +2 -0
  405. package/lib/components/GridNav.d.ts +53 -0
  406. package/lib/components/GridNavItem.d.ts +2 -0
  407. package/lib/components/HeadCellDropDown.d.ts +2 -0
  408. package/lib/components/HorizontalScroll.d.ts +74 -0
  409. package/lib/components/Icon.d.ts +2 -0
  410. package/lib/components/Input.d.ts +18 -0
  411. package/lib/components/InputJSONSchema.d.ts +2 -0
  412. package/lib/components/JSONSchemaEditor.d.ts +2 -0
  413. package/lib/components/Markdown.d.ts +25 -0
  414. package/lib/components/Markdown.js +76 -0
  415. package/lib/components/Menu.d.ts +2 -0
  416. package/lib/components/MobileDevTool.d.ts +12 -0
  417. package/lib/components/ModalManager.d.ts +16 -0
  418. package/lib/components/PdfViewer.js +83 -0
  419. package/lib/components/PopOverContainer.d.ts +59 -0
  420. package/lib/components/RichText.d.ts +48 -0
  421. package/lib/components/RichText.js +275 -0
  422. package/lib/components/SelectMobile.d.ts +38 -0
  423. package/lib/components/Tab.d.ts +2 -0
  424. package/lib/components/Table.d.ts +2 -0
  425. package/lib/components/Tinymce.d.ts +66 -0
  426. package/lib/components/Tinymce.js +641 -0
  427. package/lib/components/VirtualList.d.ts +2 -0
  428. package/lib/components/WithRemoteConfig.d.ts +70 -0
  429. package/lib/components/WithStore.d.ts +13 -0
  430. package/lib/components/calendar/Calendar.d.ts +83 -0
  431. package/lib/components/calendar/CalendarContainer.d.ts +10 -0
  432. package/lib/components/condition-builder/config.d.ts +36 -0
  433. package/lib/components/condition-builder/types.d.ts +116 -0
  434. package/lib/components/formula/plugin.d.ts +51 -0
  435. package/lib/components/icons.d.ts +61 -0
  436. package/lib/components/index.d.ts +138 -0
  437. package/lib/components/json-schema/Array.d.ts +3 -0
  438. package/lib/components/json-schema/Item.d.ts +5 -0
  439. package/lib/components/json-schema/Object.d.ts +5 -0
  440. package/lib/components/menu/MenuContext.d.ts +82 -0
  441. package/lib/components/schema-editor/Array.d.ts +11 -0
  442. package/lib/components/schema-editor/Common.d.ts +61 -0
  443. package/lib/components/schema-editor/Item.d.ts +8 -0
  444. package/lib/components/schema-editor/Object.d.ts +51 -0
  445. package/lib/components/table/Cell.d.ts +36 -0
  446. package/lib/components/table/ColGroup.d.ts +24 -0
  447. package/lib/components/table/Head.d.ts +45 -0
  448. package/lib/components/table/ItemActionsWrapper.d.ts +10 -0
  449. package/lib/components/table/Row.d.ts +56 -0
  450. package/lib/components/table/SummaryRow.d.ts +28 -0
  451. package/lib/components/table/util.d.ts +25 -0
  452. package/lib/components/virtual-list/AutoSizer.d.ts +19 -0
  453. package/lib/components/virtual-list/SizeAndPositionManager.d.ts +70 -0
  454. package/lib/components/virtual-list/constants.d.ts +34 -0
  455. package/lib/components/virtual-list/index.d.ts +98 -0
  456. package/lib/components/withBadge.d.ts +2 -0
  457. package/lib/helper.css +47762 -0
  458. package/lib/hooks/index.d.ts +8 -0
  459. package/lib/hooks/use-click-away.d.ts +12 -0
  460. package/lib/hooks/use-on-screen.d.ts +2 -0
  461. package/lib/hooks/use-set-state.d.ts +2 -0
  462. package/lib/hooks/use-sub-form.d.ts +4 -0
  463. package/lib/hooks/use-touch.d.ts +16 -0
  464. package/lib/hooks/use-update-effect.d.ts +3 -0
  465. package/lib/hooks/use-validation-resolver.d.ts +7 -0
  466. package/lib/index.d.ts +16 -0
  467. package/lib/index.js +28 -0
  468. package/lib/locale/de-DE.d.ts +1 -0
  469. package/lib/locale/en-US.d.ts +1 -0
  470. package/lib/locale/zh-CN.d.ts +1 -0
  471. package/lib/scss/helper.scss.js +12 -0
  472. package/lib/scss/themes/ang.scss.js +12 -0
  473. package/lib/scss/themes/antd.scss.js +12 -0
  474. package/lib/scss/themes/cxd.scss.js +12 -0
  475. package/lib/scss/themes/dark.scss.js +12 -0
  476. package/lib/scss/themes/default.scss.js +12 -0
  477. package/lib/themes/ang.css +45895 -0
  478. package/lib/themes/ang.d.ts +3 -0
  479. package/lib/themes/antd.css +45882 -0
  480. package/lib/themes/antd.d.ts +1 -0
  481. package/lib/themes/cxd.css +45871 -0
  482. package/lib/themes/cxd.d.ts +3 -0
  483. package/lib/themes/dark.css +45902 -0
  484. package/lib/themes/dark.d.ts +3 -0
  485. package/lib/themes/default.css +45871 -0
  486. package/lib/themes/default.d.ts +4 -0
  487. package/lib/utils/index.d.ts +2 -0
  488. package/lib/utils/smoothSignature.d.ts +86 -0
  489. package/lib/utils/vectorComputed.d.ts +20 -0
  490. package/lib/withRemoteConfig.d.ts +2 -0
  491. package/lib/withStore.d.ts +2 -0
  492. package/package.json +158 -0
  493. package/scss/README.md +9 -0
  494. package/scss/_components.scss +4346 -0
  495. package/scss/_functions.scss +137 -0
  496. package/scss/_mixins.scss +805 -0
  497. package/scss/_properties.scss +898 -0
  498. package/scss/_thirds.scss +12 -0
  499. package/scss/_utilities.scss +1757 -0
  500. package/scss/_variables.scss +439 -0
  501. package/scss/base/_animate.scss +84 -0
  502. package/scss/base/_common.scss +19 -0
  503. package/scss/base/_normalize.scss +376 -0
  504. package/scss/base/_reset.scss +18 -0
  505. package/scss/base/_typography.scss +79 -0
  506. package/scss/components/_alert.scss +123 -0
  507. package/scss/components/_anchor-nav.scss +158 -0
  508. package/scss/components/_app.scss +46 -0
  509. package/scss/components/_array-input.scss +107 -0
  510. package/scss/components/_audio.scss +146 -0
  511. package/scss/components/_auto-folder.scss +40 -0
  512. package/scss/components/_avatar.scss +55 -0
  513. package/scss/components/_badge.scss +145 -0
  514. package/scss/components/_barcode.scss +6 -0
  515. package/scss/components/_breadcrumb.scss +110 -0
  516. package/scss/components/_button-group.scss +165 -0
  517. package/scss/components/_button.scss +871 -0
  518. package/scss/components/_calendar.scss +442 -0
  519. package/scss/components/_card.scss +389 -0
  520. package/scss/components/_card2.scss +28 -0
  521. package/scss/components/_cards.scss +221 -0
  522. package/scss/components/_carousel.scss +292 -0
  523. package/scss/components/_cascader.scss +157 -0
  524. package/scss/components/_chart.scss +22 -0
  525. package/scss/components/_city-area.scss +37 -0
  526. package/scss/components/_code.scss +10 -0
  527. package/scss/components/_collapse-group.scss +83 -0
  528. package/scss/components/_collapse.scss +245 -0
  529. package/scss/components/_color.scss +17 -0
  530. package/scss/components/_column-toggler.scss +261 -0
  531. package/scss/components/_condition-builder.scss +521 -0
  532. package/scss/components/_context-menu.scss +204 -0
  533. package/scss/components/_copyable.scss +10 -0
  534. package/scss/components/_crud.scss +195 -0
  535. package/scss/components/_crud2.scss +345 -0
  536. package/scss/components/_debug.scss +259 -0
  537. package/scss/components/_divider.scss +81 -0
  538. package/scss/components/_drawer.scss +393 -0
  539. package/scss/components/_dropdown-context-menus.scss +27 -0
  540. package/scss/components/_dropdown.scss +159 -0
  541. package/scss/components/_each.scss +7 -0
  542. package/scss/components/_formula.scss +723 -0
  543. package/scss/components/_grid-nav.scss +128 -0
  544. package/scss/components/_horizontal-scroll.scss +51 -0
  545. package/scss/components/_icon.scss +4 -0
  546. package/scss/components/_image-gallery.scss +331 -0
  547. package/scss/components/_images.scss +650 -0
  548. package/scss/components/_input-box.scss +111 -0
  549. package/scss/components/_json-schema-editor.scss +149 -0
  550. package/scss/components/_json-schema.scss +166 -0
  551. package/scss/components/_json.scss +7 -0
  552. package/scss/components/_link.scss +22 -0
  553. package/scss/components/_list-menu.scss +114 -0
  554. package/scss/components/_list.scss +313 -0
  555. package/scss/components/_log.scss +169 -0
  556. package/scss/components/_mapping.scss +6 -0
  557. package/scss/components/_markdown.scss +266 -0
  558. package/scss/components/_menu.scss +795 -0
  559. package/scss/components/_mobile-dev-tool.scss +175 -0
  560. package/scss/components/_modal.scss +282 -0
  561. package/scss/components/_multiline-text.scss +20 -0
  562. package/scss/components/_nav.scss +45 -0
  563. package/scss/components/_overflow-tpl.scss +5 -0
  564. package/scss/components/_page.scss +198 -0
  565. package/scss/components/_pagination.scss +403 -0
  566. package/scss/components/_panel.scss +263 -0
  567. package/scss/components/_pdf_viewer.scss +47 -0
  568. package/scss/components/_picker-columns.scss +140 -0
  569. package/scss/components/_popover.scss +54 -0
  570. package/scss/components/_popoverable.scss +100 -0
  571. package/scss/components/_popup.scss +171 -0
  572. package/scss/components/_portlet.scss +51 -0
  573. package/scss/components/_print.scss +13 -0
  574. package/scss/components/_progress.scss +165 -0
  575. package/scss/components/_property.scss +47 -0
  576. package/scss/components/_pull-refresh.scss +30 -0
  577. package/scss/components/_quick-edit.scss +53 -0
  578. package/scss/components/_remark.scss +58 -0
  579. package/scss/components/_result-box.scss +380 -0
  580. package/scss/components/_search-box.scss +267 -0
  581. package/scss/components/_service.scss +3 -0
  582. package/scss/components/_shape.scss +19 -0
  583. package/scss/components/_signature.scss +98 -0
  584. package/scss/components/_slider.scss +27 -0
  585. package/scss/components/_sparkline.scss +18 -0
  586. package/scss/components/_spinner.scss +214 -0
  587. package/scss/components/_status.scss +118 -0
  588. package/scss/components/_steps.scss +481 -0
  589. package/scss/components/_table.scss +1234 -0
  590. package/scss/components/_table2.scss +1066 -0
  591. package/scss/components/_tabs.scss +1410 -0
  592. package/scss/components/_tag.scss +191 -0
  593. package/scss/components/_timeline.scss +572 -0
  594. package/scss/components/_toast.scss +342 -0
  595. package/scss/components/_tooltip.scss +340 -0
  596. package/scss/components/_tpl.scss +51 -0
  597. package/scss/components/_verificationCode.scss +33 -0
  598. package/scss/components/_video.scss +38 -0
  599. package/scss/components/_wizard.scss +287 -0
  600. package/scss/components/_wrapper.scss +26 -0
  601. package/scss/components/form/_chained-select.scss +10 -0
  602. package/scss/components/form/_checks.scss +433 -0
  603. package/scss/components/form/_city.scss +33 -0
  604. package/scss/components/form/_color.scss +148 -0
  605. package/scss/components/form/_combo.scss +360 -0
  606. package/scss/components/form/_date-range.scss +332 -0
  607. package/scss/components/form/_date.scss +807 -0
  608. package/scss/components/form/_editor.scss +139 -0
  609. package/scss/components/form/_excel.scss +150 -0
  610. package/scss/components/form/_fieldset.scss +202 -0
  611. package/scss/components/form/_file.scss +308 -0
  612. package/scss/components/form/_form.scss +936 -0
  613. package/scss/components/form/_group.scss +116 -0
  614. package/scss/components/form/_icon-picker.scss +113 -0
  615. package/scss/components/form/_icon-select.scss +245 -0
  616. package/scss/components/form/_image.scss +359 -0
  617. package/scss/components/form/_input-group.scss +213 -0
  618. package/scss/components/form/_input-table.scss +17 -0
  619. package/scss/components/form/_list.scss +225 -0
  620. package/scss/components/form/_location.scss +210 -0
  621. package/scss/components/form/_matrix.scss +7 -0
  622. package/scss/components/form/_nested-select.scss +149 -0
  623. package/scss/components/form/_number.scss +633 -0
  624. package/scss/components/form/_picker.scss +237 -0
  625. package/scss/components/form/_qr-code.scss +4 -0
  626. package/scss/components/form/_range.scss +438 -0
  627. package/scss/components/form/_rating.scss +94 -0
  628. package/scss/components/form/_repeat.scss +40 -0
  629. package/scss/components/form/_result-list.scss +98 -0
  630. package/scss/components/form/_rich-text.scss +163 -0
  631. package/scss/components/form/_select.scss +712 -0
  632. package/scss/components/form/_selection.scss +485 -0
  633. package/scss/components/form/_sub-form.scss +118 -0
  634. package/scss/components/form/_switch.scss +228 -0
  635. package/scss/components/form/_tag.scss +146 -0
  636. package/scss/components/form/_text.scss +508 -0
  637. package/scss/components/form/_textarea.scss +78 -0
  638. package/scss/components/form/_tinymce.scss +6 -0
  639. package/scss/components/form/_transfer.scss +624 -0
  640. package/scss/components/form/_tree-select.scss +47 -0
  641. package/scss/components/form/_tree.scss +458 -0
  642. package/scss/components/form/_user-select.scss +643 -0
  643. package/scss/components/react-datetime.scss +267 -0
  644. package/scss/helper/background/_background-color.md +131 -0
  645. package/scss/helper/background/_background-color.scss +214 -0
  646. package/scss/helper/border/_border-color.md +109 -0
  647. package/scss/helper/border/_border-color.scss +178 -0
  648. package/scss/helper/border/_border-radius.md +86 -0
  649. package/scss/helper/border/_border-radius.scss +152 -0
  650. package/scss/helper/border/_border-style.md +11 -0
  651. package/scss/helper/border/_border-style.scss +40 -0
  652. package/scss/helper/border/_border-width.md +31 -0
  653. package/scss/helper/border/_border-width.scss +72 -0
  654. package/scss/helper/box-alignment/_align-content.md +12 -0
  655. package/scss/helper/box-alignment/_align-content.scss +44 -0
  656. package/scss/helper/box-alignment/_align-items.md +11 -0
  657. package/scss/helper/box-alignment/_align-items.scss +41 -0
  658. package/scss/helper/box-alignment/_align-self.md +11 -0
  659. package/scss/helper/box-alignment/_align-self.scss +40 -0
  660. package/scss/helper/box-alignment/_justify-content.md +12 -0
  661. package/scss/helper/box-alignment/_justify-content.scss +44 -0
  662. package/scss/helper/box-alignment/_justify-items.md +11 -0
  663. package/scss/helper/box-alignment/_justify-items.scss +40 -0
  664. package/scss/helper/box-alignment/_justify-self.md +11 -0
  665. package/scss/helper/box-alignment/_justify-self.scss +40 -0
  666. package/scss/helper/box-alignment/_place-content.md +13 -0
  667. package/scss/helper/box-alignment/_place-content.scss +48 -0
  668. package/scss/helper/box-alignment/_place-items.md +11 -0
  669. package/scss/helper/box-alignment/_place-items.scss +40 -0
  670. package/scss/helper/box-alignment/_place-self.md +11 -0
  671. package/scss/helper/box-alignment/_place-self.scss +40 -0
  672. package/scss/helper/effect/_box-shadow.md +16 -0
  673. package/scss/helper/effect/_box-shadow.scss +74 -0
  674. package/scss/helper/effect/_opacity.md +21 -0
  675. package/scss/helper/effect/_opacity.scss +66 -0
  676. package/scss/helper/flex/_direction.md +10 -0
  677. package/scss/helper/flex/_direction.scss +41 -0
  678. package/scss/helper/flex/_flex.md +10 -0
  679. package/scss/helper/flex/_flex.scss +38 -0
  680. package/scss/helper/flex/_grow.md +8 -0
  681. package/scss/helper/flex/_grow.scss +28 -0
  682. package/scss/helper/flex/_order.md +20 -0
  683. package/scss/helper/flex/_order.scss +56 -0
  684. package/scss/helper/flex/_shrink.md +8 -0
  685. package/scss/helper/flex/_shrink.scss +27 -0
  686. package/scss/helper/flex/_wrap.md +9 -0
  687. package/scss/helper/flex/_wrap.scss +36 -0
  688. package/scss/helper/grid/_auto-columns.md +10 -0
  689. package/scss/helper/grid/_auto-columns.scss +38 -0
  690. package/scss/helper/grid/_auto-flow.md +10 -0
  691. package/scss/helper/grid/_auto-flow.scss +38 -0
  692. package/scss/helper/grid/_auto-rows.md +10 -0
  693. package/scss/helper/grid/_auto-rows.scss +38 -0
  694. package/scss/helper/grid/_column-start-end.md +48 -0
  695. package/scss/helper/grid/_column-start-end.scss +201 -0
  696. package/scss/helper/grid/_columns.md +19 -0
  697. package/scss/helper/grid/_columns.scss +74 -0
  698. package/scss/helper/grid/_gap.md +117 -0
  699. package/scss/helper/grid/_gap.scss +154 -0
  700. package/scss/helper/grid/_row-start-end.md +48 -0
  701. package/scss/helper/grid/_row-start-end.scss +201 -0
  702. package/scss/helper/grid/_rows.md +13 -0
  703. package/scss/helper/grid/_rows.scss +50 -0
  704. package/scss/helper/layout/_box-sizing.md +35 -0
  705. package/scss/helper/layout/_box-sizing.scss +51 -0
  706. package/scss/helper/layout/_clear.md +27 -0
  707. package/scss/helper/layout/_clear.scss +56 -0
  708. package/scss/helper/layout/_display.md +41 -0
  709. package/scss/helper/layout/_display.scss +82 -0
  710. package/scss/helper/layout/_float.md +47 -0
  711. package/scss/helper/layout/_float.scss +71 -0
  712. package/scss/helper/layout/_overflow.md +34 -0
  713. package/scss/helper/layout/_overflow.scss +85 -0
  714. package/scss/helper/layout/_position.md +27 -0
  715. package/scss/helper/layout/_position.scss +55 -0
  716. package/scss/helper/layout/_top-right-bottom-left.md +150 -0
  717. package/scss/helper/layout/_top-right-bottom-left.scss +292 -0
  718. package/scss/helper/layout/_visibility.md +21 -0
  719. package/scss/helper/layout/_visibility.scss +42 -0
  720. package/scss/helper/layout/_z-index.md +37 -0
  721. package/scss/helper/layout/_z-index.scss +67 -0
  722. package/scss/helper/sizing/_height.md +103 -0
  723. package/scss/helper/sizing/_height.scss +161 -0
  724. package/scss/helper/sizing/_width.md +109 -0
  725. package/scss/helper/sizing/_width.scss +174 -0
  726. package/scss/helper/spacing/_margin.md +527 -0
  727. package/scss/helper/spacing/_margin.scss +821 -0
  728. package/scss/helper/spacing/_padding.md +265 -0
  729. package/scss/helper/spacing/_padding.scss +394 -0
  730. package/scss/helper/spacing/_space-between.md +155 -0
  731. package/scss/helper/spacing/_space-between.scss +224 -0
  732. package/scss/helper/typography/_font-family.md +9 -0
  733. package/scss/helper/typography/_font-family.scss +28 -0
  734. package/scss/helper/typography/_font-size.md +19 -0
  735. package/scss/helper/typography/_font-size.scss +40 -0
  736. package/scss/helper/typography/_font-style.md +8 -0
  737. package/scss/helper/typography/_font-style.scss +31 -0
  738. package/scss/helper/typography/_font-weight.md +15 -0
  739. package/scss/helper/typography/_font-weight.scss +49 -0
  740. package/scss/helper/typography/_letter-spacing.md +12 -0
  741. package/scss/helper/typography/_letter-spacing.scss +43 -0
  742. package/scss/helper/typography/_line-height.md +20 -0
  743. package/scss/helper/typography/_line-height.scss +59 -0
  744. package/scss/helper/typography/_list-style-type.md +11 -0
  745. package/scss/helper/typography/_list-style-type.scss +43 -0
  746. package/scss/helper/typography/_text-align.md +10 -0
  747. package/scss/helper/typography/_text-align.scss +34 -0
  748. package/scss/helper/typography/_text-color.md +110 -0
  749. package/scss/helper/typography/_text-color.scss +184 -0
  750. package/scss/helper/typography/_text-decoration.md +9 -0
  751. package/scss/helper/typography/_text-decoration.scss +34 -0
  752. package/scss/helper/typography/_text-overflow.md +9 -0
  753. package/scss/helper/typography/_text-overflow.scss +40 -0
  754. package/scss/helper/typography/_text-transform.md +10 -0
  755. package/scss/helper/typography/_text-transform.scss +40 -0
  756. package/scss/helper/typography/_vertical-align.md +12 -0
  757. package/scss/helper/typography/_vertical-align.scss +44 -0
  758. package/scss/helper/typography/_whitespace.md +11 -0
  759. package/scss/helper/typography/_whitespace.scss +42 -0
  760. package/scss/helper/typography/_word-break.md +9 -0
  761. package/scss/helper/typography/_word-break.scss +36 -0
  762. package/scss/helper.scss +72 -0
  763. package/scss/layout/_aside.scss +361 -0
  764. package/scss/layout/_grid.scss +173 -0
  765. package/scss/layout/_hbox.scss +127 -0
  766. package/scss/layout/_header.scss +0 -0
  767. package/scss/layout/_layout.scss +492 -0
  768. package/scss/layout/_vbox.scss +38 -0
  769. package/scss/themes/_ang-variables.scss +224 -0
  770. package/scss/themes/_antd-variables.scss +238 -0
  771. package/scss/themes/_common.scss +157 -0
  772. package/scss/themes/_cxd-variables.scss +222 -0
  773. package/scss/themes/_dark-variables.scss +229 -0
  774. package/scss/themes/ang-ie11.scss +1 -0
  775. package/scss/themes/ang.scss +27 -0
  776. package/scss/themes/antd-ie11.scss +1 -0
  777. package/scss/themes/antd.scss +5 -0
  778. package/scss/themes/cxd-ie11.scss +1 -0
  779. package/scss/themes/cxd.scss +5 -0
  780. package/scss/themes/dark-ie11.scss +1 -0
  781. package/scss/themes/dark.scss +34 -0
  782. package/scss/themes/default.scss +2 -0
  783. package/scss/themes/extract-antd-color.py +27 -0
@@ -0,0 +1,1256 @@
1
+ /**
2
+ * amis-rev-ui v6.13.0
3
+ * Copyright 2018-2026 fex
4
+ */
5
+
6
+ import { __extends, __assign, __spreadArray, __read, __values, __rest, __decorate, __metadata } from 'tslib';
7
+ import React__default from 'react';
8
+ import { resizeSensor, eachTree, getTreeAncestors, flattenTree, flattenTreeWithLeafNodes, getTreeParent, findTreeIndex, isVisible, highlight, hasAbility, calculateHeight, autobind, themeable, localeable } from 'amis-rev-core';
9
+ import { value2array } from './Select.js';
10
+ import { Icon } from './icons.js';
11
+ import Checkbox from './Checkbox.js';
12
+ import Spinner from './Spinner.js';
13
+ import VirtualList from './virtual-list/index.js';
14
+ import TooltipWrapper from './TooltipWrapper.js';
15
+
16
+ /**
17
+ * @file Tree
18
+ * @description 树形组件
19
+ *
20
+ * 情况列举:
21
+ * 1. 选中父节点时,连带选中子节点 : autoChildren = true 前提条件
22
+ * 1.1 交互
23
+ * 1.1.1 子节点不可以取消勾选 cascade = false,
24
+ * 1.1.2 子节点可以取消勾选 cascade = true, withChildren 失效
25
+ * 1.2 数据(state.value)
26
+ * 1.2.1 只提交父节点数据 cascade = false
27
+ * 1.2.2 只提交子节点的数据 onlyChildren = true
28
+ * 1.2.3 全部数据提交 withChildren = true || cascade = true
29
+ *
30
+ * 2. 选中节点时,只选中当前节点,没有联动效果
31
+ *
32
+ * @author fex
33
+ */
34
+ var TreeSelector = /** @class */ (function (_super) {
35
+ __extends(TreeSelector, _super);
36
+ function TreeSelector(props) {
37
+ var _this = _super.call(this, props) || this;
38
+ // 展开的节点
39
+ _this.unfolded = {};
40
+ // key: child option, value: parent option;
41
+ _this.relations = new WeakMap();
42
+ _this.levels = new WeakMap();
43
+ _this.nodePaths = new WeakMap();
44
+ _this.startPoint = {
45
+ x: 0,
46
+ y: 0
47
+ };
48
+ _this.root = React__default.createRef();
49
+ _this.virtualListRef = null;
50
+ var value = value2array(props.value, {
51
+ multiple: props.multiple,
52
+ delimiter: props.delimiter,
53
+ valueField: props.valueField,
54
+ labelField: props.labelField,
55
+ options: props.options,
56
+ pathSeparator: props.pathSeparator
57
+ }, props.enableNodePath);
58
+ _this.state = {
59
+ value: value,
60
+ valueSet: new Set(value),
61
+ flattenedOptions: [],
62
+ inputValue: '',
63
+ addingParent: null,
64
+ isAdding: false,
65
+ isEditing: false,
66
+ editingItem: null,
67
+ dropIndicator: undefined,
68
+ virtualHeight: 0,
69
+ itemHeight: 0
70
+ };
71
+ _this.syncUnFolded(props, true);
72
+ return _this;
73
+ }
74
+ TreeSelector.prototype.componentDidMount = function () {
75
+ var _a, _b, _c;
76
+ var enableNodePath = this.props.enableNodePath;
77
+ // onRef只有渲染器的情况才会使用
78
+ (_b = (_a = this.props).onRef) === null || _b === void 0 ? void 0 : _b.call(_a, this);
79
+ enableNodePath && this.expandLazyLoadNodes();
80
+ var treeElement = this.root.current;
81
+ treeElement =
82
+ ((_c = treeElement === null || treeElement === void 0 ? void 0 : treeElement.parentElement) === null || _c === void 0 ? void 0 : _c.matches('.cxd-TreeControl')) &&
83
+ treeElement.parentElement.childElementCount === 1
84
+ ? treeElement.parentElement
85
+ : treeElement;
86
+ this.unSensor = resizeSensor(treeElement, this.handleVirtualHeight, false, 'height');
87
+ };
88
+ TreeSelector.prototype.componentDidUpdate = function (prevProps, prevState) {
89
+ var props = this.props;
90
+ this.state;
91
+ if (prevProps.options !== props.options) {
92
+ this.syncUnFolded(props);
93
+ }
94
+ if (prevProps.value !== props.value ||
95
+ prevProps.options !== props.options) {
96
+ var newValue = value2array(props.value, {
97
+ multiple: props.multiple,
98
+ delimiter: props.delimiter,
99
+ valueField: props.valueField,
100
+ pathSeparator: props.pathSeparator,
101
+ options: props.options,
102
+ labelField: props.labelField
103
+ }, props.enableNodePath);
104
+ // VirtualList 如果属性不变不会重新渲染
105
+ // 而value 变化会影响 renderItem 的结果,所以这里让它变一下
106
+ this.renderItem = this.renderItem.bind(this);
107
+ this.setState({
108
+ value: newValue,
109
+ valueSet: new Set(newValue)
110
+ });
111
+ }
112
+ };
113
+ TreeSelector.prototype.componentWillUnmount = function () {
114
+ // clear data
115
+ this.relations = this.levels = this.nodePaths = new WeakMap();
116
+ this.unfolded = {};
117
+ if (this.unSensor) {
118
+ this.unSensor();
119
+ delete this.unSensor;
120
+ }
121
+ };
122
+ /**
123
+ * 展开懒加载节点的父节点
124
+ */
125
+ TreeSelector.prototype.expandLazyLoadNodes = function () {
126
+ var _a = this.props, pathSeparator = _a.pathSeparator, onExpandTree = _a.onExpandTree, _b = _a.nodePath, nodePath = _b === void 0 ? [] : _b;
127
+ var nodePathArr = nodePath.map(function (path) {
128
+ return path ? path.toString().split(pathSeparator) : [];
129
+ });
130
+ onExpandTree === null || onExpandTree === void 0 ? void 0 : onExpandTree(nodePathArr);
131
+ };
132
+ TreeSelector.prototype.virtualListRefSetter = function (ref) {
133
+ this.virtualListRef = ref;
134
+ ref && this.handleVirtualHeight();
135
+ };
136
+ TreeSelector.prototype.syncUnFolded = function (props, initial) {
137
+ var expandLevel = Number(props.unfoldedLevel);
138
+ // 初始化树节点的展开状态
139
+ var unfolded = this.unfolded;
140
+ var _a = this.props, deferField = _a.deferField, foldedField = _a.foldedField, unfoldedField = _a.unfoldedField;
141
+ eachTree(props.options, function (node, index, level, paths, indexes) {
142
+ var unfoldedKey = indexes.concat(index).join('-');
143
+ if (node.children && node.children.length) {
144
+ var ret = unfolded[unfoldedKey];
145
+ if (node[deferField] &&
146
+ node.loaded &&
147
+ unfoldedField &&
148
+ node[unfoldedField] !== false) {
149
+ ret = true;
150
+ }
151
+ else if (unfoldedField &&
152
+ typeof node[unfoldedField] !== 'undefined') {
153
+ ret = !!node[unfoldedField];
154
+ }
155
+ else if (foldedField && typeof node[foldedField] !== 'undefined') {
156
+ ret = !node[foldedField];
157
+ }
158
+ else if (initial || typeof ret === 'undefined') {
159
+ // initiallyOpen 为 true 时全部展开,为 false 时根据 unfoldedLevel 控制
160
+ ret = props.initiallyOpen ? true : level < expandLevel;
161
+ }
162
+ unfolded[unfoldedKey] = ret;
163
+ }
164
+ });
165
+ this.flattenOptions(props, initial);
166
+ return unfolded;
167
+ };
168
+ TreeSelector.prototype.setFoldedOrUnfolded = function (targetLevel, isFolded) {
169
+ if (isFolded === void 0) { isFolded = false; }
170
+ var unfolded = this.unfolded;
171
+ var _a = this.props, options = _a.options, deferField = _a.deferField, onDeferLoad = _a.onDeferLoad;
172
+ eachTree(options, function (node, index, level, paths, indexes) {
173
+ var unfoldedKey = indexes.concat(index).join('-');
174
+ if (node[deferField] && !node.loaded) {
175
+ onDeferLoad === null || onDeferLoad === void 0 ? void 0 : onDeferLoad(node);
176
+ return;
177
+ }
178
+ if (node.children && node.children.length) {
179
+ var ret = isFolded ? level < targetLevel : level <= targetLevel;
180
+ unfolded[unfoldedKey] = ret;
181
+ }
182
+ });
183
+ this.flattenOptions(this.props);
184
+ };
185
+ TreeSelector.prototype.toggleUnfolded = function (node) {
186
+ var unfolded = this.unfolded;
187
+ var _a = this.props, deferField = _a.deferField, onDeferLoad = _a.onDeferLoad, unfoldedField = _a.unfoldedField;
188
+ if (node[deferField] && !node.loaded) {
189
+ onDeferLoad === null || onDeferLoad === void 0 ? void 0 : onDeferLoad(node);
190
+ return;
191
+ }
192
+ var path = this.nodePaths.get(node);
193
+ // ! hack: 在node上直接添加属性,options 在更新的时候旧的字段会保留
194
+ if (node[deferField] && node.loaded) {
195
+ node[unfoldedField] = !unfolded[path];
196
+ }
197
+ unfolded[path] = !unfolded[path];
198
+ this.flattenOptions();
199
+ };
200
+ TreeSelector.prototype.isUnfolded = function (node) {
201
+ var unfolded = this.unfolded;
202
+ var parent = this.relations.get(node);
203
+ var path = this.nodePaths.get(node);
204
+ if (parent) {
205
+ return !!unfolded[path] && this.isUnfolded(parent);
206
+ }
207
+ return !!unfolded[path];
208
+ };
209
+ TreeSelector.prototype.clearSelect = function () {
210
+ var _this = this;
211
+ this.setState({
212
+ value: []
213
+ }, function () {
214
+ var _a = _this.props, joinValues = _a.joinValues, rootValue = _a.rootValue, onChange = _a.onChange;
215
+ onChange(joinValues ? rootValue : []);
216
+ });
217
+ };
218
+ /**
219
+ * enableNodePath为true时,将label和value转换成node path格式
220
+ */
221
+ TreeSelector.prototype.transform2NodePath = function (value) {
222
+ var _a = this.props, multiple = _a.multiple, options = _a.options, valueField = _a.valueField, labelField = _a.labelField, joinValues = _a.joinValues, extractValue = _a.extractValue, pathSeparator = _a.pathSeparator, delimiter = _a.delimiter;
223
+ var nodesValuePath = [];
224
+ var selectedNodes = Array.isArray(value) ? value.concat() : [value];
225
+ var selectedNodesPath = selectedNodes.map(function (node) {
226
+ var _a, _b;
227
+ var _c;
228
+ var nodePath = (_c = getTreeAncestors(options, node, true)) === null || _c === void 0 ? void 0 : _c.reduce(function (acc, node) {
229
+ acc[labelField].push(node[labelField]);
230
+ acc[valueField].push(node[valueField]);
231
+ return acc;
232
+ }, (_a = {}, _a[labelField] = [], _a[valueField] = [], _a));
233
+ var nodeValuePath = nodePath[valueField].join(pathSeparator);
234
+ nodesValuePath.push(nodeValuePath);
235
+ return __assign(__assign({}, node), (_b = {}, _b[labelField] = nodePath[labelField].join(pathSeparator), _b[valueField] = nodeValuePath, _b));
236
+ });
237
+ if (multiple) {
238
+ return joinValues
239
+ ? nodesValuePath.join(delimiter)
240
+ : extractValue
241
+ ? nodesValuePath
242
+ : selectedNodesPath;
243
+ }
244
+ else {
245
+ return joinValues || extractValue
246
+ ? selectedNodesPath[0][valueField]
247
+ : selectedNodesPath[0];
248
+ }
249
+ };
250
+ TreeSelector.prototype.handleSelect = function (node, value) {
251
+ var _this = this;
252
+ var _a = this.props, joinValues = _a.joinValues, valueField = _a.valueField, deferField = _a.deferField, onChange = _a.onChange, enableNodePath = _a.enableNodePath, onlyLeaf = _a.onlyLeaf;
253
+ if (node[valueField] === undefined) {
254
+ if (node[deferField] && !node.loaded) {
255
+ this.toggleUnfolded(node);
256
+ }
257
+ return;
258
+ }
259
+ if (onlyLeaf && Array.isArray(node.children) && node.children.length) {
260
+ return;
261
+ }
262
+ this.setState({
263
+ value: [node]
264
+ }, function () {
265
+ onChange(enableNodePath
266
+ ? _this.transform2NodePath(node)
267
+ : joinValues
268
+ ? node[valueField]
269
+ : node);
270
+ });
271
+ };
272
+ TreeSelector.prototype.handleItemClick = function (node, checked) {
273
+ var _a;
274
+ var _b = this.props, onHandleNodeClick = _b.onHandleNodeClick, multiple = _b.multiple, _c = _b.nodeBehavior, nodeBehavior = _c === void 0 ? ['check'] : _c;
275
+ onHandleNodeClick && onHandleNodeClick(node);
276
+ if ((nodeBehavior === null || nodeBehavior === void 0 ? void 0 : nodeBehavior.includes('unfold')) && ((_a = node.children) === null || _a === void 0 ? void 0 : _a.length)) {
277
+ this.toggleUnfolded(node);
278
+ }
279
+ if (nodeBehavior === null || nodeBehavior === void 0 ? void 0 : nodeBehavior.includes('check')) {
280
+ multiple ? this.handleCheck(node, !checked) : this.handleSelect(node);
281
+ }
282
+ };
283
+ TreeSelector.prototype.handleCheck = function (item, checked) {
284
+ var _this = this;
285
+ // TODO: 重新梳理这里的逻辑
286
+ var props = this.props;
287
+ var value = this.state.valueSet;
288
+ var onlyChildren = props.onlyChildren, withChildren = props.withChildren, cascade = props.cascade, autoCheckChildren = props.autoCheckChildren, autoCancelParent = props.autoCancelParent, valueField = props.valueField;
289
+ if (checked) {
290
+ if (!value.has(item)) {
291
+ value.add(item);
292
+ }
293
+ // cascade 为 true 表示父节点跟子节点没有级联关系。
294
+ if (autoCheckChildren) {
295
+ var children = item.children ? __spreadArray([], __read(item.children), false) : [];
296
+ var hasDisabled = flattenTree(children).some(function (item) { return item === null || item === void 0 ? void 0 : item.disabled; });
297
+ if (onlyChildren) {
298
+ // 这个 isAllChecked 主要是判断如果有disabled的item项,这时父节点还是选中的话,针对性的处理逻辑
299
+ var isAllChecked = flattenTreeWithLeafNodes(children)
300
+ .filter(function (item) { return !(item === null || item === void 0 ? void 0 : item.disabled); })
301
+ .every(function (v) { return value.has(v); });
302
+ // 父级选中的时候,子节点也都选中,但是自己不选中
303
+ if (value.has(item) && children.length) {
304
+ value.delete(item);
305
+ }
306
+ while (children.length) {
307
+ var child = children.shift();
308
+ if (child.children && child.children.length) {
309
+ children.push.apply(children, child.children);
310
+ continue;
311
+ }
312
+ if (hasDisabled && isAllChecked) {
313
+ if (value.has(child) &&
314
+ child.value !== 'undefined' &&
315
+ !(child === null || child === void 0 ? void 0 : child.disabled)) {
316
+ value.delete(child);
317
+ }
318
+ continue;
319
+ }
320
+ if (!value.has(child) &&
321
+ child.value !== 'undefined' &&
322
+ !(child === null || child === void 0 ? void 0 : child.disabled)) {
323
+ value.add(child);
324
+ }
325
+ }
326
+ }
327
+ else {
328
+ // 这个 isAllChecked 主要是判断如果有disabled的item项,这时父节点还是选中的话,针对性的处理逻辑
329
+ var isAllChecked = flattenTree(children)
330
+ .filter(function (item) { return !(item === null || item === void 0 ? void 0 : item.disabled); })
331
+ .every(function (v) { return value.has(v); });
332
+ // 只要父节点选择了,子节点就不需要了,全部去掉勾选. withChildren时相反
333
+ while (children.length) {
334
+ var child = children.shift();
335
+ if (child === null || child === void 0 ? void 0 : child.disabled) {
336
+ continue;
337
+ }
338
+ // 判断下下面是否有禁用项
339
+ if (!hasDisabled) {
340
+ if (value.has(child)) {
341
+ value.delete(child);
342
+ }
343
+ if (withChildren || cascade) {
344
+ value.add(child);
345
+ }
346
+ }
347
+ else {
348
+ isAllChecked ? value.delete(child) : value.add(child);
349
+ }
350
+ if (child.children && child.children.length) {
351
+ children.push.apply(children, child.children);
352
+ }
353
+ }
354
+ var toCheck = item;
355
+ while (true) {
356
+ var parent_1 = getTreeParent(props.options, toCheck);
357
+ // 判断 parent 节点是否已经勾选,避免重复值
358
+ if ((parent_1 === null || parent_1 === void 0 ? void 0 : parent_1[valueField || 'value']) && !value.has(parent_1)) {
359
+ // 如果所有孩子节点都勾选了,应该自动勾选父级。
360
+ if (parent_1.children.every(function (child) { return value.has(child); })) {
361
+ if (!cascade && !withChildren) {
362
+ parent_1.children.forEach(function (child) {
363
+ if (value.has(child)) {
364
+ value.delete(child);
365
+ }
366
+ });
367
+ }
368
+ value.add(parent_1);
369
+ toCheck = parent_1;
370
+ continue;
371
+ }
372
+ }
373
+ break;
374
+ }
375
+ }
376
+ }
377
+ }
378
+ else {
379
+ value.has(item) && value.delete(item);
380
+ if (autoCheckChildren) {
381
+ if (cascade || withChildren || onlyChildren) {
382
+ var children = item.children ? __spreadArray([], __read(item.children), false) : [];
383
+ while (children.length) {
384
+ var child = children.shift();
385
+ if (value.has(child) && !(child === null || child === void 0 ? void 0 : child.disabled)) {
386
+ value.delete(child);
387
+ }
388
+ if (child.children && child.children.length) {
389
+ children.push.apply(children, child.children);
390
+ }
391
+ }
392
+ }
393
+ }
394
+ if (autoCancelParent && cascade) {
395
+ var toCheck = item;
396
+ while (true) {
397
+ var parent_2 = getTreeParent(props.options, toCheck);
398
+ //判断 parent 节点是否已经勾选
399
+ if (value.has(parent_2)) {
400
+ //当有一个子节点取消时要去掉父节点,也要去掉父节点的父节点,直至最外层
401
+ value.delete(parent_2);
402
+ toCheck = parent_2;
403
+ continue;
404
+ }
405
+ break;
406
+ }
407
+ }
408
+ }
409
+ this.setState({
410
+ value: __spreadArray([], __read(value), false)
411
+ }, function () { return _this.fireChange(__spreadArray([], __read(value), false)); });
412
+ };
413
+ TreeSelector.prototype.fireChange = function (value) {
414
+ var _a = this.props, joinValues = _a.joinValues, extractValue = _a.extractValue, valueField = _a.valueField, delimiter = _a.delimiter, onChange = _a.onChange, enableNodePath = _a.enableNodePath;
415
+ onChange(enableNodePath
416
+ ? this.transform2NodePath(value)
417
+ : joinValues
418
+ ? value.map(function (item) { return item[valueField]; }).join(delimiter)
419
+ : extractValue
420
+ ? value.map(function (item) { return item[valueField]; })
421
+ : value);
422
+ };
423
+ TreeSelector.prototype.handleAdd = function (parent) {
424
+ var _this = this;
425
+ if (parent === void 0) { parent = null; }
426
+ var _a = this.props, bultinCUD = _a.bultinCUD, onAdd = _a.onAdd, options = _a.options;
427
+ if (!bultinCUD) {
428
+ var idxes = findTreeIndex(options, function (item) { return item === parent; }) || [];
429
+ return onAdd && onAdd(idxes.concat(0));
430
+ }
431
+ else {
432
+ this.setState({
433
+ isEditing: false,
434
+ isAdding: true,
435
+ addingParent: parent
436
+ }, function () {
437
+ var e_1, _a;
438
+ if (!parent) {
439
+ return;
440
+ }
441
+ var result = [];
442
+ try {
443
+ for (var _b = __values(_this.state.flattenedOptions), _c = _b.next(); !_c.done; _c = _b.next()) {
444
+ var option = _c.value;
445
+ result.push(option);
446
+ if (option === parent) {
447
+ var insert = { isAdding: true };
448
+ _this.levels.set(insert, (_this.levels.get(option) || 0) + 1);
449
+ result.push(insert);
450
+ }
451
+ }
452
+ }
453
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
454
+ finally {
455
+ try {
456
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
457
+ }
458
+ finally { if (e_1) throw e_1.error; }
459
+ }
460
+ _this.setState({ flattenedOptions: result });
461
+ });
462
+ }
463
+ };
464
+ TreeSelector.prototype.handleEdit = function (item) {
465
+ var _a = this.props, bultinCUD = _a.bultinCUD, onEdit = _a.onEdit, labelField = _a.labelField; _a.options;
466
+ if (!bultinCUD) {
467
+ onEdit === null || onEdit === void 0 ? void 0 : onEdit(item);
468
+ }
469
+ else {
470
+ this.setState({
471
+ isEditing: true,
472
+ isAdding: false,
473
+ editingItem: item,
474
+ inputValue: item[labelField]
475
+ });
476
+ }
477
+ };
478
+ TreeSelector.prototype.handleRemove = function (item) {
479
+ var onDelete = this.props.onDelete;
480
+ onDelete && onDelete(item);
481
+ };
482
+ TreeSelector.prototype.handleInputChange = function (e) {
483
+ this.setState({
484
+ inputValue: e.currentTarget.value
485
+ });
486
+ };
487
+ TreeSelector.prototype.handleConfirm = function () {
488
+ var _a = this.state, value = _a.inputValue, isAdding = _a.isAdding, addingParent = _a.addingParent, editingItem = _a.editingItem, isEditing = _a.isEditing;
489
+ if (!value) {
490
+ return;
491
+ }
492
+ var _b = this.props, labelField = _b.labelField, onAdd = _b.onAdd, options = _b.options, onEdit = _b.onEdit;
493
+ this.setState({
494
+ inputValue: '',
495
+ isAdding: false,
496
+ isEditing: false
497
+ }, function () {
498
+ var _a, _b;
499
+ if (isAdding && onAdd) {
500
+ var idxes = (addingParent &&
501
+ findTreeIndex(options, function (item) { return item === addingParent; })) ||
502
+ [];
503
+ onAdd(idxes.concat(0), (_a = {}, _a[labelField] = value, _a), true);
504
+ }
505
+ else if (isEditing && onEdit) {
506
+ onEdit(__assign(__assign({}, editingItem), (_b = {}, _b[labelField] = value, _b)), editingItem, true);
507
+ }
508
+ });
509
+ };
510
+ TreeSelector.prototype.handleCancel = function () {
511
+ var flattenedOptions = this.state.flattenedOptions;
512
+ var flattenedOptionsWithoutAdding = flattenedOptions.filter(function (item) { return !item.isAdding; });
513
+ this.setState({
514
+ inputValue: '',
515
+ isAdding: false,
516
+ isEditing: false,
517
+ flattenedOptions: flattenedOptionsWithoutAdding
518
+ });
519
+ };
520
+ TreeSelector.prototype.valueToString = function (value) {
521
+ return typeof value === 'undefined' || value === null
522
+ ? ''
523
+ : typeof value === 'string'
524
+ ? value
525
+ : value instanceof Date
526
+ ? value.toISOString()
527
+ : JSON.stringify(value);
528
+ };
529
+ TreeSelector.prototype.renderInput = function (prfix, testIdBuilder) {
530
+ var _a;
531
+ if (prfix === void 0) { prfix = null; }
532
+ var _b = this.props, cx = _b.classnames, mobileUI = _b.mobileUI, __ = _b.translate, editMaxLength = _b.editMaxLength, createMaxLength = _b.createMaxLength;
533
+ var _c = this.state, inputValue = _c.inputValue, isEditing = _c.isEditing;
534
+ var maxLength = isEditing ? editMaxLength : createMaxLength;
535
+ var showCounter = maxLength ? true : false;
536
+ return (React__default.createElement("div", { className: cx('Tree-itemLabel', {
537
+ 'is-mobile': mobileUI
538
+ }) },
539
+ React__default.createElement("div", { className: cx('Tree-itemInput', {
540
+ 'is-mobile': mobileUI
541
+ }) },
542
+ prfix,
543
+ React__default.createElement("div", { className: cx('TextControl-input') },
544
+ React__default.createElement("input", __assign({ onChange: this.handleInputChange, value: inputValue, maxLength: maxLength, placeholder: __('placeholder.enter') }, testIdBuilder === null || testIdBuilder === void 0 ? void 0 : testIdBuilder.getChild('input').getTestId())),
545
+ showCounter ? (React__default.createElement("span", { className: cx('Tree-counter') }, "".concat((_a = this.valueToString(inputValue)) === null || _a === void 0 ? void 0 : _a.length).concat(typeof maxLength === 'number' && maxLength
546
+ ? "/".concat(maxLength)
547
+ : ''))) : null),
548
+ React__default.createElement("a", __assign({ "data-tooltip": __('cancel'), onClick: this.handleCancel }, testIdBuilder === null || testIdBuilder === void 0 ? void 0 : testIdBuilder.getChild('cancel').getTestId()),
549
+ React__default.createElement(Icon, { icon: "close", className: "icon" })),
550
+ React__default.createElement("a", __assign({ "data-tooltip": __('confirm'), onClick: this.handleConfirm }, testIdBuilder === null || testIdBuilder === void 0 ? void 0 : testIdBuilder.getChild('confirm').getTestId()),
551
+ React__default.createElement(Icon, { icon: "check", className: "icon" })))));
552
+ };
553
+ TreeSelector.prototype.getOffsetPosition = function (element) {
554
+ var left = 0;
555
+ var top = 0;
556
+ while (element.offsetParent) {
557
+ left += element.offsetLeft;
558
+ top += element.offsetTop;
559
+ element = element.offsetParent;
560
+ }
561
+ return { left: left, top: top };
562
+ };
563
+ TreeSelector.prototype.getDropInfo = function (e, node) {
564
+ var _a;
565
+ var rect = e.currentTarget.getBoundingClientRect();
566
+ var dragNode = this.dragNode;
567
+ var deltaX = Math.min(50, rect.width * 0.3);
568
+ var gap = ((_a = node === null || node === void 0 ? void 0 : node.children) === null || _a === void 0 ? void 0 : _a.length) ? 0 : 16;
569
+ // 计算相对位置
570
+ var offset = this.getOffsetPosition(this.root.current);
571
+ var targetOffset = this.getOffsetPosition(e.currentTarget);
572
+ var left = targetOffset.left - offset.left;
573
+ var top = targetOffset.top - offset.top;
574
+ var clientX = e.clientX, clientY = e.clientY;
575
+ var position = clientY >= rect.top + rect.height / 2 ? 'bottom' : 'top';
576
+ var indicator;
577
+ if (position === 'bottom' && clientX >= this.startPoint.x + deltaX) {
578
+ position = 'self';
579
+ indicator = {
580
+ top: top,
581
+ left: left,
582
+ width: rect.width,
583
+ height: rect.height
584
+ };
585
+ }
586
+ else {
587
+ indicator = {
588
+ top: position === 'bottom' ? top + rect.height : top,
589
+ left: left + gap,
590
+ width: rect.width - gap
591
+ };
592
+ }
593
+ return {
594
+ node: node,
595
+ dragNode: dragNode,
596
+ position: position,
597
+ indicator: indicator
598
+ };
599
+ };
600
+ TreeSelector.prototype.updateDropIndicator = function (e, node) {
601
+ // const gap = node?.children?.length ? 0 : 16;
602
+ this.dropInfo = this.getDropInfo(e, node);
603
+ var _a = this.dropInfo, dragNode = _a.dragNode, indicator = _a.indicator;
604
+ if (node === dragNode) {
605
+ this.setState({ dropIndicator: undefined });
606
+ return;
607
+ }
608
+ this.setState({
609
+ dropIndicator: indicator
610
+ });
611
+ };
612
+ TreeSelector.prototype.onDragStart = function (node) {
613
+ var _this = this;
614
+ var draggable = this.props.draggable;
615
+ return function (e) {
616
+ var _a;
617
+ if (draggable) {
618
+ e.dataTransfer.effectAllowed = 'copyMove';
619
+ _this.dragNode = node;
620
+ _this.dropInfo = null;
621
+ _this.startPoint = {
622
+ x: e.clientX,
623
+ y: e.clientY
624
+ };
625
+ if ((_a = node === null || node === void 0 ? void 0 : node.children) === null || _a === void 0 ? void 0 : _a.length) {
626
+ var path = _this.nodePaths.get(node);
627
+ _this.unfolded[path] = false;
628
+ _this.flattenOptions();
629
+ }
630
+ }
631
+ else {
632
+ _this.dragNode = null;
633
+ _this.dropInfo = null;
634
+ }
635
+ e.stopPropagation();
636
+ };
637
+ };
638
+ TreeSelector.prototype.onDragOver = function (node) {
639
+ var _this = this;
640
+ return function (e) {
641
+ if (!_this.dragNode) {
642
+ return;
643
+ }
644
+ _this.updateDropIndicator(e, node);
645
+ e.preventDefault();
646
+ };
647
+ };
648
+ TreeSelector.prototype.onDragEnd = function (dragNode) {
649
+ var _this = this;
650
+ return function (e) {
651
+ var _a, _b, _c;
652
+ _this.setState({
653
+ dropIndicator: undefined
654
+ });
655
+ var node = (_a = _this.dropInfo) === null || _a === void 0 ? void 0 : _a.node;
656
+ if (!_this.dropInfo || !node || dragNode === node) {
657
+ return;
658
+ }
659
+ (_c = (_b = _this.props).onMove) === null || _c === void 0 ? void 0 : _c.call(_b, _this.dropInfo);
660
+ _this.dragNode = null;
661
+ _this.dropInfo = null;
662
+ e.preventDefault();
663
+ };
664
+ };
665
+ /**
666
+ * 将树形接口转换为平铺结构,以支持虚拟列表
667
+ * TODO: this.unfolded => reaction 更加合理
668
+ */
669
+ TreeSelector.prototype.flattenOptions = function (props, initial) {
670
+ var _this = this;
671
+ var flattenedOptions = [];
672
+ eachTree((props === null || props === void 0 ? void 0 : props.options) || this.props.options, function (item, index, level, paths, indexes) {
673
+ var parent = paths[paths.length - 1];
674
+ if (!isVisible(item)) {
675
+ return;
676
+ }
677
+ _this.levels.set(item, level);
678
+ _this.nodePaths.set(item, indexes.concat(index).join('-'));
679
+ parent && _this.relations.set(item, parent);
680
+ if (paths.length === 0) {
681
+ // 父节点
682
+ flattenedOptions.push(item);
683
+ }
684
+ else if (_this.isUnfolded(parent)) {
685
+ // 父节点是展开的状态
686
+ flattenedOptions.push(item);
687
+ }
688
+ });
689
+ if (initial) {
690
+ // 初始化
691
+ this.state = __assign(__assign({}, this.state), { flattenedOptions: flattenedOptions });
692
+ }
693
+ else {
694
+ this.setState({
695
+ flattenedOptions: flattenedOptions
696
+ });
697
+ }
698
+ };
699
+ /**
700
+ * 判断父元素是否勾选
701
+ * TODO: 递归可能需要优化
702
+ */
703
+ TreeSelector.prototype.isParentChecked = function (item) {
704
+ if (!item || !this.relations.get(item)) {
705
+ return false;
706
+ }
707
+ var valueSet = this.state.valueSet;
708
+ var currentItem = item;
709
+ while (currentItem) {
710
+ var itemParent = this.relations.get(currentItem);
711
+ if (!itemParent) {
712
+ return false;
713
+ }
714
+ if (valueSet.has(itemParent)) {
715
+ return true;
716
+ }
717
+ currentItem = itemParent;
718
+ }
719
+ return false;
720
+ };
721
+ /**
722
+ * 判断 子元素 是否全部选中
723
+ */
724
+ TreeSelector.prototype.isItemChildrenChecked = function (item) {
725
+ var _this = this;
726
+ if (!item || !item.children) {
727
+ return true;
728
+ }
729
+ return !item.children.some(function (child) { return !_this.isItemChecked(child); });
730
+ };
731
+ /**
732
+ * 判断子元素 部分勾选
733
+ */
734
+ TreeSelector.prototype.isItemChildrenPartialChecked = function (item, checked) {
735
+ var e_2, _a;
736
+ if (!item || !item.children || checked) {
737
+ return false;
738
+ }
739
+ var checkedLength = 0;
740
+ var partialChildrenLength = 0;
741
+ try {
742
+ for (var _b = __values(item.children), _c = _b.next(); !_c.done; _c = _b.next()) {
743
+ var child = _c.value;
744
+ if (this.isItemChecked(child)) {
745
+ checkedLength++;
746
+ }
747
+ else if (this.isItemChildrenPartialChecked(child, false)) {
748
+ partialChildrenLength++;
749
+ }
750
+ }
751
+ }
752
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
753
+ finally {
754
+ try {
755
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
756
+ }
757
+ finally { if (e_2) throw e_2.error; }
758
+ }
759
+ return checkedLength !== 0 || partialChildrenLength !== 0;
760
+ };
761
+ /**
762
+ * 判断元素是否选中:checked
763
+ */
764
+ TreeSelector.prototype.isItemChecked = function (item) {
765
+ var _a;
766
+ if (!item) {
767
+ return false;
768
+ }
769
+ var _b = this.props, autoCheckChildren = _b.autoCheckChildren, onlyChildren = _b.onlyChildren, multiple = _b.multiple, withChildren = _b.withChildren, cascade = _b.cascade;
770
+ var valueSet = this.state.valueSet;
771
+ var checked = valueSet.has(item);
772
+ if (checked) {
773
+ return true;
774
+ }
775
+ if ((_a = item.children) === null || _a === void 0 ? void 0 : _a.length) {
776
+ if (onlyChildren && autoCheckChildren) {
777
+ if (this.isItemChildrenChecked(item)) {
778
+ // 当前元素没有在 value 中,但是子组件全部勾选了
779
+ return true;
780
+ }
781
+ }
782
+ }
783
+ var itemParent = this.relations.get(item);
784
+ if (itemParent && multiple && autoCheckChildren) {
785
+ // 当前节点为子节点
786
+ if (withChildren || cascade) {
787
+ return false;
788
+ }
789
+ return this.isParentChecked(item);
790
+ }
791
+ // 判断父组件是否勾选
792
+ return false;
793
+ };
794
+ /**
795
+ * item 是否 disabled 状态
796
+ * props.disabled === true return;
797
+ *
798
+ */
799
+ TreeSelector.prototype.isItemDisabled = function (item, checked) {
800
+ var _a = this.props, disabledField = _a.disabledField, disabled = _a.disabled, autoCheckChildren = _a.autoCheckChildren, valueField = _a.valueField, multiple = _a.multiple, maxLength = _a.maxLength, minLength = _a.minLength, cascade = _a.cascade, onlyChildren = _a.onlyChildren;
801
+ var value = this.state.value;
802
+ var selfDisabled = item[disabledField];
803
+ var nodeDisabled = !!disabled ||
804
+ selfDisabled ||
805
+ (multiple && !autoCheckChildren && !item[valueField]);
806
+ if (nodeDisabled) {
807
+ return true;
808
+ }
809
+ if ((maxLength && !checked && value.length >= maxLength) ||
810
+ (minLength && checked && value.length <= minLength)) {
811
+ return true;
812
+ }
813
+ var itemParent = this.relations.get(item);
814
+ if (autoCheckChildren && multiple && checked && itemParent) {
815
+ if (!this.isItemChecked(itemParent)) {
816
+ return false;
817
+ }
818
+ // 子节点
819
+ if (onlyChildren) {
820
+ return false;
821
+ }
822
+ return !cascade;
823
+ }
824
+ return false;
825
+ };
826
+ TreeSelector.prototype.renderItem = function (_a) {
827
+ var _this = this;
828
+ var index = _a.index, style = _a.style, rest = __rest(_a, ["index", "style"]);
829
+ var _b = this.props, itemClassName = _b.itemClassName, showIcon = _b.showIcon, showRadio = _b.showRadio, multiple = _b.multiple, labelField = _b.labelField, iconField = _b.iconField, deferField = _b.deferField, cascade = _b.cascade, cx = _b.classnames, highlightTxt = _b.highlightTxt, creatable = _b.creatable, editable = _b.editable, removable = _b.removable, createTip = _b.createTip, editTip = _b.editTip, removeTip = _b.removeTip, __ = _b.translate, itemRender = _b.itemRender, draggable = _b.draggable, loadingConfig = _b.loadingConfig, enableDefaultIcon = _b.enableDefaultIcon, valueField = _b.valueField, mobileUI = _b.mobileUI, testIdBuilder = _b.testIdBuilder, itemActionsRender = _b.itemActionsRender, actionClassName = _b.actionClassName;
830
+ var item = this.state.flattenedOptions[index];
831
+ if (!item) {
832
+ return null;
833
+ }
834
+ var _c = this.state, isAdding = _c.isAdding, editingItem = _c.editingItem, isEditing = _c.isEditing;
835
+ var checked = this.isItemChecked(item);
836
+ var disabled = this.isItemDisabled(item, checked);
837
+ var partial = this.isItemChildrenPartialChecked(item, checked);
838
+ var checkedInValue = !!~this.state.value.indexOf(item);
839
+ var itemTestBuilder = testIdBuilder === null || testIdBuilder === void 0 ? void 0 : testIdBuilder.getChild("item-".concat(item[valueField] || item[labelField] || index));
840
+ var checkbox = multiple ? (React__default.createElement(Checkbox, { size: "sm", disabled: disabled, checked: checked || partial, partial: partial, onChange: this.handleCheck.bind(this, item, !checked), testIdBuilder: itemTestBuilder === null || itemTestBuilder === void 0 ? void 0 : itemTestBuilder.getChild('chekbx') })) : showRadio ? (React__default.createElement(Checkbox, { size: "sm", disabled: disabled, checked: checked, onChange: this.handleSelect.bind(this, item), testIdBuilder: itemTestBuilder === null || itemTestBuilder === void 0 ? void 0 : itemTestBuilder.getChild('chekbx') })) : null;
841
+ var isLeaf = (!item.children || !item.children.length) && !item.placeholder;
842
+ var iconValue = item[iconField] ||
843
+ (enableDefaultIcon !== false
844
+ ? (Array.isArray(item.children) && item.children.length) ||
845
+ item[deferField]
846
+ ? 'folder'
847
+ : 'file'
848
+ : false);
849
+ var level = this.levels.has(item) ? this.levels.get(item) - 1 : 0;
850
+ var body = null;
851
+ if (isEditing && editingItem === item) {
852
+ body = this.renderInput(checkbox, itemTestBuilder === null || itemTestBuilder === void 0 ? void 0 : itemTestBuilder.getChild('edit'));
853
+ }
854
+ else if (item.isAdding) {
855
+ body = this.renderInput(React__default.createElement("span", { className: cx('Tree-itemArrowPlaceholder') }), itemTestBuilder === null || itemTestBuilder === void 0 ? void 0 : itemTestBuilder.getChild('add'));
856
+ }
857
+ else {
858
+ var isFolded = !this.isUnfolded(item);
859
+ body = (React__default.createElement("div", { className: cx('Tree-itemLabel', {
860
+ 'is-children-checked': multiple &&
861
+ !cascade &&
862
+ this.isItemChildrenChecked(item) &&
863
+ !disabled,
864
+ 'is-checked': checkedInValue,
865
+ 'is-disabled': disabled
866
+ }), draggable: draggable, onDragStart: this.onDragStart(item), onDragOver: this.onDragOver(item), onDragEnd: this.onDragEnd(item) },
867
+ draggable && (React__default.createElement("a", __assign({ className: cx('Tree-itemDrager drag-bar') }, itemTestBuilder === null || itemTestBuilder === void 0 ? void 0 : itemTestBuilder.getChild('drag-bar').getTestId()),
868
+ React__default.createElement(Icon, { icon: "drag-bar", className: "icon" }))),
869
+ item.loading ? (React__default.createElement(Spinner, { size: "sm", show: true, icon: "reload", spinnerClassName: cx('Tree-spinner'), loadingConfig: loadingConfig })) : !isLeaf || (item[deferField] && !item.loaded) ? (React__default.createElement("div", __assign({ onClick: function () { return _this.toggleUnfolded(item); }, className: cx('Tree-itemArrow', {
870
+ 'is-folded': isFolded
871
+ }) }, itemTestBuilder === null || itemTestBuilder === void 0 ? void 0 : itemTestBuilder.getChild(isFolded ? 'open' : 'fold').getTestId()),
872
+ React__default.createElement(Icon, { icon: "down-arrow-bold", className: "icon" }))) : (React__default.createElement("span", { className: cx('Tree-itemArrowPlaceholder') })),
873
+ checkbox,
874
+ React__default.createElement("div", __assign({ className: cx('Tree-itemLabel-item', { 'is-mobile': mobileUI }) }, itemTestBuilder === null || itemTestBuilder === void 0 ? void 0 : itemTestBuilder.getChild('content').getTestId(), { onClick: function () { return !disabled && _this.handleItemClick(item, checked); } }),
875
+ showIcon ? (React__default.createElement("i", { className: cx("Tree-itemIcon ".concat((Array.isArray(item.children) && item.children.length) ||
876
+ item[deferField]
877
+ ? 'Tree-folderIcon'
878
+ : 'Tree-leafIcon')) }, iconValue ? React__default.createElement(Icon, { icon: iconValue, className: "icon" }) : null)) : null,
879
+ React__default.createElement("span", __assign({ className: cx('Tree-itemText'), title: item[labelField] }, itemTestBuilder === null || itemTestBuilder === void 0 ? void 0 : itemTestBuilder.getChild('text').getTestId()), itemRender
880
+ ? itemRender(item, {
881
+ index: index,
882
+ multiple: multiple,
883
+ checked: checked,
884
+ labelField: labelField,
885
+ onChange: function () { return _this.handleCheck(item, !checked); },
886
+ disabled: disabled || item.disabled,
887
+ classnames: cx
888
+ })
889
+ : highlightTxt
890
+ ? highlight("".concat(item[labelField]), highlightTxt)
891
+ : "".concat(item[labelField])),
892
+ !disabled && !isAdding && !isEditing ? (React__default.createElement("div", { className: cx('Tree-item-icons', actionClassName), onClick: function (e) { return e.stopPropagation(); } },
893
+ creatable &&
894
+ !(item[deferField] && !item.loaded) &&
895
+ hasAbility(item, 'creatable') ? (React__default.createElement(TooltipWrapper, { placement: 'bottom', tooltip: __(createTip), trigger: 'hover', tooltipTheme: "dark" },
896
+ React__default.createElement("a", __assign({ onClick: this.handleAdd.bind(this, item) }, itemTestBuilder === null || itemTestBuilder === void 0 ? void 0 : itemTestBuilder.getChild('add').getTestId()),
897
+ React__default.createElement(Icon, { icon: "plus", className: "icon" })))) : null,
898
+ removable && hasAbility(item, 'removable') ? (React__default.createElement(TooltipWrapper, { placement: 'bottom', tooltip: __(removeTip), trigger: 'hover', tooltipTheme: "dark" },
899
+ React__default.createElement("a", __assign({ onClick: this.handleRemove.bind(this, item) }, itemTestBuilder === null || itemTestBuilder === void 0 ? void 0 : itemTestBuilder.getChild('remove').getTestId()),
900
+ React__default.createElement(Icon, { icon: "minus", className: "icon" })))) : null,
901
+ editable && hasAbility(item, 'editable') ? (React__default.createElement(TooltipWrapper, { placement: 'bottom', tooltip: __(editTip), trigger: 'hover', tooltipTheme: "dark" },
902
+ React__default.createElement("a", __assign({ onClick: this.handleEdit.bind(this, item) }, itemTestBuilder === null || itemTestBuilder === void 0 ? void 0 : itemTestBuilder.getChild('edit').getTestId()),
903
+ React__default.createElement(Icon, { icon: "new-edit", className: "icon" })))) : null,
904
+ itemActionsRender && (React__default.createElement("div", { className: cx('Tree-itemActions') }, itemActionsRender(item, __assign(__assign({}, item), { index: index, multiple: multiple, checked: checked, labelField: labelField, onChange: function () { return _this.handleCheck(item, !checked); }, disabled: disabled || item.disabled, classnames: cx })))))) : null)));
905
+ }
906
+ return (React__default.createElement("li", __assign({}, rest, { key: "".concat(item[valueField || 'value'], "-").concat(index), className: cx("Tree-item ".concat(itemClassName || ''), {
907
+ 'Tree-item--isLeaf': isLeaf,
908
+ 'is-child': this.relations.get(item)
909
+ }), style: __assign(__assign({}, style), { '--Tree-depth': level }) }, itemTestBuilder === null || itemTestBuilder === void 0 ? void 0 : itemTestBuilder.getTestId()), body));
910
+ };
911
+ TreeSelector.prototype.isEmptyOrNotExist = function (obj) {
912
+ return obj === '' || obj === undefined || obj === null;
913
+ };
914
+ TreeSelector.prototype.getAvailableOptions = function () {
915
+ var _this = this;
916
+ var _a = this.props, options = _a.options, onlyChildren = _a.onlyChildren, valueField = _a.valueField;
917
+ var flattendOptions = flattenTree(options, function (item) {
918
+ var _a;
919
+ return onlyChildren
920
+ ? ((_a = item.children) === null || _a === void 0 ? void 0 : _a.length)
921
+ ? null
922
+ : item
923
+ : _this.isEmptyOrNotExist(item[valueField || 'value'])
924
+ ? null
925
+ : item;
926
+ }).filter(function (a) { return a && !a.disabled; });
927
+ return flattendOptions;
928
+ };
929
+ TreeSelector.prototype.handleCheckAll = function (availableOptions, checkedAll) {
930
+ var _this = this;
931
+ this.setState({
932
+ value: checkedAll ? [] : availableOptions
933
+ }, function () { return _this.fireChange(checkedAll ? [] : availableOptions); });
934
+ };
935
+ TreeSelector.prototype.handleToggle = function (bool) {
936
+ var _this = this;
937
+ var availableOptions = this.getAvailableOptions();
938
+ if (bool === undefined) {
939
+ var checkedAll = availableOptions.every(function (option) {
940
+ return _this.isItemChecked(option);
941
+ });
942
+ this.handleCheckAll(availableOptions, checkedAll);
943
+ return;
944
+ }
945
+ this.handleCheckAll(availableOptions, bool);
946
+ };
947
+ TreeSelector.prototype.renderCheckAll = function () {
948
+ var _this = this;
949
+ var _a = this.props, multiple = _a.multiple, checkAll = _a.checkAll, checkAllLabel = _a.checkAllLabel, cx = _a.classnames, __ = _a.translate, disabled = _a.disabled, mobileUI = _a.mobileUI;
950
+ if (!multiple || !checkAll) {
951
+ return null;
952
+ }
953
+ var availableOptions = this.getAvailableOptions();
954
+ var checkedAll = availableOptions.every(function (option) {
955
+ return _this.isItemChecked(option);
956
+ });
957
+ var checkedPartial = availableOptions.some(function (option) {
958
+ return _this.isItemChecked(option);
959
+ });
960
+ return (React__default.createElement("div", { className: cx('Tree-itemLabel'), onClick: function () { return _this.handleCheckAll(availableOptions, checkedAll); } },
961
+ React__default.createElement(Checkbox, { size: "sm", disabled: disabled, checked: checkedPartial, partial: checkedPartial && !checkedAll }),
962
+ React__default.createElement("div", { className: cx('Tree-itemLabel-item', {
963
+ 'is-mobile': mobileUI
964
+ }) },
965
+ React__default.createElement("span", { className: cx('Tree-itemText') }, __(checkAllLabel)))));
966
+ };
967
+ TreeSelector.prototype.styleGetter = function (node) {
968
+ node && this.setState({ itemHeight: (node === null || node === void 0 ? void 0 : node.offsetHeight) || 0 });
969
+ };
970
+ TreeSelector.prototype.renderList = function (list) {
971
+ var _this = this;
972
+ var virtualThreshold = this.props.virtualThreshold;
973
+ var _a = this.state, virtualHeight = _a.virtualHeight, itemHeight = _a.itemHeight;
974
+ if (virtualThreshold && list.length > virtualThreshold) {
975
+ return itemHeight ? (React__default.createElement("div", { ref: this.virtualListRefSetter },
976
+ React__default.createElement(VirtualList, { height: virtualHeight, itemCount: list.length, prefix: this.renderCheckAll(), itemSize: itemHeight, renderItem: this.renderItem }))) : (this.renderItem({ index: 0, ref: this.styleGetter }));
977
+ }
978
+ return (React__default.createElement(React__default.Fragment, null,
979
+ this.renderCheckAll(),
980
+ list.map(function (item, index) { return _this.renderItem({ index: index }); })));
981
+ };
982
+ TreeSelector.prototype.handleVirtualHeight = function () {
983
+ var _a;
984
+ var virtualThreshold = this.props.virtualThreshold;
985
+ var _b = this.state, flattenedOptions = _b.flattenedOptions, itemHeight = _b.itemHeight;
986
+ if (virtualThreshold && flattenedOptions.length > virtualThreshold) {
987
+ // tree 对应元素
988
+ var treeElement = this.root.current;
989
+ if (!this.virtualListRef ||
990
+ (!treeElement.offsetHeight && !treeElement.offsetWidth)) {
991
+ return;
992
+ }
993
+ treeElement =
994
+ ((_a = treeElement === null || treeElement === void 0 ? void 0 : treeElement.parentElement) === null || _a === void 0 ? void 0 : _a.matches('.cxd-TreeControl')) &&
995
+ treeElement.parentElement.childElementCount === 1
996
+ ? treeElement.parentElement
997
+ : treeElement;
998
+ var styles = getComputedStyle(treeElement);
999
+ var offsetHeight = 0;
1000
+ if (styles.flexGrow !== '0') {
1001
+ // 当配置了成了动态高度时,根据实际高度来
1002
+ offsetHeight = treeElement.offsetHeight;
1003
+ }
1004
+ else {
1005
+ offsetHeight =
1006
+ itemHeight * Math.min(flattenedOptions.length, virtualThreshold);
1007
+ }
1008
+ var virtualElement = this.virtualListRef;
1009
+ // 通常时外围设置了 maxHeight
1010
+ if (virtualElement.offsetHeight &&
1011
+ virtualElement.offsetHeight > treeElement.offsetHeight) {
1012
+ offsetHeight = treeElement.offsetHeight;
1013
+ }
1014
+ // 虚拟列表 对应元素
1015
+ // todo 去支持外部滚动也支持虚拟滚动的场景,目前不支持,所以只能让高度最大,其实就没启动虚拟滚动
1016
+ // 目前只有没有配置 heightAuto 的时候
1017
+ // 或者配置了 flexGrow 的时候,才会有虚拟滚动的效果
1018
+ var virtualHeight = offsetHeight - calculateHeight(treeElement, virtualElement);
1019
+ this.setState({ virtualHeight: virtualHeight });
1020
+ }
1021
+ };
1022
+ TreeSelector.prototype.render = function () {
1023
+ var _a = this.props, className = _a.className, placeholder = _a.placeholder, hideRoot = _a.hideRoot, rootLabel = _a.rootLabel, showOutline = _a.showOutline, showIcon = _a.showIcon, cx = _a.classnames, creatable = _a.creatable, rootCreatable = _a.rootCreatable, rootCreateTip = _a.rootCreateTip, disabled = _a.disabled, draggable = _a.draggable, __ = _a.translate, testIdBuilder = _a.testIdBuilder, actionClassName = _a.actionClassName, height = _a.height;
1024
+ var _b = this.state, value = _b.value, isAdding = _b.isAdding, addingParent = _b.addingParent, isEditing = _b.isEditing, dropIndicator = _b.dropIndicator, flattenedOptions = _b.flattenedOptions;
1025
+ var addBtn = null;
1026
+ if (creatable && rootCreatable !== false && hideRoot) {
1027
+ addBtn = (React__default.createElement("a", __assign({ className: cx('Tree-addTopBtn', {
1028
+ 'is-disabled': isAdding || isEditing
1029
+ }), onClick: this.handleAdd.bind(this, null) }, testIdBuilder === null || testIdBuilder === void 0 ? void 0 : testIdBuilder.getChild('add').getTestId()),
1030
+ React__default.createElement(Icon, { icon: "plus", className: "icon" }),
1031
+ React__default.createElement("span", null, __(rootCreateTip))));
1032
+ }
1033
+ var style = {};
1034
+ if (height && height > 0) {
1035
+ style = {
1036
+ height: "".concat(height, "px"),
1037
+ maxHeight: 'none'
1038
+ };
1039
+ }
1040
+ return (React__default.createElement("div", __assign({ className: cx("Tree ".concat(className || ''), {
1041
+ 'Tree--outline': showOutline,
1042
+ 'is-disabled': disabled,
1043
+ 'is-draggable': draggable
1044
+ }), style: style, ref: this.root }, testIdBuilder === null || testIdBuilder === void 0 ? void 0 : testIdBuilder.getTestId()),
1045
+ (flattenedOptions && flattenedOptions.length) ||
1046
+ addBtn ||
1047
+ hideRoot === false ? (React__default.createElement("ul", { className: cx('Tree-list') }, hideRoot ? (React__default.createElement(React__default.Fragment, null,
1048
+ addBtn,
1049
+ isAdding && !addingParent ? (React__default.createElement("li", { className: cx('Tree-item') }, this.renderInput())) : null,
1050
+ this.renderList(flattenedOptions))) : (React__default.createElement("li", { className: cx('Tree-rootItem', {
1051
+ 'is-checked': !value || !value.length
1052
+ }) },
1053
+ React__default.createElement("div", { className: cx('Tree-itemLabel') },
1054
+ React__default.createElement("span", __assign({ className: cx('Tree-itemText'), onClick: this.clearSelect }, testIdBuilder === null || testIdBuilder === void 0 ? void 0 : testIdBuilder.getChild("root-item").getTestId()),
1055
+ showIcon ? (React__default.createElement("i", { className: cx('Tree-itemIcon Tree-rootIcon') },
1056
+ React__default.createElement(Icon, { icon: "home", className: "icon" }))) : null,
1057
+ rootLabel),
1058
+ !disabled &&
1059
+ creatable &&
1060
+ rootCreatable !== false &&
1061
+ !isAdding &&
1062
+ !isEditing ? (React__default.createElement("div", { className: cx('Tree-item-icons', actionClassName) }, creatable ? (React__default.createElement("a", __assign({ onClick: this.handleAdd.bind(this, null), "data-tooltip": rootCreateTip, "data-position": "left" }, testIdBuilder === null || testIdBuilder === void 0 ? void 0 : testIdBuilder.getChild("root-add").getTestId()),
1063
+ React__default.createElement(Icon, { icon: "plus", className: "icon" }))) : null)) : null),
1064
+ React__default.createElement("ul", { className: cx('Tree-sublist') },
1065
+ isAdding && !addingParent ? (React__default.createElement("li", { className: cx('Tree-item') }, this.renderInput())) : null,
1066
+ this.renderList(flattenedOptions)))))) : (React__default.createElement("div", { className: cx('Tree-placeholder') }, placeholder)),
1067
+ dropIndicator && (React__default.createElement("div", { className: cx('Tree-dropIndicator', {
1068
+ 'Tree-dropIndicator--hover': !!dropIndicator.height
1069
+ }), style: dropIndicator }))));
1070
+ };
1071
+ TreeSelector.defaultProps = {
1072
+ showIcon: true,
1073
+ showOutline: false,
1074
+ initiallyOpen: true,
1075
+ unfoldedLevel: 1,
1076
+ showRadio: false,
1077
+ multiple: false,
1078
+ disabled: false,
1079
+ withChildren: false,
1080
+ onlyChildren: false,
1081
+ labelField: 'label',
1082
+ valueField: 'value',
1083
+ iconField: 'icon',
1084
+ deferField: 'defer',
1085
+ unfoldedField: 'unfolded',
1086
+ foldedField: 'folded',
1087
+ disabledField: 'disabled',
1088
+ joinValues: true,
1089
+ extractValue: false,
1090
+ delimiter: ',',
1091
+ hideRoot: true,
1092
+ rootLabel: 'Tree.root',
1093
+ rootValue: 0,
1094
+ autoCheckChildren: true,
1095
+ autoCancelParent: false,
1096
+ cascade: false,
1097
+ selfDisabledAffectChildren: true,
1098
+ rootCreateTip: 'Tree.addRoot',
1099
+ createTip: 'Tree.addChild',
1100
+ editTip: 'Tree.editNode',
1101
+ removeTip: 'Tree.removeNode',
1102
+ enableNodePath: false,
1103
+ pathSeparator: '/',
1104
+ nodePath: [],
1105
+ virtualThreshold: 100,
1106
+ enableDefaultIcon: true
1107
+ };
1108
+ __decorate([
1109
+ autobind,
1110
+ __metadata("design:type", Function),
1111
+ __metadata("design:paramtypes", [Object]),
1112
+ __metadata("design:returntype", void 0)
1113
+ ], TreeSelector.prototype, "virtualListRefSetter", null);
1114
+ __decorate([
1115
+ autobind,
1116
+ __metadata("design:type", Function),
1117
+ __metadata("design:paramtypes", [Number, Object]),
1118
+ __metadata("design:returntype", void 0)
1119
+ ], TreeSelector.prototype, "setFoldedOrUnfolded", null);
1120
+ __decorate([
1121
+ autobind,
1122
+ __metadata("design:type", Function),
1123
+ __metadata("design:paramtypes", [Object]),
1124
+ __metadata("design:returntype", void 0)
1125
+ ], TreeSelector.prototype, "toggleUnfolded", null);
1126
+ __decorate([
1127
+ autobind,
1128
+ __metadata("design:type", Function),
1129
+ __metadata("design:paramtypes", []),
1130
+ __metadata("design:returntype", void 0)
1131
+ ], TreeSelector.prototype, "clearSelect", null);
1132
+ __decorate([
1133
+ autobind,
1134
+ __metadata("design:type", Function),
1135
+ __metadata("design:paramtypes", [Object, Object]),
1136
+ __metadata("design:returntype", void 0)
1137
+ ], TreeSelector.prototype, "handleSelect", null);
1138
+ __decorate([
1139
+ autobind,
1140
+ __metadata("design:type", Function),
1141
+ __metadata("design:paramtypes", [Object, Boolean]),
1142
+ __metadata("design:returntype", void 0)
1143
+ ], TreeSelector.prototype, "handleItemClick", null);
1144
+ __decorate([
1145
+ autobind,
1146
+ __metadata("design:type", Function),
1147
+ __metadata("design:paramtypes", [Object, Boolean]),
1148
+ __metadata("design:returntype", void 0)
1149
+ ], TreeSelector.prototype, "handleCheck", null);
1150
+ __decorate([
1151
+ autobind,
1152
+ __metadata("design:type", Function),
1153
+ __metadata("design:paramtypes", [Object]),
1154
+ __metadata("design:returntype", void 0)
1155
+ ], TreeSelector.prototype, "handleAdd", null);
1156
+ __decorate([
1157
+ autobind,
1158
+ __metadata("design:type", Function),
1159
+ __metadata("design:paramtypes", [Object]),
1160
+ __metadata("design:returntype", void 0)
1161
+ ], TreeSelector.prototype, "handleEdit", null);
1162
+ __decorate([
1163
+ autobind,
1164
+ __metadata("design:type", Function),
1165
+ __metadata("design:paramtypes", [Object]),
1166
+ __metadata("design:returntype", void 0)
1167
+ ], TreeSelector.prototype, "handleRemove", null);
1168
+ __decorate([
1169
+ autobind,
1170
+ __metadata("design:type", Function),
1171
+ __metadata("design:paramtypes", [Object]),
1172
+ __metadata("design:returntype", void 0)
1173
+ ], TreeSelector.prototype, "handleInputChange", null);
1174
+ __decorate([
1175
+ autobind,
1176
+ __metadata("design:type", Function),
1177
+ __metadata("design:paramtypes", []),
1178
+ __metadata("design:returntype", void 0)
1179
+ ], TreeSelector.prototype, "handleConfirm", null);
1180
+ __decorate([
1181
+ autobind,
1182
+ __metadata("design:type", Function),
1183
+ __metadata("design:paramtypes", []),
1184
+ __metadata("design:returntype", void 0)
1185
+ ], TreeSelector.prototype, "handleCancel", null);
1186
+ __decorate([
1187
+ autobind,
1188
+ __metadata("design:type", Function),
1189
+ __metadata("design:paramtypes", [Object, Object]),
1190
+ __metadata("design:returntype", Object)
1191
+ ], TreeSelector.prototype, "getDropInfo", null);
1192
+ __decorate([
1193
+ autobind,
1194
+ __metadata("design:type", Function),
1195
+ __metadata("design:paramtypes", [Object, Object]),
1196
+ __metadata("design:returntype", void 0)
1197
+ ], TreeSelector.prototype, "updateDropIndicator", null);
1198
+ __decorate([
1199
+ autobind,
1200
+ __metadata("design:type", Function),
1201
+ __metadata("design:paramtypes", [Object]),
1202
+ __metadata("design:returntype", void 0)
1203
+ ], TreeSelector.prototype, "onDragStart", null);
1204
+ __decorate([
1205
+ autobind,
1206
+ __metadata("design:type", Function),
1207
+ __metadata("design:paramtypes", [Object]),
1208
+ __metadata("design:returntype", void 0)
1209
+ ], TreeSelector.prototype, "onDragOver", null);
1210
+ __decorate([
1211
+ autobind,
1212
+ __metadata("design:type", Function),
1213
+ __metadata("design:paramtypes", [Object]),
1214
+ __metadata("design:returntype", void 0)
1215
+ ], TreeSelector.prototype, "onDragEnd", null);
1216
+ __decorate([
1217
+ autobind,
1218
+ __metadata("design:type", Function),
1219
+ __metadata("design:paramtypes", [Object]),
1220
+ __metadata("design:returntype", void 0)
1221
+ ], TreeSelector.prototype, "renderItem", null);
1222
+ __decorate([
1223
+ autobind,
1224
+ __metadata("design:type", Function),
1225
+ __metadata("design:paramtypes", [Array, Boolean]),
1226
+ __metadata("design:returntype", void 0)
1227
+ ], TreeSelector.prototype, "handleCheckAll", null);
1228
+ __decorate([
1229
+ autobind,
1230
+ __metadata("design:type", Function),
1231
+ __metadata("design:paramtypes", [Boolean]),
1232
+ __metadata("design:returntype", void 0)
1233
+ ], TreeSelector.prototype, "handleToggle", null);
1234
+ __decorate([
1235
+ autobind,
1236
+ __metadata("design:type", Function),
1237
+ __metadata("design:paramtypes", [Object]),
1238
+ __metadata("design:returntype", void 0)
1239
+ ], TreeSelector.prototype, "styleGetter", null);
1240
+ __decorate([
1241
+ autobind,
1242
+ __metadata("design:type", Function),
1243
+ __metadata("design:paramtypes", [Object]),
1244
+ __metadata("design:returntype", void 0)
1245
+ ], TreeSelector.prototype, "renderList", null);
1246
+ __decorate([
1247
+ autobind,
1248
+ __metadata("design:type", Function),
1249
+ __metadata("design:paramtypes", []),
1250
+ __metadata("design:returntype", void 0)
1251
+ ], TreeSelector.prototype, "handleVirtualHeight", null);
1252
+ return TreeSelector;
1253
+ }(React__default.Component));
1254
+ var Tree = themeable(localeable(TreeSelector));
1255
+
1256
+ export { TreeSelector, Tree as default };