amis 2.6.1-alpha.0 → 2.7.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (383) hide show
  1. package/esm/compat.js +1 -1
  2. package/esm/index.js +1 -1
  3. package/esm/preset.js +1 -1
  4. package/esm/renderers/Action.d.ts +12 -5
  5. package/esm/renderers/Action.js +15 -3
  6. package/esm/renderers/Alert.js +1 -1
  7. package/esm/renderers/AnchorNav.js +2 -2
  8. package/esm/renderers/App.js +1 -1
  9. package/esm/renderers/Audio.js +1 -1
  10. package/esm/renderers/Avatar.js +1 -1
  11. package/esm/renderers/BarCode.js +1 -1
  12. package/esm/renderers/Breadcrumb.js +1 -1
  13. package/esm/renderers/ButtonGroup.js +1 -1
  14. package/esm/renderers/CRUD.js +1 -1
  15. package/esm/renderers/CRUD2.js +11 -8
  16. package/esm/renderers/Calendar.js +1 -1
  17. package/esm/renderers/Card.js +1 -1
  18. package/esm/renderers/Card2.js +1 -1
  19. package/esm/renderers/Cards.js +1 -1
  20. package/esm/renderers/Carousel.js +1 -1
  21. package/esm/renderers/Chart.js +1 -1
  22. package/esm/renderers/Code.js +1 -1
  23. package/esm/renderers/Collapse.js +1 -1
  24. package/esm/renderers/CollapseGroup.js +1 -1
  25. package/esm/renderers/Color.js +1 -1
  26. package/esm/renderers/Container.js +1 -1
  27. package/esm/renderers/Copyable.js +1 -1
  28. package/esm/renderers/Custom.js +1 -1
  29. package/esm/renderers/Date.js +1 -1
  30. package/esm/renderers/DateRange.js +1 -1
  31. package/esm/renderers/Dialog.js +1 -1
  32. package/esm/renderers/Divider.js +1 -1
  33. package/esm/renderers/Drawer.js +1 -1
  34. package/esm/renderers/DropDownButton.js +16 -10
  35. package/esm/renderers/Each.js +1 -1
  36. package/esm/renderers/Flex.js +1 -1
  37. package/esm/renderers/Form/ButtonGroupSelect.js +1 -1
  38. package/esm/renderers/Form/ButtonToolbar.js +1 -1
  39. package/esm/renderers/Form/ChainedSelect.js +1 -1
  40. package/esm/renderers/Form/ChartRadios.js +1 -1
  41. package/esm/renderers/Form/Checkbox.js +1 -1
  42. package/esm/renderers/Form/Checkboxes.js +1 -1
  43. package/esm/renderers/Form/Combo.js +1 -1
  44. package/esm/renderers/Form/ConditionBuilder.js +1 -1
  45. package/esm/renderers/Form/Control.js +1 -1
  46. package/esm/renderers/Form/DiffEditor.js +1 -1
  47. package/esm/renderers/Form/Editor.js +1 -1
  48. package/esm/renderers/Form/FieldSet.js +1 -1
  49. package/esm/renderers/Form/Formula.js +1 -1
  50. package/esm/renderers/Form/Group.js +1 -1
  51. package/esm/renderers/Form/Hidden.js +1 -1
  52. package/esm/renderers/Form/IconPicker.js +1 -1
  53. package/esm/renderers/Form/IconPickerIcons.js +1 -1
  54. package/esm/renderers/Form/IconSelect.d.ts +2 -0
  55. package/esm/renderers/Form/IconSelect.js +30 -6
  56. package/esm/renderers/Form/IconSelectStore.d.ts +1 -0
  57. package/esm/renderers/Form/IconSelectStore.js +1 -1
  58. package/esm/renderers/Form/InputArray.js +1 -1
  59. package/esm/renderers/Form/InputCity.js +1 -1
  60. package/esm/renderers/Form/InputColor.js +1 -1
  61. package/esm/renderers/Form/InputDate.js +1 -1
  62. package/esm/renderers/Form/InputDateRange.js +1 -1
  63. package/esm/renderers/Form/InputExcel.js +1 -1
  64. package/esm/renderers/Form/InputFile.js +1 -1
  65. package/esm/renderers/Form/InputFormula.js +1 -1
  66. package/esm/renderers/Form/InputGroup.js +1 -1
  67. package/esm/renderers/Form/InputImage.js +1 -1
  68. package/esm/renderers/Form/InputMonthRange.js +1 -1
  69. package/esm/renderers/Form/InputNumber.js +1 -1
  70. package/esm/renderers/Form/InputQuarterRange.js +1 -1
  71. package/esm/renderers/Form/InputRange.js +1 -1
  72. package/esm/renderers/Form/InputRating.js +1 -1
  73. package/esm/renderers/Form/InputRepeat.js +1 -1
  74. package/esm/renderers/Form/InputRichText.js +1 -1
  75. package/esm/renderers/Form/InputSubForm.js +1 -1
  76. package/esm/renderers/Form/InputTable.js +1 -1
  77. package/esm/renderers/Form/InputTag.js +1 -1
  78. package/esm/renderers/Form/InputText.js +29 -12
  79. package/esm/renderers/Form/InputTree.js +1 -1
  80. package/esm/renderers/Form/InputYearRange.js +1 -1
  81. package/esm/renderers/Form/JSONSchema.js +1 -1
  82. package/esm/renderers/Form/JSONSchemaEditor.js +1 -1
  83. package/esm/renderers/Form/ListSelect.js +1 -1
  84. package/esm/renderers/Form/LocationPicker.js +1 -1
  85. package/esm/renderers/Form/MatrixCheckboxes.js +1 -1
  86. package/esm/renderers/Form/NestedSelect.d.ts +1 -3
  87. package/esm/renderers/Form/NestedSelect.js +12 -6
  88. package/esm/renderers/Form/Picker.js +1 -1
  89. package/esm/renderers/Form/Radios.js +1 -1
  90. package/esm/renderers/Form/Select.js +3 -3
  91. package/esm/renderers/Form/Static.js +1 -1
  92. package/esm/renderers/Form/StaticHoc.js +1 -1
  93. package/esm/renderers/Form/Switch.js +1 -1
  94. package/esm/renderers/Form/TabsTransfer.js +1 -1
  95. package/esm/renderers/Form/TabsTransferPicker.js +1 -1
  96. package/esm/renderers/Form/Textarea.js +1 -1
  97. package/esm/renderers/Form/Transfer.d.ts +4 -0
  98. package/esm/renderers/Form/Transfer.js +16 -10
  99. package/esm/renderers/Form/TransferPicker.js +1 -1
  100. package/esm/renderers/Form/TreeSelect.js +1 -1
  101. package/esm/renderers/Form/UUID.js +1 -1
  102. package/esm/renderers/Form/UserSelect.js +1 -1
  103. package/esm/renderers/Grid.js +1 -1
  104. package/esm/renderers/Grid2D.js +1 -1
  105. package/esm/renderers/GridNav.js +1 -1
  106. package/esm/renderers/HBox.js +1 -1
  107. package/esm/renderers/IFrame.js +1 -1
  108. package/esm/renderers/Icon.d.ts +3 -0
  109. package/esm/renderers/Icon.js +42 -6
  110. package/esm/renderers/Image.js +1 -1
  111. package/esm/renderers/Images.js +1 -1
  112. package/esm/renderers/Json.js +1 -1
  113. package/esm/renderers/Link.js +1 -1
  114. package/esm/renderers/List.js +1 -1
  115. package/esm/renderers/Log.js +1 -1
  116. package/esm/renderers/Mapping.js +6 -2
  117. package/esm/renderers/Markdown.js +1 -1
  118. package/esm/renderers/MultilineText.js +1 -1
  119. package/esm/renderers/Nav.d.ts +73 -23
  120. package/esm/renderers/Nav.js +399 -164
  121. package/esm/renderers/Operation.js +1 -1
  122. package/esm/renderers/Page.js +1 -1
  123. package/esm/renderers/Pagination.js +1 -1
  124. package/esm/renderers/PaginationWrapper.js +1 -1
  125. package/esm/renderers/Panel.js +4 -2
  126. package/esm/renderers/Password.js +1 -1
  127. package/esm/renderers/Plain.js +1 -1
  128. package/esm/renderers/PopOver.js +1 -1
  129. package/esm/renderers/Portlet.js +1 -1
  130. package/esm/renderers/Progress.js +1 -1
  131. package/esm/renderers/Property.js +1 -1
  132. package/esm/renderers/QRCode.js +1 -1
  133. package/esm/renderers/QuickEdit.js +1 -1
  134. package/esm/renderers/Remark.js +1 -1
  135. package/esm/renderers/SearchBox.js +1 -1
  136. package/esm/renderers/Service.js +1 -1
  137. package/esm/renderers/SparkLine.js +1 -1
  138. package/esm/renderers/Spinner.js +1 -1
  139. package/esm/renderers/Status.js +3 -3
  140. package/esm/renderers/Steps.js +1 -1
  141. package/esm/renderers/Table/ColumnToggler.js +1 -1
  142. package/esm/renderers/Table/HeadCellFilterDropdown.js +1 -1
  143. package/esm/renderers/Table/HeadCellSearchDropdown.js +1 -1
  144. package/esm/renderers/Table/ItemActionsWrapper.js +1 -1
  145. package/esm/renderers/Table/TableBody.js +1 -1
  146. package/esm/renderers/Table/TableCell.js +4 -2
  147. package/esm/renderers/Table/TableContent.js +1 -1
  148. package/esm/renderers/Table/TableRow.js +1 -1
  149. package/esm/renderers/Table/exportExcel.js +1 -1
  150. package/esm/renderers/Table/index.js +1 -1
  151. package/esm/renderers/Table2/ColumnToggler.js +1 -1
  152. package/esm/renderers/Table2/HeadCellSearchDropdown.js +5 -2
  153. package/esm/renderers/Table2/TableCell.js +1 -1
  154. package/esm/renderers/Table2/index.js +3 -2
  155. package/esm/renderers/TableView.js +1 -1
  156. package/esm/renderers/Tabs.js +1 -1
  157. package/esm/renderers/Tag.d.ts +3 -0
  158. package/esm/renderers/Tag.js +40 -4
  159. package/esm/renderers/Tasks.js +1 -1
  160. package/esm/renderers/Timeline.js +1 -1
  161. package/esm/renderers/TooltipWrapper.js +1 -1
  162. package/esm/renderers/Tpl.d.ts +4 -2
  163. package/esm/renderers/Tpl.js +1 -1
  164. package/esm/renderers/VBox.js +1 -1
  165. package/esm/renderers/Video.js +1 -1
  166. package/esm/renderers/WebComponent.js +1 -1
  167. package/esm/renderers/Wizard.js +1 -1
  168. package/esm/renderers/Words.js +1 -1
  169. package/esm/renderers/Wrapper.js +1 -1
  170. package/esm/schemaExtend.js +1 -1
  171. package/lib/compat.js +1 -1
  172. package/lib/index.js +1 -1
  173. package/lib/preset.js +1 -1
  174. package/lib/renderers/Action.d.ts +12 -5
  175. package/lib/renderers/Action.js +14 -2
  176. package/lib/renderers/Alert.js +1 -1
  177. package/lib/renderers/AnchorNav.js +2 -2
  178. package/lib/renderers/App.js +1 -1
  179. package/lib/renderers/Audio.js +1 -1
  180. package/lib/renderers/Avatar.js +1 -1
  181. package/lib/renderers/BarCode.js +1 -1
  182. package/lib/renderers/Breadcrumb.js +1 -1
  183. package/lib/renderers/ButtonGroup.js +1 -1
  184. package/lib/renderers/CRUD.js +1 -1
  185. package/lib/renderers/CRUD2.js +13 -9
  186. package/lib/renderers/Calendar.js +1 -1
  187. package/lib/renderers/Card.js +1 -1
  188. package/lib/renderers/Card2.js +1 -1
  189. package/lib/renderers/Cards.js +1 -1
  190. package/lib/renderers/Carousel.js +1 -1
  191. package/lib/renderers/Chart.js +1 -1
  192. package/lib/renderers/Code.js +1 -1
  193. package/lib/renderers/Collapse.js +1 -1
  194. package/lib/renderers/CollapseGroup.js +1 -1
  195. package/lib/renderers/Color.js +1 -1
  196. package/lib/renderers/Container.js +1 -1
  197. package/lib/renderers/Copyable.js +1 -1
  198. package/lib/renderers/Custom.js +1 -1
  199. package/lib/renderers/Date.js +1 -1
  200. package/lib/renderers/DateRange.js +1 -1
  201. package/lib/renderers/Dialog.d.ts +41 -40
  202. package/lib/renderers/Dialog.js +1 -1
  203. package/lib/renderers/Divider.js +1 -1
  204. package/lib/renderers/Drawer.js +1 -1
  205. package/lib/renderers/DropDownButton.js +15 -9
  206. package/lib/renderers/Each.js +1 -1
  207. package/lib/renderers/Flex.js +1 -1
  208. package/lib/renderers/Form/ButtonGroupSelect.js +1 -1
  209. package/lib/renderers/Form/ButtonToolbar.js +1 -1
  210. package/lib/renderers/Form/ChainedSelect.js +1 -1
  211. package/lib/renderers/Form/ChartRadios.js +1 -1
  212. package/lib/renderers/Form/Checkbox.js +1 -1
  213. package/lib/renderers/Form/Checkboxes.js +1 -1
  214. package/lib/renderers/Form/Combo.js +1 -1
  215. package/lib/renderers/Form/ConditionBuilder.js +1 -1
  216. package/lib/renderers/Form/Control.js +1 -1
  217. package/lib/renderers/Form/DiffEditor.d.ts +8 -7
  218. package/lib/renderers/Form/DiffEditor.js +1 -1
  219. package/lib/renderers/Form/Editor.d.ts +5 -4
  220. package/lib/renderers/Form/Editor.js +1 -1
  221. package/lib/renderers/Form/FieldSet.js +1 -1
  222. package/lib/renderers/Form/Formula.js +1 -1
  223. package/lib/renderers/Form/Group.js +1 -1
  224. package/lib/renderers/Form/Hidden.js +1 -1
  225. package/lib/renderers/Form/IconPicker.js +1 -1
  226. package/lib/renderers/Form/IconPickerIcons.js +1 -1
  227. package/lib/renderers/Form/IconSelect.d.ts +2 -0
  228. package/lib/renderers/Form/IconSelect.js +31 -6
  229. package/lib/renderers/Form/IconSelectStore.d.ts +1 -0
  230. package/lib/renderers/Form/IconSelectStore.js +1 -1
  231. package/lib/renderers/Form/InputArray.js +1 -1
  232. package/lib/renderers/Form/InputCity.d.ts +40 -40
  233. package/lib/renderers/Form/InputCity.js +1 -1
  234. package/lib/renderers/Form/InputColor.d.ts +40 -40
  235. package/lib/renderers/Form/InputColor.js +1 -1
  236. package/lib/renderers/Form/InputDate.js +1 -1
  237. package/lib/renderers/Form/InputDateRange.js +1 -1
  238. package/lib/renderers/Form/InputExcel.js +1 -1
  239. package/lib/renderers/Form/InputFile.js +1 -1
  240. package/lib/renderers/Form/InputFormula.js +1 -1
  241. package/lib/renderers/Form/InputGroup.d.ts +1 -1
  242. package/lib/renderers/Form/InputGroup.js +1 -1
  243. package/lib/renderers/Form/InputImage.js +1 -1
  244. package/lib/renderers/Form/InputMonthRange.js +1 -1
  245. package/lib/renderers/Form/InputNumber.js +1 -1
  246. package/lib/renderers/Form/InputQuarterRange.js +1 -1
  247. package/lib/renderers/Form/InputRange.js +1 -1
  248. package/lib/renderers/Form/InputRating.js +1 -1
  249. package/lib/renderers/Form/InputRepeat.js +1 -1
  250. package/lib/renderers/Form/InputRichText.js +1 -1
  251. package/lib/renderers/Form/InputSubForm.js +1 -1
  252. package/lib/renderers/Form/InputTable.js +1 -1
  253. package/lib/renderers/Form/InputTag.js +1 -1
  254. package/lib/renderers/Form/InputText.js +28 -11
  255. package/lib/renderers/Form/InputTree.js +1 -1
  256. package/lib/renderers/Form/InputYearRange.js +1 -1
  257. package/lib/renderers/Form/JSONSchema.js +1 -1
  258. package/lib/renderers/Form/JSONSchemaEditor.js +1 -1
  259. package/lib/renderers/Form/ListSelect.js +1 -1
  260. package/lib/renderers/Form/LocationPicker.js +1 -1
  261. package/lib/renderers/Form/MatrixCheckboxes.js +1 -1
  262. package/lib/renderers/Form/NestedSelect.d.ts +1 -3
  263. package/lib/renderers/Form/NestedSelect.js +12 -6
  264. package/lib/renderers/Form/Picker.js +1 -1
  265. package/lib/renderers/Form/Radios.js +1 -1
  266. package/lib/renderers/Form/Select.js +3 -3
  267. package/lib/renderers/Form/Static.js +1 -1
  268. package/lib/renderers/Form/StaticHoc.js +1 -1
  269. package/lib/renderers/Form/Switch.js +1 -1
  270. package/lib/renderers/Form/TabsTransfer.js +1 -1
  271. package/lib/renderers/Form/TabsTransferPicker.js +1 -1
  272. package/lib/renderers/Form/Textarea.js +1 -1
  273. package/lib/renderers/Form/Transfer.d.ts +4 -0
  274. package/lib/renderers/Form/Transfer.js +15 -9
  275. package/lib/renderers/Form/TransferPicker.js +1 -1
  276. package/lib/renderers/Form/TreeSelect.js +1 -1
  277. package/lib/renderers/Form/UUID.js +1 -1
  278. package/lib/renderers/Form/UserSelect.js +1 -1
  279. package/lib/renderers/Grid.js +1 -1
  280. package/lib/renderers/Grid2D.js +1 -1
  281. package/lib/renderers/GridNav.js +1 -1
  282. package/lib/renderers/HBox.js +1 -1
  283. package/lib/renderers/IFrame.js +1 -1
  284. package/lib/renderers/Icon.d.ts +3 -0
  285. package/lib/renderers/Icon.js +40 -4
  286. package/lib/renderers/Image.js +1 -1
  287. package/lib/renderers/Images.js +1 -1
  288. package/lib/renderers/Json.js +1 -1
  289. package/lib/renderers/Link.js +1 -1
  290. package/lib/renderers/List.js +1 -1
  291. package/lib/renderers/Log.js +1 -1
  292. package/lib/renderers/Mapping.js +6 -2
  293. package/lib/renderers/Markdown.js +1 -1
  294. package/lib/renderers/MultilineText.js +1 -1
  295. package/lib/renderers/Nav.d.ts +73 -23
  296. package/lib/renderers/Nav.js +397 -162
  297. package/lib/renderers/Operation.js +1 -1
  298. package/lib/renderers/Page.js +1 -1
  299. package/lib/renderers/Pagination.js +1 -1
  300. package/lib/renderers/PaginationWrapper.js +1 -1
  301. package/lib/renderers/Panel.js +4 -2
  302. package/lib/renderers/Password.js +1 -1
  303. package/lib/renderers/Plain.js +1 -1
  304. package/lib/renderers/PopOver.js +1 -1
  305. package/lib/renderers/Portlet.js +1 -1
  306. package/lib/renderers/Progress.js +1 -1
  307. package/lib/renderers/Property.js +1 -1
  308. package/lib/renderers/QRCode.js +1 -1
  309. package/lib/renderers/QuickEdit.js +1 -1
  310. package/lib/renderers/Remark.d.ts +1 -1
  311. package/lib/renderers/Remark.js +1 -1
  312. package/lib/renderers/SearchBox.js +1 -1
  313. package/lib/renderers/Service.js +1 -1
  314. package/lib/renderers/SparkLine.js +1 -1
  315. package/lib/renderers/Spinner.js +1 -1
  316. package/lib/renderers/Status.js +3 -3
  317. package/lib/renderers/Steps.js +1 -1
  318. package/lib/renderers/Table/ColumnToggler.js +1 -1
  319. package/lib/renderers/Table/HeadCellFilterDropdown.js +1 -1
  320. package/lib/renderers/Table/HeadCellSearchDropdown.js +1 -1
  321. package/lib/renderers/Table/ItemActionsWrapper.js +1 -1
  322. package/lib/renderers/Table/TableBody.js +1 -1
  323. package/lib/renderers/Table/TableCell.js +4 -2
  324. package/lib/renderers/Table/TableContent.js +1 -1
  325. package/lib/renderers/Table/TableRow.js +1 -1
  326. package/lib/renderers/Table/exportExcel.js +1 -1
  327. package/lib/renderers/Table/index.js +1 -1
  328. package/lib/renderers/Table2/ColumnToggler.js +1 -1
  329. package/lib/renderers/Table2/HeadCellSearchDropdown.js +5 -2
  330. package/lib/renderers/Table2/TableCell.js +1 -1
  331. package/lib/renderers/Table2/index.js +3 -2
  332. package/lib/renderers/TableView.js +1 -1
  333. package/lib/renderers/Tabs.js +1 -1
  334. package/lib/renderers/Tag.d.ts +3 -0
  335. package/lib/renderers/Tag.js +38 -2
  336. package/lib/renderers/Tasks.js +1 -1
  337. package/lib/renderers/Timeline.js +1 -1
  338. package/lib/renderers/TooltipWrapper.js +1 -1
  339. package/lib/renderers/Tpl.d.ts +4 -2
  340. package/lib/renderers/Tpl.js +1 -1
  341. package/lib/renderers/VBox.js +1 -1
  342. package/lib/renderers/Video.js +1 -1
  343. package/lib/renderers/WebComponent.js +1 -1
  344. package/lib/renderers/Wizard.js +1 -1
  345. package/lib/renderers/Words.js +1 -1
  346. package/lib/renderers/Wrapper.js +1 -1
  347. package/lib/schemaExtend.js +1 -1
  348. package/lib/themes/ang-ie11.css +2397 -528
  349. package/lib/themes/ang.css +4138 -881
  350. package/lib/themes/antd-ie11.css +2378 -509
  351. package/lib/themes/antd.css +4138 -881
  352. package/lib/themes/cxd-ie11.css +2378 -509
  353. package/lib/themes/cxd.css +4139 -881
  354. package/lib/themes/dark-ie11.css +2393 -524
  355. package/lib/themes/dark.css +4138 -881
  356. package/lib/themes/default-ie11.css +2378 -509
  357. package/lib/themes/default.css +4139 -881
  358. package/package.json +4 -4
  359. package/schema.json +150 -48
  360. package/sdk/ang-ie11.css +2839 -549
  361. package/sdk/ang.css +4588 -910
  362. package/sdk/antd-ie11.css +2826 -536
  363. package/sdk/antd.css +4588 -910
  364. package/sdk/barcode.js +50 -50
  365. package/sdk/charts.js +14 -14
  366. package/sdk/codemirror.js +7 -7
  367. package/sdk/color-picker.js +65 -65
  368. package/sdk/cropperjs.js +2 -2
  369. package/sdk/cxd-ie11.css +2826 -536
  370. package/sdk/cxd.css +4589 -910
  371. package/sdk/dark-ie11.css +2840 -550
  372. package/sdk/dark.css +4588 -910
  373. package/sdk/exceljs.js +1 -1
  374. package/sdk/markdown.js +68 -68
  375. package/sdk/papaparse.js +1 -1
  376. package/sdk/rest.js +16 -16
  377. package/sdk/rich-text.js +62 -62
  378. package/sdk/sdk-ie11.css +2826 -536
  379. package/sdk/sdk.css +4589 -910
  380. package/sdk/sdk.js +1729 -1444
  381. package/sdk/thirds/hls.js/hls.js +1 -1
  382. package/sdk/thirds/mpegts.js/mpegts.js +1 -1
  383. package/sdk/tinymce.js +55 -55
