amis 2.6.0 → 2.7.0

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