@@ -1,14 +1,14 @@
1
1
  /**
2
- * amis v2.6.1-alpha.0
2
+ * amis v2.7.1
3
3
  * Copyright 2018-2023 baidu
4
4
  */
5
5
 
6
- import { __extends, __assign, __decorate, __metadata, __awaiter, __generator, __rest } from 'tslib';
6
+ import { __extends, __awaiter, __generator, __assign, __decorate, __metadata, __rest } from 'tslib';
7
7
  import React from 'react';
8
8
  import { findDOMNode } from 'react-dom';
9
- import Overflow from 'rc-overflow';
10
- import { createObject, generateIcon, guid, isObject, autobind, themeable, someTree, filter, mapTree, getExprProperties, evalExpression, isUnfolded, spliceTree, findTreeIndex, isEffectiveApi, ScopedContext, Renderer } from 'amis-core';
11
- import { Badge, Icon, Spinner, PopOverContainer, getIcon, withRemoteConfig } from 'amis-ui';
9
+ import { generateIcon, isObject, createObject, autobind, themeable, someTree, filter, mapTree, getExprProperties, guid, isUnfolded, findTree, spliceTree, resolveVariableAndFilter, findTreeIndex, isEffectiveApi, ScopedContext, Renderer, evalExpression } from 'amis-core';
10
+ import { getIcon, Icon, Menu, Spinner, withRemoteConfig } from 'amis-ui';
11
+ import isEqual from 'lodash/isEqual';
12
12
 
13
13
  var Navigation = /** @class */ (function (_super) {
14
14
  __extends(Navigation, _super);
@@ -21,19 +21,30 @@ var Navigation = /** @class */ (function (_super) {
21
21
  _this.state = {};
22
22
  return _this;
23
23
  }
24
- Navigation.prototype.handleClick = function (link) {
25
- var _a = this.props, env = _a.env, onSelect = _a.onSelect;
26
- // action 里命名一致方便分析
27
- if (link && link.to) {
28
- env === null || env === void 0 ? void 0 : env.tracker({
29
- eventType: 'link',
30
- eventData: {
31
- label: link.label,
32
- link: link.to
24
+ Navigation.prototype.handleClick = function (link, depth) {
25
+ return __awaiter(this, void 0, void 0, function () {
26
+ var _a, env, onSelect, result;
27
+ return __generator(this, function (_b) {
28
+ switch (_b.label) {
29
+ case 0:
30
+ _a = this.props, env = _a.env, onSelect = _a.onSelect;
31
+ // 和 action 里命名一致方便分析
32
+ if (link && link.to) {
33
+ env === null || env === void 0 ? void 0 : env.tracker({
34
+ eventType: 'link',
35
+ eventData: {
36
+ label: link.label,
37
+ link: link.to
38
+ }
39
+ });
40
+ }
41
+ return [4 /*yield*/, (onSelect === null || onSelect === void 0 ? void 0 : onSelect(link, depth))];
42
+ case 1:
43
+ result = _b.sent();
44
+ return [2 /*return*/, result];
33
45
  }
34
46
  });
35
- }
36
- onSelect === null || onSelect === void 0 ? void 0 : onSelect(link);
47
+ });
37
48
  };
38
49
  Navigation.prototype.toggleLink = function (target, forceFold) {
39
50
  var _a, _b;
@@ -46,7 +57,7 @@ var Navigation = /** @class */ (function (_super) {
46
57
  var dragLink = (_a = this.dragNode) === null || _a === void 0 ? void 0 : _a.link;
47
58
  var top = rect.top, height = rect.height, width = rect.width;
48
59
  var clientY = e.clientY, clientX = e.clientX;
49
- var left = depth * ((_b = parseInt(indentSize, 10)) !== null && _b !== void 0 ? _b : 24);
60
+ var left = depth * ((_b = parseInt(indentSize, 10)) !== null && _b !== void 0 ? _b : 16);
50
61
  var deltaX = left + width * 0.2;
51
62
  var position;
52
63
  if (clientY >= top + height / 2) {
@@ -70,13 +81,17 @@ var Navigation = /** @class */ (function (_super) {
70
81
  };
71
82
  };
72
83
  Navigation.prototype.updateDropIndicator = function (e) {
73
- var _a, _b;
74
- var dragOnSameLevel = this.props.dragOnSameLevel;
75
- var target = e.target; // a标签
76
- var targetId = target.getAttribute('data-id');
77
- var targetDepth = Number(target.getAttribute('data-depth'));
84
+ var _a;
85
+ var _b = this.props, dragOnSameLevel = _b.dragOnSameLevel, overflow = _b.overflow;
86
+ // 因为使用了rc-menu 因此拖拽事件拿到的rc-menu的li
87
+ // id和depth在li里的a标签上
88
+ var target = e.target.querySelector('a');
89
+ var targetId = target === null || target === void 0 ? void 0 : target.getAttribute('data-id');
90
+ var targetDepth = Number(target === null || target === void 0 ? void 0 : target.getAttribute('data-depth'));
91
+ var wrapperComponent = overflow && overflow.enable ? overflow.wrapperComponent || 'ul' : 'ul';
78
92
  if (dragOnSameLevel &&
79
- ((_a = this.dragNode) === null || _a === void 0 ? void 0 : _a.node.parentElement) !== ((_b = target.parentElement) === null || _b === void 0 ? void 0 : _b.parentElement)) {
93
+ ((_a = this.dragNode) === null || _a === void 0 ? void 0 : _a.node.closest(wrapperComponent)) !==
94
+ (target === null || target === void 0 ? void 0 : target.closest(wrapperComponent))) {
80
95
  this.setState({ dropIndicator: undefined });
81
96
  this.dropInfo = null;
82
97
  return;
@@ -137,8 +152,8 @@ var Navigation = /** @class */ (function (_super) {
137
152
  if (!this.dragNode) {
138
153
  return;
139
154
  }
140
- var target = e.target;
141
- var id = target.getAttribute('data-id');
155
+ var target = e.target.querySelector('a');
156
+ var id = target === null || target === void 0 ? void 0 : target.getAttribute('data-id');
142
157
  if (!id) {
143
158
  return;
144
159
  }
@@ -153,6 +168,12 @@ var Navigation = /** @class */ (function (_super) {
153
168
  });
154
169
  var currentTarget = e.currentTarget;
155
170
  var id = currentTarget.getAttribute('data-id');
171
+ if (!id) {
172
+ var a = currentTarget.querySelector('a');
173
+ if (a) {
174
+ id = a.getAttribute('data-id');
175
+ }
176
+ }
156
177
  var nodeId = (_a = this.dropInfo) === null || _a === void 0 ? void 0 : _a.nodeId;
157
178
  if (!this.dropInfo || !nodeId || id === nodeId) {
158
179
  return;
@@ -163,104 +184,118 @@ var Navigation = /** @class */ (function (_super) {
163
184
  this.dragNode = null;
164
185
  this.dropInfo = null;
165
186
  };
166
- Navigation.prototype.renderItem = function (link, index, depth) {
187
+ Navigation.prototype.normalizeNavigations = function (links, depth) {
167
188
  var _this = this;
168
- var _a, _b;
169
- if (depth === void 0) { depth = 1; }
170
- if (link.hidden === true || link.visible === false) {
171
- return null;
189
+ var _a = this.props, level = _a.level, stacked = _a.stacked, mode = _a.mode, itemActions = _a.itemActions, render = _a.render, cx = _a.classnames, data = _a.data;
190
+ if (!links) {
191
+ return [];
172
192
  }
173
- var isActive = !!link.active;
174
- var _c = this.props, disabled = _c.disabled, togglerClassName = _c.togglerClassName, cx = _c.classnames, indentSize = _c.indentSize, render = _c.render, itemActions = _c.itemActions, draggable = _c.draggable; _c.links; var itemBadge = _c.itemBadge, defaultData = _c.data;
175
- var hasSub = (link.defer && !link.loaded) || (link.children && link.children.length);
176
- return (React.createElement("li", { key: (_a = link.__id) !== null && _a !== void 0 ? _a : index, "data-id": link.__id, className: cx('Nav-item', link.className, {
177
- 'is-disabled': disabled || link.disabled || link.loading,
178
- 'is-active': isActive,
179
- 'is-unfolded': link.unfolded,
180
- 'has-sub': hasSub
181
- }), onDragStart: this.handleDragStart(link) },
182
- React.createElement(Badge, { classnames: cx, badge: itemBadge, data: createObject(defaultData, link) },
183
- React.createElement("a", { "data-id": link.__id, "data-depth": depth, title: typeof (link === null || link === void 0 ? void 0 : link.label) === 'string' ? link === null || link === void 0 ? void 0 : link.label : undefined, onClick: this.handleClick.bind(this, link), style: {
184
- paddingLeft: depth * ((_b = parseInt(indentSize, 10)) !== null && _b !== void 0 ? _b : 24)
185
- } },
186
- !disabled && draggable ? (React.createElement("div", { className: cx('Nav-itemDrager'), draggable: true, onMouseDown: function (e) {
187
- _this.toggleLink(link, true);
188
- e.stopPropagation();
189
- } },
190
- React.createElement(Icon, { icon: "drag-bar", className: "icon" }))) : null,
191
- link.loading ? (React.createElement(Spinner, { size: "sm", show: true, icon: "reload", spinnerClassName: cx('Nav-spinner') })) : hasSub ? (React.createElement("span", { onClick: function (e) {
192
- _this.toggleLink(link);
193
- e.stopPropagation();
194
- }, className: cx('Nav-itemToggler', togglerClassName) },
195
- React.createElement(Icon, { icon: "caret", className: "icon" }))) : null,
196
- generateIcon(cx, link.icon, 'Nav-itemIcon'),
197
- link.label &&
198
- (typeof link.label === 'string'
199
- ? link.label
200
- : render('inline', link.label))),
201
- // 更多操作
202
- itemActions ? (React.createElement("div", { className: cx('Nav-item-atcions') }, render('inline', itemActions, {
203
- data: createObject(defaultData, link)
204
- }))) : null,
205
- Array.isArray(link.children) && link.children.length ? (React.createElement("ul", { className: cx('Nav-subItems') }, link.children.map(function (link, index) {
206
- return _this.renderItem(link, index, depth + 1);
207
- }))) : null)));
208
- };
209
- Navigation.prototype.renderOverflowNavs = function (overflowConfig) {
210
- var _this = this;
211
- var _a = this.props, render = _a.render, cx = _a.classnames, className = _a.className, loading = _a.loading, _b = _a.links, links = _b === void 0 ? [] : _b;
212
- var overflowClassName = overflowConfig.overflowClassName, overflowPopoverClassName = overflowConfig.overflowPopoverClassName, overflowListClassName = overflowConfig.overflowListClassName, overflowLabel = overflowConfig.overflowLabel, overflowIndicator = overflowConfig.overflowIndicator, _c = overflowConfig.itemWidth, itemWidth = _c === void 0 ? 160 : _c, overflowSuffix = overflowConfig.overflowSuffix, popOverContainer = overflowConfig.popOverContainer, style = overflowConfig.style, maxVisibleCount = overflowConfig.maxVisibleCount, _d = overflowConfig.wrapperComponent, wrapperComponent = _d === void 0 ? 'ul' : _d;
213
- return (React.createElement(React.Fragment, null,
214
- React.createElement(Spinner, { show: !!loading, overlay: true }),
215
- React.createElement(Overflow, { className: cx('Nav-list--tabs', className), prefixCls: cx('Nav-list'), itemWidth: itemWidth, style: style, component: wrapperComponent, data: links, suffix: overflowSuffix
216
- ? render('nav-overflow-suffix', overflowSuffix)
217
- : null, renderRawItem: function (item, index) {
218
- return _this.renderItem(item, index);
219
- }, renderRawRest: function (overFlowedItems) {
220
- return (React.createElement(PopOverContainer, { popOverContainer: popOverContainer, popOverClassName: cx('Nav-item-overflow-popover', overflowPopoverClassName), popOverRender: function (_a) {
221
- var onClose = _a.onClose;
222
- return (React.createElement("div", { className: cx('Nav-list', 'Nav-list--stacked', // 浮层菜单为垂直布局
223
- 'Nav-list-overflow', overflowListClassName) }, overFlowedItems.map(function (item, index) {
224
- return React.cloneElement(_this.renderItem(item, index), {
225
- onClick: onClose
226
- });
227
- })));
228
- } }, function (_a) {
229
- var _b;
230
- var onClick = _a.onClick, ref = _a.ref, isOpened = _a.isOpened;
231
- return (React.createElement("li", { ref: ref, className: cx('Nav-item', 'Nav-item-overflow', {
232
- 'is-overflow-opened': isOpened
233
- }, overflowClassName), onClick: onClick },
234
- React.createElement("a", { "data-id": (_b = overflowConfig.__id) !== null && _b !== void 0 ? _b : guid(), "data-depth": 1 },
235
- getIcon(overflowIndicator) ? (React.createElement(Icon, { icon: overflowIndicator, className: "icon" })) : (generateIcon(cx, overflowIndicator, 'Nav-itemIcon')),
236
- overflowLabel && isObject(overflowLabel)
237
- ? render('nav-overflow-label', overflowLabel)
238
- : overflowLabel)));
239
- }));
240
- }, maxCount: maxVisibleCount && Number.isInteger(maxVisibleCount)
241
- ? maxVisibleCount
242
- : 'responsive' })));
193
+ if (level && depth > level) {
194
+ return [];
195
+ }
196
+ return links.map(function (link) {
197
+ var beforeIcon = null;
198
+ var afterIcon = null;
199
+ if (Array.isArray(link.icon)) {
200
+ beforeIcon = link.icon
201
+ .filter(function (item) { return item.position === 'before'; })
202
+ .map(function (item) { return generateIcon(cx, item.icon); });
203
+ afterIcon = link.icon
204
+ .filter(function (item) { return item.position === 'after'; })
205
+ .map(function (item) { return generateIcon(cx, item.icon); });
206
+ }
207
+ else if (link.icon) {
208
+ beforeIcon = generateIcon(cx, link.icon);
209
+ }
210
+ var label = typeof link.label === 'string'
211
+ ? link.label
212
+ : React.isValidElement(link.label)
213
+ ? React.cloneElement(link.label)
214
+ : render('inline', link.label);
215
+ // 仅垂直内联模式支持
216
+ var isOverflow = stacked &&
217
+ mode !== 'float' &&
218
+ !link.expanded &&
219
+ link.overflow &&
220
+ isObject(link.overflow) &&
221
+ link.overflow.enable;
222
+ var children = link.children;
223
+ if (isOverflow) {
224
+ var _a = link.overflow, maxVisibleCount = _a.maxVisibleCount, _b = _a.overflowIndicator, overflowIndicator_1 = _b === void 0 ? 'fa fa-ellipsis' : _b, overflowLabel_1 = _a.overflowLabel, overflowClassName_1 = _a.overflowClassName;
225
+ // 默认展示5个
226
+ var maxCount_1 = maxVisibleCount || 2;
227
+ if (maxCount_1 < ((children === null || children === void 0 ? void 0 : children.length) || 0)) {
228
+ children = children === null || children === void 0 ? void 0 : children.map(function (child, index) {
229
+ return __assign(__assign({}, child), { label: index === maxCount_1 ? (React.createElement("span", { className: cx(overflowClassName_1) },
230
+ getIcon(overflowIndicator_1) ? (React.createElement(Icon, { icon: overflowIndicator_1, className: "icon" })) : (generateIcon(cx, overflowIndicator_1, 'Nav-itemIcon')),
231
+ overflowLabel_1 && isObject(overflowLabel_1)
232
+ ? render('nav-overflow-label', overflowLabel_1)
233
+ : overflowLabel_1)) : (child.label), hidden: index > maxCount_1 ? true : link.hidden, expandMore: index === maxCount_1 });
234
+ });
235
+ }
236
+ }
237
+ return {
238
+ link: link,
239
+ label: label,
240
+ labelExtra: afterIcon ? (React.createElement("i", { className: cx('Nav-itemIconAfter') }, afterIcon)) : null,
241
+ icon: beforeIcon ? React.createElement("i", null, beforeIcon) : null,
242
+ children: children
243
+ ? _this.normalizeNavigations(children, depth + 1)
244
+ : [],
245
+ path: link.to,
246
+ open: link.unfolded,
247
+ extra: itemActions
248
+ ? render('inline', itemActions, {
249
+ data: createObject(data, link),
250
+ popOverContainer: function () { return document.body; }
251
+ })
252
+ : null,
253
+ disabled: !!link.disabled,
254
+ disabledTip: link.disabledTip,
255
+ hidden: link.hidden,
256
+ className: link.className
257
+ };
258
+ });
243
259
  };
244
260
  Navigation.prototype.render = function () {
245
- var _this = this;
246
- var _a = this.props, className = _a.className, style = _a.style, stacked = _a.stacked, cx = _a.classnames, links = _a.links, loading = _a.loading, overflow = _a.overflow, loadingConfig = _a.loadingConfig;
261
+ var _a = this.props, className = _a.className, style = _a.style, stacked = _a.stacked, mode = _a.mode, cx = _a.classnames, links = _a.links, loading = _a.loading, overflow = _a.overflow, loadingConfig = _a.loadingConfig, itemBadge = _a.itemBadge, badge = _a.badge, data = _a.data, location = _a.location, collapsed = _a.collapsed, expandIcon = _a.expandIcon, indentSize = _a.indentSize, accordion = _a.accordion, draggable = _a.draggable, expandPosition = _a.expandPosition, render = _a.render;
247
262
  var dropIndicator = this.state.dropIndicator;
248
- return (React.createElement("div", { className: cx('Nav'), style: style }, overflow && isObject(overflow) && overflow.enable ? (this.renderOverflowNavs(__assign({ overflowIndicator: 'fa fa-ellipsis', wrapperComponent: 'ul', itemWidth: 160 }, overflow))) : (React.createElement(React.Fragment, null,
249
- React.createElement("ul", { className: cx('Nav-list', className, stacked ? 'Nav-list--stacked' : 'Nav-list--tabs') },
250
- Array.isArray(links)
251
- ? links.map(function (item, index) { return _this.renderItem(item, index); })
252
- : null,
263
+ var overflowedIndicator = null;
264
+ if (overflow && isObject(overflow) && overflow.enable) {
265
+ var _b = overflow.overflowIndicator, overflowIndicator = _b === void 0 ? 'fa fa-ellipsis' : _b, overflowLabel = overflow.overflowLabel, overflowClassName = overflow.overflowClassName;
266
+ overflowedIndicator = (React.createElement("span", { className: cx(overflowClassName) },
267
+ getIcon(overflowIndicator) ? (React.createElement(Icon, { icon: overflowIndicator, className: "icon" })) : (generateIcon(cx, overflowIndicator, 'Nav-itemIcon')),
268
+ overflowLabel && isObject(overflowLabel)
269
+ ? render('nav-overflow-label', overflowLabel)
270
+ : overflowLabel));
271
+ }
272
+ return (React.createElement("div", { className: cx('Nav'), style: style },
273
+ React.createElement(React.Fragment, null,
274
+ Array.isArray(links) ? (React.createElement(Menu, { className: className, navigations: this.normalizeNavigations(links, 1), isActive: function (link, prefix) {
275
+ if (link.link && typeof link.link.active !== 'undefined') {
276
+ return link.link.active;
277
+ }
278
+ var path = link.path;
279
+ var ret = location.pathname === path;
280
+ return !!ret;
281
+ }, isOpen: function (item) { return !!item.open; }, stacked: !!stacked, mode: mode, location: location, onSelect: this.handleClick, onToggle: this.toggleLink, renderLink: function (link) { return link.link; }, badge: itemBadge || badge, collapsed: collapsed, overflowedIndicator: overflowedIndicator, overflowMaxCount: overflow === null || overflow === void 0 ? void 0 : overflow.maxVisibleCount, overflowedIndicatorPopupClassName: cx(overflow === null || overflow === void 0 ? void 0 : overflow.overflowPopoverClassName), overflowSuffix: (overflow === null || overflow === void 0 ? void 0 : overflow.overflowSuffix)
282
+ ? render('nav-overflow-suffix', overflow === null || overflow === void 0 ? void 0 : overflow.overflowSuffix)
283
+ : null, overflowItemWidth: overflow === null || overflow === void 0 ? void 0 : overflow.itemWidth, overflowComponent: overflow === null || overflow === void 0 ? void 0 : overflow.wrapperComponent, overflowStyle: overflow === null || overflow === void 0 ? void 0 : overflow.style, expandIcon: expandIcon
284
+ ? typeof expandIcon === 'string'
285
+ ? expandIcon
286
+ : render('expand-icon', expandIcon)
287
+ : null, expandBefore: expandPosition === 'after' ? false : true, inlineIndent: indentSize, accordion: accordion, draggable: draggable, data: data, onDragStart: this.handleDragStart })) : null,
253
288
  React.createElement(Spinner, { show: !!loading, overlay: true, loadingConfig: loadingConfig })),
254
- dropIndicator ? (React.createElement("div", { className: cx('Nav-dropIndicator'), style: dropIndicator })) : null))));
289
+ dropIndicator ? (React.createElement("div", { className: cx('Nav-dropIndicator'), style: dropIndicator })) : null));
255
290
  };
256
291
  Navigation.defaultProps = {
257
- indentSize: 24
292
+ indentSize: 16
258
293
  };
259
294
  __decorate([
260
295
  autobind,
261
296
  __metadata("design:type", Function),
262
- __metadata("design:paramtypes", [Object]),
263
- __metadata("design:returntype", void 0)
297
+ __metadata("design:paramtypes", [Object, Number]),
298
+ __metadata("design:returntype", Promise)
264
299
  ], Navigation.prototype, "handleClick", null);
265
300
  __decorate([
266
301
  autobind,
@@ -301,6 +336,22 @@ var Navigation = /** @class */ (function (_super) {
301
336
  return Navigation;
302
337
  }(React.Component));
303
338
  var ThemedNavigation = themeable(Navigation);
339
+ function getActiveItems(config, depth, level) {
340
+ if (depth > level) {
341
+ return [];
342
+ }
343
+ var activeItems = [];
344
+ config &&
345
+ config.forEach(function (item) {
346
+ if (item.active) {
347
+ activeItems.push(item);
348
+ }
349
+ if (item.children) {
350
+ activeItems = activeItems.concat(getActiveItems(item.children, depth + 1, level));
351
+ }
352
+ });
353
+ return activeItems;
354
+ }
304
355
  var ConditionBuilderWithRemoteOptions = withRemoteConfig({
305
356
  adaptor: function (config, props) {
306
357
  var links = Array.isArray(config)
@@ -311,52 +362,114 @@ var ConditionBuilderWithRemoteOptions = withRemoteConfig({
311
362
  }
312
363
  return links;
313
364
  },
314
- afterLoad: function (response, config, props) {
315
- if (response.value && !someTree(config, function (item) { return item.active; })) {
316
- var env = props.env;
317
- env.jumpTo(filter(response.value, props.data));
318
- }
319
- },
365
+ afterLoad: function (response, config, props) { return __awaiter(void 0, void 0, void 0, function () {
366
+ var dispatchEvent, rendererEvent, env;
367
+ return __generator(this, function (_a) {
368
+ switch (_a.label) {
369
+ case 0:
370
+ dispatchEvent = props.dispatchEvent;
371
+ return [4 /*yield*/, dispatchEvent('loaded', {
372
+ data: response.value
373
+ })];
374
+ case 1:
375
+ rendererEvent = _a.sent();
376
+ if (rendererEvent === null || rendererEvent === void 0 ? void 0 : rendererEvent.prevented) {
377
+ return [2 /*return*/];
378
+ }
379
+ if (response.value && !someTree(config, function (item) { return item.active; })) {
380
+ env = props.env;
381
+ env.jumpTo(filter(response.value, props.data));
382
+ }
383
+ return [2 /*return*/];
384
+ }
385
+ });
386
+ }); },
320
387
  normalizeConfig: function (links, origin, props, motivation) {
321
388
  if (Array.isArray(links) && motivation !== 'toggle') {
322
- var data_1 = props.data, env_1 = props.env, unfoldedField_1 = props.unfoldedField, foldedField_1 = props.foldedField;
323
- links = mapTree(links, function (link) {
324
- var _a;
325
- var item = __assign(__assign(__assign({}, link), getExprProperties(link, data_1)), { active: (motivation !== 'location-change' && link.active) ||
389
+ var data_1 = props.data, env_1 = props.env, unfoldedField_1 = props.unfoldedField, foldedField_1 = props.foldedField, location_1 = props.location, level_1 = props.level, config = props.config, dispatchEvent_1 = props.dispatchEvent;
390
+ var isActive_1 = function (link, depth) {
391
+ return motivation !== 'location-change' &&
392
+ typeof link.active !== 'undefined'
393
+ ? link.active
394
+ : (depth === level_1
395
+ ? !!findTree(link.children || [], function (l) {
396
+ return !!(l.hasOwnProperty('to') &&
397
+ env_1 &&
398
+ env_1.isCurrentUrl(filter(l.to, data_1)));
399
+ })
400
+ : false) ||
326
401
  (link.activeOn
327
- ? evalExpression(link.activeOn, data_1)
402
+ ? evalExpression(link.activeOn, data_1) ||
403
+ evalExpression(link.activeOn, location_1)
328
404
  : !!(link.hasOwnProperty('to') &&
329
405
  env_1 &&
330
- env_1.isCurrentUrl(filter(link.to, data_1)))), __id: (_a = link.__id) !== null && _a !== void 0 ? _a : guid() });
406
+ env_1.isCurrentUrl(filter(link.to, data_1))));
407
+ };
408
+ links = mapTree(links, function (link, index, depth) {
409
+ var _a;
410
+ var item = __assign(__assign(__assign({}, link), getExprProperties(link, data_1)), { active: isActive_1(link, depth), __id: (_a = link.__id) !== null && _a !== void 0 ? _a : guid() });
331
411
  item.unfolded =
332
412
  isUnfolded(item, { unfoldedField: unfoldedField_1, foldedField: foldedField_1 }) ||
333
- (link.children && link.children.some(function (link) { return !!link.active; }));
413
+ (link.children &&
414
+ !!findTree(link.children, function (child, i, d) {
415
+ return isActive_1(child, depth + d);
416
+ }));
334
417
  return item;
335
418
  }, 1, true);
419
+ var currentActiveItems_1 = getActiveItems(links, 1, level_1);
420
+ var prevActiveItems_1 = getActiveItems(config, 1, level_1);
421
+ setTimeout(function () {
422
+ if (!isEqual(currentActiveItems_1, prevActiveItems_1)) {
423
+ dispatchEvent_1('change', { activeItems: currentActiveItems_1 });
424
+ }
425
+ }, 0);
336
426
  }
337
427
  return links;
338
428
  },
339
429
  beforeDeferLoad: function (item, indexes, links) {
340
430
  return spliceTree(links, indexes, 1, __assign(__assign({}, item), { loading: true }));
341
431
  },
342
- afterDeferLoad: function (item, indexes, ret, links) {
343
- var newItem = __assign(__assign({}, item), { loading: false, loaded: true, error: ret.ok ? undefined : ret.msg });
344
- var children = Array.isArray(ret.data)
345
- ? ret.data
346
- : ret.data.links || ret.data.options || ret.data.items || ret.data.rows;
347
- if (Array.isArray(children)) {
348
- newItem.children = children.concat();
349
- newItem.unfolded = true;
350
- }
351
- return spliceTree(links, indexes, 1, newItem);
432
+ afterDeferLoad: function (item, indexes, ret, links, props) {
433
+ return __awaiter(this, void 0, void 0, function () {
434
+ var dispatchEvent, rendererEvent, newItem, children;
435
+ return __generator(this, function (_a) {
436
+ switch (_a.label) {
437
+ case 0:
438
+ dispatchEvent = props.dispatchEvent;
439
+ return [4 /*yield*/, dispatchEvent('loaded', {
440
+ data: ret.data,
441
+ item: __assign({}, item)
442
+ })];
443
+ case 1:
444
+ rendererEvent = _a.sent();
445
+ if (rendererEvent === null || rendererEvent === void 0 ? void 0 : rendererEvent.prevented) {
446
+ return [2 /*return*/];
447
+ }
448
+ newItem = __assign(__assign({}, item), { loading: false, loaded: true, error: ret.ok ? undefined : ret.msg });
449
+ children = Array.isArray(ret.data)
450
+ ? ret.data
451
+ : ret.data.links || ret.data.options || ret.data.items || ret.data.rows;
452
+ if (Array.isArray(children)) {
453
+ newItem.children = children.concat();
454
+ newItem.unfolded = true;
455
+ }
456
+ return [2 /*return*/, spliceTree(links, indexes, 1, newItem)];
457
+ }
458
+ });
459
+ });
352
460
  }
353
461
  })(/** @class */ (function (_super) {
354
462
  __extends(class_1, _super);
355
463
  function class_1(props) {
356
464
  var _this = _super.call(this, props) || this;
465
+ _this.state = {
466
+ currentKey: props.showKey || '',
467
+ collapsed: props.collapsed || false
468
+ };
357
469
  _this.toggleLink = _this.toggleLink.bind(_this);
358
470
  _this.handleSelect = _this.handleSelect.bind(_this);
359
471
  _this.dragUpdate = _this.dragUpdate.bind(_this);
472
+ props === null || props === void 0 ? void 0 : props.onRef(_this);
360
473
  return _this;
361
474
  }
362
475
  class_1.prototype.componentDidMount = function () {
@@ -364,26 +477,64 @@ var ConditionBuilderWithRemoteOptions = withRemoteConfig({
364
477
  this.props.updateConfig(this.props.links, 'mount');
365
478
  }
366
479
  };
367
- class_1.prototype.componentDidUpdate = function (prevProps) {
368
- if (this.props.location !== prevProps.location) {
480
+ class_1.prototype.getCurrentLink = function (key) {
481
+ var link = null;
482
+ var _a = this.props, config = _a.config, data = _a.data;
483
+ var id = resolveVariableAndFilter(key, data, '| raw');
484
+ if (key) {
485
+ link = findTree(config, function (item) { return item.label == id || item.key == id; });
486
+ }
487
+ return link;
488
+ };
489
+ class_1.prototype.componentDidUpdate = function (prevProps, prevState) {
490
+ if (!isEqual(this.props.location, prevProps.location)) {
369
491
  this.props.updateConfig(this.props.config, 'location-change');
370
492
  }
371
- else if (this.props.links !== prevProps.links) {
493
+ else if (!isEqual(this.props.links, prevProps.links)) {
372
494
  this.props.updateConfig(this.props.links, 'update');
373
495
  }
374
- };
375
- class_1.prototype.toggleLink = function (target, forceFold) {
376
- var _a = this.props, config = _a.config, updateConfig = _a.updateConfig, deferLoad = _a.deferLoad;
377
- if (target.defer && !target.loaded) {
378
- deferLoad(target);
496
+ if (prevProps.collapsed !== this.props.collapsed) {
497
+ this.setState({ collapsed: this.props.collapsed });
379
498
  }
380
- else {
381
- updateConfig(mapTree(config, function (link) {
382
- return target === link
383
- ? __assign(__assign({}, link), { unfolded: forceFold ? false : !link.unfolded }) : link;
384
- }), 'toggle');
499
+ if (prevState.collapsed !== this.state.collapsed) {
500
+ this.props.dispatchEvent('collapsed', {
501
+ collapsed: this.state.collapsed
502
+ });
385
503
  }
386
504
  };
505
+ class_1.prototype.toggleLink = function (target, forceFold) {
506
+ return __awaiter(this, void 0, void 0, function () {
507
+ var _a, config, updateConfig, deferLoad, dispatchEvent, stacked, mode, accordion, isAccordion, rendererEvent;
508
+ return __generator(this, function (_b) {
509
+ switch (_b.label) {
510
+ case 0:
511
+ _a = this.props, config = _a.config, updateConfig = _a.updateConfig, deferLoad = _a.deferLoad, dispatchEvent = _a.dispatchEvent, stacked = _a.stacked, mode = _a.mode, accordion = _a.accordion;
512
+ isAccordion = stacked && mode !== 'float' && accordion;
513
+ return [4 /*yield*/, dispatchEvent('toggled', {
514
+ item: __assign({}, target),
515
+ open: typeof forceFold !== 'undefined' ? !forceFold : !target.unfolded
516
+ })];
517
+ case 1:
518
+ rendererEvent = _b.sent();
519
+ if (rendererEvent === null || rendererEvent === void 0 ? void 0 : rendererEvent.prevented) {
520
+ return [2 /*return*/];
521
+ }
522
+ if (target.defer && !target.loaded) {
523
+ deferLoad(target);
524
+ }
525
+ else {
526
+ updateConfig(mapTree(config, function (link) {
527
+ return target === link
528
+ ? __assign(__assign({}, link), { unfolded: typeof forceFold !== 'undefined'
529
+ ? !forceFold
530
+ : !link.unfolded }) : __assign(__assign({}, link), { unfolded: isAccordion ? false : link.unfolded });
531
+ }), 'toggle');
532
+ }
533
+ return [2 /*return*/];
534
+ }
535
+ });
536
+ });
537
+ };
387
538
  class_1.prototype.dragUpdate = function (dropInfo) {
388
539
  var _a, _b;
389
540
  return __awaiter(this, void 0, void 0, function () {
@@ -447,14 +598,14 @@ var ConditionBuilderWithRemoteOptions = withRemoteConfig({
447
598
  case 0:
448
599
  _a = this.props, saveOrderApi = _a.saveOrderApi, env = _a.env, data = _a.data, reload = _a.reload;
449
600
  if (!(saveOrderApi && isEffectiveApi(saveOrderApi))) return [3 /*break*/, 2];
450
- return [4 /*yield*/, env.fetcher(saveOrderApi, createObject(data, { data: links }), { method: 'post' })];
601
+ return [4 /*yield*/, (env === null || env === void 0 ? void 0 : env.fetcher(saveOrderApi, createObject(data, { data: links }), { method: 'post' }))];
451
602
  case 1:
452
603
  _b.sent();
453
604
  reload();
454
605
  return [3 /*break*/, 3];
455
606
  case 2:
456
607
  if (!this.props.onOrderChange) {
457
- env.alert('NAV saveOrderApi is required!');
608
+ env === null || env === void 0 ? void 0 : env.alert('NAV saveOrderApi is required!');
458
609
  }
459
610
  _b.label = 3;
460
611
  case 3: return [2 /*return*/];
@@ -462,22 +613,54 @@ var ConditionBuilderWithRemoteOptions = withRemoteConfig({
462
613
  });
463
614
  });
464
615
  };
465
- class_1.prototype.handleSelect = function (link) {
466
- var _a = this.props, onSelect = _a.onSelect, env = _a.env, data = _a.data;
467
- if (onSelect && onSelect(link) === false) {
468
- return;
469
- }
470
- if (!link.to &&
471
- ((link.children && link.children.length) ||
472
- (link.defer && !link.loaded))) {
473
- this.toggleLink(link);
474
- return;
475
- }
476
- env === null || env === void 0 ? void 0 : env.jumpTo(filter(link.to, data), link);
616
+ class_1.prototype.expandLink = function (target) {
617
+ var _a = this.props, config = _a.config, updateConfig = _a.updateConfig;
618
+ updateConfig(mapTree(config, function (link) {
619
+ if (findTree((link === null || link === void 0 ? void 0 : link.children) || [], function (item) { return item.__id === target.__id; })) {
620
+ return __assign(__assign({}, link), { expanded: true });
621
+ }
622
+ return __assign({}, link);
623
+ }), 'expand');
624
+ };
625
+ class_1.prototype.handleSelect = function (link, depth) {
626
+ return __awaiter(this, void 0, void 0, function () {
627
+ var _a, onSelect, env, data, level, dispatchEvent, updateConfig, config, rendererEvent;
628
+ return __generator(this, function (_b) {
629
+ switch (_b.label) {
630
+ case 0:
631
+ _a = this.props, onSelect = _a.onSelect, env = _a.env, data = _a.data, level = _a.level, dispatchEvent = _a.dispatchEvent, updateConfig = _a.updateConfig, config = _a.config;
632
+ return [4 /*yield*/, dispatchEvent('click', {
633
+ item: __assign({}, link)
634
+ })];
635
+ case 1:
636
+ rendererEvent = _b.sent();
637
+ if (rendererEvent === null || rendererEvent === void 0 ? void 0 : rendererEvent.prevented) {
638
+ return [2 /*return*/, true];
639
+ }
640
+ if (onSelect && onSelect(link) === false) {
641
+ return [2 /*return*/, true];
642
+ }
643
+ // 叶子节点点击也会默认选中
644
+ if (depth === level) {
645
+ updateConfig(mapTree(config, function (target) {
646
+ return __assign(__assign({}, target), { active: target.__id === link.__id });
647
+ }), 'select');
648
+ return [2 /*return*/, true];
649
+ }
650
+ if (link.expandMore) {
651
+ this.expandLink(link);
652
+ return [2 /*return*/, false];
653
+ }
654
+ env === null || env === void 0 ? void 0 : env.jumpTo(filter(link.to, data), link);
655
+ return [2 /*return*/, true];
656
+ }
657
+ });
658
+ });
477
659
  };
478
660
  class_1.prototype.render = function () {
479
661
  var _a = this.props, loading = _a.loading, config = _a.config; _a.deferLoad; _a.updateConfig; var rest = __rest(_a, ["loading", "config", "deferLoad", "updateConfig"]);
480
- return (React.createElement(ThemedNavigation, __assign({}, rest, { loading: loading, links: config || [], disabled: loading, onSelect: this.handleSelect, onToggle: this.toggleLink, onDragUpdate: this.dragUpdate })));
662
+ var currentLink = this.getCurrentLink(this.state.currentKey);
663
+ return (React.createElement(ThemedNavigation, __assign({}, rest, { loading: loading, links: (currentLink === null || currentLink === void 0 ? void 0 : currentLink.children) || config, collapsed: this.state.collapsed, disabled: loading, onSelect: this.handleSelect, onToggle: this.toggleLink, onDragUpdate: this.dragUpdate })));
481
664
  };
482
665
  return class_1;
483
666
  }(React.Component)));
@@ -493,16 +676,62 @@ var ConditionBuilderWithRemoteOptions = withRemoteConfig({
493
676
  NavigationRenderer.prototype.remoteConfigRef = function (ref) {
494
677
  this.remoteRef = ref;
495
678
  };
679
+ NavigationRenderer.prototype.getRef = function (ref) {
680
+ this.navRef = ref;
681
+ };
496
682
  NavigationRenderer.prototype.componentWillUnmount = function () {
497
683
  var scoped = this.context;
498
684
  scoped.unRegisterComponent(this);
499
685
  };
686
+ NavigationRenderer.prototype.doAction = function (action, args) {
687
+ var actionType = action === null || action === void 0 ? void 0 : action.actionType;
688
+ if (actionType === 'updateItems') {
689
+ var children = [];
690
+ if (args.value) {
691
+ if (Array.isArray(args.value)) {
692
+ // 只展示触发项的children属性
693
+ // 多个的话 默认只展示第一个
694
+ if (args.value.length > 0) {
695
+ var item = args.value.find(function (item) { return item.children && item.children.length; });
696
+ if (item) {
697
+ var key = (item === null || item === void 0 ? void 0 : item.key) || (item === null || item === void 0 ? void 0 : item.label);
698
+ if (this.navRef.state.currentKey !== key) {
699
+ this.navRef.setState({ currentKey: (item === null || item === void 0 ? void 0 : item.key) || (item === null || item === void 0 ? void 0 : item.label) });
700
+ children = item.children;
701
+ }
702
+ }
703
+ }
704
+ }
705
+ else if (typeof args.value === 'string') {
706
+ var currentLink = this.navRef.getCurrentLink(args.value);
707
+ this.navRef.setState({
708
+ currentKey: currentLink.key || currentLink.label
709
+ });
710
+ children = currentLink === null || currentLink === void 0 ? void 0 : currentLink.children;
711
+ }
712
+ }
713
+ if (children.length > 0) {
714
+ var _a = this.props, env_2 = _a.env, data_2 = _a.data;
715
+ var child = findTree(children, function (item) { return env_2 && env_2.isCurrentUrl(filter(item.to, data_2)); });
716
+ env_2 === null || env_2 === void 0 ? void 0 : env_2.jumpTo(filter(child ? child.to : children[0].to, data_2));
717
+ }
718
+ }
719
+ else if (actionType === 'collapse') {
720
+ var collapsed = args && typeof args.value !== 'undefined'
721
+ ? args.value
722
+ : !this.navRef.state.collapsed;
723
+ this.navRef.setState({ collapsed: collapsed });
724
+ }
725
+ else if (actionType === 'reset') {
726
+ this.navRef.setState({ currentKey: '' });
727
+ }
728
+ };
500
729
  NavigationRenderer.prototype.reload = function (target, query, values) {
501
730
  var _a;
502
731
  if (query) {
503
732
  return this.receive(query);
504
733
  }
505
- var _b = this.props, data = _b.data; _b.env; _b.source; _b.translate;
734
+ var _b = this.props, data = _b.data; _b.translate;
506
735
  var finalData = values ? createObject(data, values) : data;
507
736
  (_a = this.remoteRef) === null || _a === void 0 ? void 0 : _a.loadConfig(finalData);
508
737
  };
@@ -511,7 +740,7 @@ var ConditionBuilderWithRemoteOptions = withRemoteConfig({
511
740
  };
512
741
  NavigationRenderer.prototype.render = function () {
513
742
  var rest = __rest(this.props, []);
514
- return (React.createElement(ConditionBuilderWithRemoteOptions, __assign({}, rest, { reload: this.reload, remoteConfigRef: this.remoteConfigRef })));
743
+ return (React.createElement(ConditionBuilderWithRemoteOptions, __assign({}, rest, { onRef: this.getRef, reload: this.reload, remoteConfigRef: this.remoteConfigRef })));
515
744
  };
516
745
  NavigationRenderer.contextType = ScopedContext;
517
746
  __decorate([
@@ -520,6 +749,12 @@ var ConditionBuilderWithRemoteOptions = withRemoteConfig({
520
749
  __metadata("design:paramtypes", [Object]),
521
750
  __metadata("design:returntype", void 0)
522
751
  ], NavigationRenderer.prototype, "remoteConfigRef", null);
752
+ __decorate([
753
+ autobind,
754
+ __metadata("design:type", Function),
755
+ __metadata("design:paramtypes", [Object]),
756
+ __metadata("design:returntype", void 0)
757
+ ], NavigationRenderer.prototype, "getRef", null);
523
758
  __decorate([
524
759
  autobind,
525
760
  __metadata("design:type", Function),