amis 2.0.0-rc.9 → 2.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (542) hide show
  1. package/esm/Schema.d.ts +442 -0
  2. package/esm/compat.d.ts +1 -0
  3. package/esm/compat.js +459 -0
  4. package/esm/index.d.ts +146 -0
  5. package/esm/index.js +144 -0
  6. package/esm/preset.d.ts +1 -0
  7. package/esm/preset.js +40 -0
  8. package/esm/renderers/Action.d.ts +393 -0
  9. package/esm/renderers/Action.js +443 -0
  10. package/esm/renderers/Alert.d.ts +49 -0
  11. package/esm/renderers/Alert.js +35 -0
  12. package/esm/renderers/AnchorNav.d.ts +69 -0
  13. package/esm/renderers/AnchorNav.js +97 -0
  14. package/esm/renderers/App.d.ts +133 -0
  15. package/esm/renderers/App.js +214 -0
  16. package/esm/renderers/Audio.d.ts +88 -0
  17. package/esm/renderers/Audio.js +382 -0
  18. package/esm/renderers/Avatar.d.ts +75 -0
  19. package/esm/renderers/Avatar.js +54 -0
  20. package/esm/renderers/BarCode.d.ts +35 -0
  21. package/esm/renderers/BarCode.js +38 -0
  22. package/esm/renderers/Breadcrumb.d.ts +89 -0
  23. package/esm/renderers/Breadcrumb.js +58 -0
  24. package/esm/renderers/ButtonGroup.d.ts +64 -0
  25. package/esm/renderers/ButtonGroup.js +22 -0
  26. package/esm/renderers/CRUD.d.ts +302 -0
  27. package/esm/renderers/CRUD.js +1244 -0
  28. package/esm/renderers/CRUD2.d.ts +215 -0
  29. package/esm/renderers/CRUD2.js +748 -0
  30. package/esm/renderers/Calendar.d.ts +45 -0
  31. package/esm/renderers/Calendar.js +22 -0
  32. package/esm/renderers/Card.d.ts +236 -0
  33. package/esm/renderers/Card.js +376 -0
  34. package/esm/renderers/Card2.d.ts +77 -0
  35. package/esm/renderers/Card2.js +83 -0
  36. package/esm/renderers/Cards.d.ts +170 -0
  37. package/esm/renderers/Cards.js +555 -0
  38. package/esm/renderers/Carousel.d.ts +103 -0
  39. package/esm/renderers/Carousel.js +329 -0
  40. package/esm/renderers/Chart.d.ts +116 -0
  41. package/esm/renderers/Chart.js +352 -0
  42. package/esm/renderers/Code.d.ts +84 -0
  43. package/esm/renderers/Code.js +130 -0
  44. package/esm/renderers/Collapse.d.ts +83 -0
  45. package/esm/renderers/Collapse.js +47 -0
  46. package/esm/renderers/CollapseGroup.d.ts +42 -0
  47. package/esm/renderers/CollapseGroup.js +35 -0
  48. package/esm/renderers/Color.d.ts +36 -0
  49. package/esm/renderers/Color.js +42 -0
  50. package/esm/renderers/Container.d.ts +44 -0
  51. package/esm/renderers/Container.js +49 -0
  52. package/esm/renderers/Copyable.d.ts +25 -0
  53. package/esm/renderers/Copyable.js +49 -0
  54. package/esm/renderers/Custom.d.ts +51 -0
  55. package/esm/renderers/Custom.js +163 -0
  56. package/esm/renderers/Date.d.ts +58 -0
  57. package/esm/renderers/Date.js +121 -0
  58. package/esm/renderers/Dialog.d.ts +1357 -0
  59. package/esm/renderers/Dialog.js +633 -0
  60. package/esm/renderers/Divider.d.ts +20 -0
  61. package/esm/renderers/Divider.js +38 -0
  62. package/esm/renderers/Drawer.d.ts +153 -0
  63. package/esm/renderers/Drawer.js +608 -0
  64. package/esm/renderers/DropDownButton.d.ts +114 -0
  65. package/esm/renderers/DropDownButton.js +153 -0
  66. package/esm/renderers/Each.d.ts +38 -0
  67. package/esm/renderers/Each.js +59 -0
  68. package/esm/renderers/Flex.d.ts +77 -0
  69. package/esm/renderers/Flex.js +84 -0
  70. package/esm/renderers/Form/ButtonGroupSelect.d.ts +26 -0
  71. package/esm/renderers/Form/ButtonGroupSelect.js +114 -0
  72. package/esm/renderers/Form/ButtonToolbar.d.ts +28 -0
  73. package/esm/renderers/Form/ButtonToolbar.js +50 -0
  74. package/esm/renderers/Form/ChainedSelect.d.ts +36 -0
  75. package/esm/renderers/Form/ChainedSelect.js +218 -0
  76. package/esm/renderers/Form/ChartRadios.d.ts +34 -0
  77. package/esm/renderers/Form/ChartRadios.js +121 -0
  78. package/esm/renderers/Form/Checkbox.d.ts +47 -0
  79. package/esm/renderers/Form/Checkbox.js +83 -0
  80. package/esm/renderers/Form/Checkboxes.d.ts +65 -0
  81. package/esm/renderers/Form/Checkboxes.js +227 -0
  82. package/esm/renderers/Form/Combo.d.ts +253 -0
  83. package/esm/renderers/Form/Combo.js +856 -0
  84. package/esm/renderers/Form/ConditionBuilder.d.ts +56 -0
  85. package/esm/renderers/Form/ConditionBuilder.js +69 -0
  86. package/esm/renderers/Form/Control.d.ts +18 -0
  87. package/esm/renderers/Form/Control.js +38 -0
  88. package/esm/renderers/Form/DiffEditor.d.ts +3925 -0
  89. package/esm/renderers/Form/DiffEditor.js +199 -0
  90. package/esm/renderers/Form/Editor.d.ts +3856 -0
  91. package/esm/renderers/Form/Editor.js +247 -0
  92. package/esm/renderers/Form/FieldSet.d.ts +70 -0
  93. package/esm/renderers/Form/FieldSet.js +59 -0
  94. package/esm/renderers/Form/Formula.d.ts +53 -0
  95. package/esm/renderers/Form/Formula.js +128 -0
  96. package/esm/renderers/Form/Group.d.ts +57 -0
  97. package/esm/renderers/Form/Group.js +99 -0
  98. package/esm/renderers/Form/Hidden.d.ts +15 -0
  99. package/esm/renderers/Form/Hidden.js +35 -0
  100. package/esm/renderers/Form/IconPicker.d.ts +49 -0
  101. package/esm/renderers/Form/IconPicker.js +305 -0
  102. package/esm/renderers/Form/IconPickerIcons.d.ts +8 -0
  103. package/esm/renderers/Form/IconPickerIcons.js +26 -0
  104. package/esm/renderers/Form/InputArray.d.ts +31 -0
  105. package/esm/renderers/Form/InputArray.js +45 -0
  106. package/esm/renderers/Form/InputCity.d.ts +654 -0
  107. package/esm/renderers/Form/InputCity.js +347 -0
  108. package/esm/renderers/Form/InputColor.d.ts +504 -0
  109. package/esm/renderers/Form/InputColor.js +52 -0
  110. package/esm/renderers/Form/InputDate.d.ts +359 -0
  111. package/esm/renderers/Form/InputDate.js +258 -0
  112. package/esm/renderers/Form/InputDateRange.d.ts +121 -0
  113. package/esm/renderers/Form/InputDateRange.js +166 -0
  114. package/esm/renderers/Form/InputExcel.d.ts +52 -0
  115. package/esm/renderers/Form/InputExcel.js +200 -0
  116. package/esm/renderers/Form/InputFile.d.ts +257 -0
  117. package/esm/renderers/Form/InputFile.js +939 -0
  118. package/esm/renderers/Form/InputFormula.d.ts +91 -0
  119. package/esm/renderers/Form/InputFormula.js +67 -0
  120. package/esm/renderers/Form/InputGroup.d.ts +33 -0
  121. package/esm/renderers/Form/InputGroup.js +111 -0
  122. package/esm/renderers/Form/InputImage.d.ts +315 -0
  123. package/esm/renderers/Form/InputImage.js +908 -0
  124. package/esm/renderers/Form/InputMonthRange.d.ts +22 -0
  125. package/esm/renderers/Form/InputMonthRange.js +46 -0
  126. package/esm/renderers/Form/InputNumber.d.ts +128 -0
  127. package/esm/renderers/Form/InputNumber.js +210 -0
  128. package/esm/renderers/Form/InputQuarterRange.d.ts +22 -0
  129. package/esm/renderers/Form/InputQuarterRange.js +46 -0
  130. package/esm/renderers/Form/InputRange.d.ts +271 -0
  131. package/esm/renderers/Form/InputRange.js +388 -0
  132. package/esm/renderers/Form/InputRating.d.ts +74 -0
  133. package/esm/renderers/Form/InputRating.js +82 -0
  134. package/esm/renderers/Form/InputRepeat.d.ts +35 -0
  135. package/esm/renderers/Form/InputRepeat.js +115 -0
  136. package/esm/renderers/Form/InputRichText.d.ts +56 -0
  137. package/esm/renderers/Form/InputRichText.js +177 -0
  138. package/esm/renderers/Form/InputSubForm.d.ts +123 -0
  139. package/esm/renderers/Form/InputSubForm.js +269 -0
  140. package/esm/renderers/Form/InputTable.d.ts +180 -0
  141. package/esm/renderers/Form/InputTable.js +681 -0
  142. package/esm/renderers/Form/InputTag.d.ts +108 -0
  143. package/esm/renderers/Form/InputTag.js +439 -0
  144. package/esm/renderers/Form/InputText.d.ts +141 -0
  145. package/esm/renderers/Form/InputText.js +636 -0
  146. package/esm/renderers/Form/InputTree.d.ts +86 -0
  147. package/esm/renderers/Form/InputTree.js +108 -0
  148. package/esm/renderers/Form/InputYearRange.d.ts +22 -0
  149. package/esm/renderers/Form/InputYearRange.js +46 -0
  150. package/esm/renderers/Form/JSONSchema.d.ts +24 -0
  151. package/esm/renderers/Form/JSONSchema.js +45 -0
  152. package/esm/renderers/Form/JSONSchemaEditor.d.ts +64 -0
  153. package/esm/renderers/Form/JSONSchemaEditor.js +57 -0
  154. package/esm/renderers/Form/ListSelect.d.ts +45 -0
  155. package/esm/renderers/Form/ListSelect.js +89 -0
  156. package/esm/renderers/Form/LocationPicker.d.ts +35 -0
  157. package/esm/renderers/Form/LocationPicker.js +39 -0
  158. package/esm/renderers/Form/MatrixCheckboxes.d.ts +79 -0
  159. package/esm/renderers/Form/MatrixCheckboxes.js +266 -0
  160. package/esm/renderers/Form/NestedSelect.d.ts +91 -0
  161. package/esm/renderers/Form/NestedSelect.js +703 -0
  162. package/esm/renderers/Form/Picker.d.ts +86 -0
  163. package/esm/renderers/Form/Picker.js +361 -0
  164. package/esm/renderers/Form/Radios.d.ts +39 -0
  165. package/esm/renderers/Form/Radios.js +91 -0
  166. package/esm/renderers/Form/Select.d.ts +145 -0
  167. package/esm/renderers/Form/Select.js +310 -0
  168. package/esm/renderers/Form/Static.d.ts +59 -0
  169. package/esm/renderers/Form/Static.js +109 -0
  170. package/esm/renderers/Form/Switch.d.ts +54 -0
  171. package/esm/renderers/Form/Switch.js +77 -0
  172. package/esm/renderers/Form/TabsTransfer.d.ts +30 -0
  173. package/esm/renderers/Form/TabsTransfer.js +241 -0
  174. package/esm/renderers/Form/TabsTransferPicker.d.ts +26 -0
  175. package/esm/renderers/Form/TabsTransferPicker.js +72 -0
  176. package/esm/renderers/Form/Textarea.d.ts +69 -0
  177. package/esm/renderers/Form/Textarea.js +103 -0
  178. package/esm/renderers/Form/Transfer.d.ts +115 -0
  179. package/esm/renderers/Form/Transfer.js +276 -0
  180. package/esm/renderers/Form/TransferPicker.d.ts +26 -0
  181. package/esm/renderers/Form/TransferPicker.js +66 -0
  182. package/esm/renderers/Form/TreeSelect.d.ts +132 -0
  183. package/esm/renderers/Form/TreeSelect.js +376 -0
  184. package/esm/renderers/Form/UUID.d.ts +22 -0
  185. package/esm/renderers/Form/UUID.js +52 -0
  186. package/esm/renderers/Form/UserSelect.d.ts +55 -0
  187. package/esm/renderers/Form/UserSelect.js +194 -0
  188. package/esm/renderers/Grid.d.ts +82 -0
  189. package/esm/renderers/Grid.js +88 -0
  190. package/esm/renderers/Grid2D.d.ts +91 -0
  191. package/esm/renderers/Grid2D.js +113 -0
  192. package/esm/renderers/GridNav.d.ts +99 -0
  193. package/esm/renderers/GridNav.js +80 -0
  194. package/esm/renderers/HBox.d.ts +95 -0
  195. package/esm/renderers/HBox.js +75 -0
  196. package/esm/renderers/IFrame.d.ts +49 -0
  197. package/esm/renderers/IFrame.js +169 -0
  198. package/esm/renderers/Icon.d.ts +28 -0
  199. package/esm/renderers/Icon.js +60 -0
  200. package/esm/renderers/Image.d.ts +415 -0
  201. package/esm/renderers/Image.js +120 -0
  202. package/esm/renderers/Images.d.ts +80 -0
  203. package/esm/renderers/Images.js +89 -0
  204. package/esm/renderers/Json.d.ts +68 -0
  205. package/esm/renderers/Json.js +98 -0
  206. package/esm/renderers/Link.d.ts +56 -0
  207. package/esm/renderers/Link.js +61 -0
  208. package/esm/renderers/List.d.ts +260 -0
  209. package/esm/renderers/List.js +680 -0
  210. package/esm/renderers/Log.d.ts +93 -0
  211. package/esm/renderers/Log.js +278 -0
  212. package/esm/renderers/Mapping.d.ts +354 -0
  213. package/esm/renderers/Mapping.js +160 -0
  214. package/esm/renderers/Markdown.d.ts +42 -0
  215. package/esm/renderers/Markdown.js +97 -0
  216. package/esm/renderers/Nav.d.ts +258 -0
  217. package/esm/renderers/Nav.js +544 -0
  218. package/esm/renderers/Operation.d.ts +28 -0
  219. package/esm/renderers/Operation.js +43 -0
  220. package/esm/renderers/Page.d.ts +228 -0
  221. package/esm/renderers/Page.js +593 -0
  222. package/esm/renderers/Pagination.d.ts +68 -0
  223. package/esm/renderers/Pagination.js +35 -0
  224. package/esm/renderers/PaginationWrapper.d.ts +67 -0
  225. package/esm/renderers/PaginationWrapper.js +74 -0
  226. package/esm/renderers/Panel.d.ts +86 -0
  227. package/esm/renderers/Panel.js +144 -0
  228. package/esm/renderers/Plain.d.ts +35 -0
  229. package/esm/renderers/Plain.js +42 -0
  230. package/esm/renderers/PopOver.d.ts +69 -0
  231. package/esm/renderers/PopOver.js +166 -0
  232. package/esm/renderers/Portlet.d.ts +125 -0
  233. package/esm/renderers/Portlet.js +152 -0
  234. package/esm/renderers/Progress.d.ts +81 -0
  235. package/esm/renderers/Progress.js +61 -0
  236. package/esm/renderers/Property.d.ts +99 -0
  237. package/esm/renderers/Property.js +95 -0
  238. package/esm/renderers/QRCode.d.ts +63 -0
  239. package/esm/renderers/QRCode.js +75 -0
  240. package/esm/renderers/QuickEdit.d.ts +65 -0
  241. package/esm/renderers/QuickEdit.js +337 -0
  242. package/esm/renderers/Remark.d.ts +105 -0
  243. package/esm/renderers/Remark.js +100 -0
  244. package/esm/renderers/SearchBox.d.ts +69 -0
  245. package/esm/renderers/SearchBox.js +77 -0
  246. package/esm/renderers/Service.d.ts +120 -0
  247. package/esm/renderers/Service.js +437 -0
  248. package/esm/renderers/SparkLine.d.ts +44 -0
  249. package/esm/renderers/SparkLine.js +40 -0
  250. package/esm/renderers/Spinner.d.ts +64 -0
  251. package/esm/renderers/Spinner.js +32 -0
  252. package/esm/renderers/Status.d.ts +55 -0
  253. package/esm/renderers/Status.js +84 -0
  254. package/esm/renderers/Steps.d.ts +66 -0
  255. package/esm/renderers/Steps.js +77 -0
  256. package/esm/renderers/Table/ColumnToggler.d.ts +120 -0
  257. package/esm/renderers/Table/ColumnToggler.js +255 -0
  258. package/esm/renderers/Table/HeadCellFilterDropdown.d.ts +32 -0
  259. package/esm/renderers/Table/HeadCellFilterDropdown.js +211 -0
  260. package/esm/renderers/Table/HeadCellSearchDropdown.d.ts +32 -0
  261. package/esm/renderers/Table/HeadCellSearchDropdown.js +193 -0
  262. package/esm/renderers/Table/ItemActionsWrapper.d.ts +11 -0
  263. package/esm/renderers/Table/ItemActionsWrapper.js +35 -0
  264. package/esm/renderers/Table/TableBody.d.ts +90 -0
  265. package/esm/renderers/Table/TableBody.js +105 -0
  266. package/esm/renderers/Table/TableCell.d.ts +21 -0
  267. package/esm/renderers/Table/TableCell.js +139 -0
  268. package/esm/renderers/Table/TableContent.d.ts +54 -0
  269. package/esm/renderers/Table/TableContent.js +69 -0
  270. package/esm/renderers/Table/TableRow.d.ts +27 -0
  271. package/esm/renderers/Table/TableRow.js +129 -0
  272. package/esm/renderers/Table/exportExcel.d.ts +6 -0
  273. package/esm/renderers/Table/exportExcel.js +301 -0
  274. package/esm/renderers/Table/index.d.ts +373 -0
  275. package/esm/renderers/Table/index.js +1583 -0
  276. package/esm/renderers/Table-v2/ColumnToggler.d.ts +19 -0
  277. package/esm/renderers/Table-v2/ColumnToggler.js +88 -0
  278. package/esm/renderers/Table-v2/HeadCellSearchDropdown.d.ts +29 -0
  279. package/esm/renderers/Table-v2/HeadCellSearchDropdown.js +206 -0
  280. package/esm/renderers/Table-v2/TableCell.d.ts +6 -0
  281. package/esm/renderers/Table-v2/TableCell.js +30 -0
  282. package/esm/renderers/Table-v2/index.d.ts +285 -0
  283. package/esm/renderers/Table-v2/index.js +833 -0
  284. package/esm/renderers/TableView.d.ts +136 -0
  285. package/esm/renderers/TableView.js +95 -0
  286. package/esm/renderers/Tabs.d.ts +204 -0
  287. package/esm/renderers/Tabs.js +501 -0
  288. package/esm/renderers/Tag.d.ts +66 -0
  289. package/esm/renderers/Tag.js +50 -0
  290. package/esm/renderers/Tasks.d.ts +140 -0
  291. package/esm/renderers/Tasks.js +209 -0
  292. package/esm/renderers/Timeline.d.ts +65 -0
  293. package/esm/renderers/Timeline.js +54 -0
  294. package/esm/renderers/TooltipWrapper.d.ts +133 -0
  295. package/esm/renderers/TooltipWrapper.js +70 -0
  296. package/esm/renderers/Tpl.d.ts +51 -0
  297. package/esm/renderers/Tpl.js +88 -0
  298. package/esm/renderers/VBox.d.ts +30 -0
  299. package/esm/renderers/VBox.js +48 -0
  300. package/esm/renderers/Video.d.ts +171 -0
  301. package/esm/renderers/Video.js +457 -0
  302. package/esm/renderers/WebComponent.d.ts +33 -0
  303. package/esm/renderers/WebComponent.js +48 -0
  304. package/esm/renderers/Wizard.d.ts +179 -0
  305. package/esm/renderers/Wizard.js +923 -0
  306. package/esm/renderers/Wrapper.d.ts +36 -0
  307. package/esm/renderers/Wrapper.js +53 -0
  308. package/esm/schemaExtend.d.ts +1 -0
  309. package/esm/schemaExtend.js +144 -0
  310. package/esm/types.d.ts +160 -0
  311. package/lib/Schema.d.ts +4 -3
  312. package/lib/compat.js +1 -1
  313. package/lib/helper.css +0 -1
  314. package/lib/index.d.ts +1 -0
  315. package/lib/index.js +2 -1
  316. package/lib/preset.js +1 -1
  317. package/lib/renderers/Action.js +1 -1
  318. package/lib/renderers/Alert.js +1 -1
  319. package/lib/renderers/AnchorNav.js +1 -1
  320. package/lib/renderers/App.d.ts +12 -0
  321. package/lib/renderers/App.js +32 -16
  322. package/lib/renderers/Audio.js +1 -1
  323. package/lib/renderers/Avatar.js +1 -1
  324. package/lib/renderers/BarCode.js +1 -1
  325. package/lib/renderers/Breadcrumb.js +1 -1
  326. package/lib/renderers/ButtonGroup.d.ts +2 -2
  327. package/lib/renderers/ButtonGroup.js +1 -1
  328. package/lib/renderers/CRUD.js +6 -7
  329. package/lib/renderers/CRUD2.d.ts +215 -0
  330. package/lib/renderers/CRUD2.js +758 -0
  331. package/lib/renderers/Calendar.js +1 -1
  332. package/lib/renderers/Card.d.ts +7 -2
  333. package/lib/renderers/Card.js +12 -7
  334. package/lib/renderers/Card2.d.ts +1 -1
  335. package/lib/renderers/Card2.js +3 -3
  336. package/lib/renderers/Cards.d.ts +4 -0
  337. package/lib/renderers/Cards.js +49 -6
  338. package/lib/renderers/Carousel.js +1 -1
  339. package/lib/renderers/Chart.js +19 -3
  340. package/lib/renderers/Code.js +1 -1
  341. package/lib/renderers/Collapse.js +1 -1
  342. package/lib/renderers/CollapseGroup.js +1 -1
  343. package/lib/renderers/Color.js +1 -1
  344. package/lib/renderers/Container.js +1 -1
  345. package/lib/renderers/Copyable.js +1 -1
  346. package/lib/renderers/Custom.js +1 -1
  347. package/lib/renderers/Date.js +1 -1
  348. package/lib/renderers/Dialog.d.ts +40 -40
  349. package/lib/renderers/Dialog.js +1 -1
  350. package/lib/renderers/Divider.js +1 -1
  351. package/lib/renderers/Drawer.js +1 -1
  352. package/lib/renderers/DropDownButton.js +9 -7
  353. package/lib/renderers/Each.js +1 -1
  354. package/lib/renderers/Flex.js +3 -2
  355. package/lib/renderers/Form/ButtonGroupSelect.js +2 -2
  356. package/lib/renderers/Form/ButtonToolbar.js +1 -1
  357. package/lib/renderers/Form/ChainedSelect.d.ts +1 -1
  358. package/lib/renderers/Form/ChainedSelect.js +14 -9
  359. package/lib/renderers/Form/ChartRadios.js +1 -1
  360. package/lib/renderers/Form/Checkbox.js +3 -3
  361. package/lib/renderers/Form/Checkboxes.d.ts +5 -0
  362. package/lib/renderers/Form/Checkboxes.js +10 -4
  363. package/lib/renderers/Form/Combo.d.ts +3 -1
  364. package/lib/renderers/Form/Combo.js +38 -3
  365. package/lib/renderers/Form/ConditionBuilder.d.ts +10 -0
  366. package/lib/renderers/Form/ConditionBuilder.js +7 -3
  367. package/lib/renderers/Form/Control.js +1 -1
  368. package/lib/renderers/Form/DiffEditor.d.ts +707 -143
  369. package/lib/renderers/Form/DiffEditor.js +1 -1
  370. package/lib/renderers/Form/Editor.d.ts +703 -139
  371. package/lib/renderers/Form/Editor.js +1 -1
  372. package/lib/renderers/Form/FieldSet.js +1 -1
  373. package/lib/renderers/Form/Formula.js +1 -1
  374. package/lib/renderers/Form/Group.js +2 -2
  375. package/lib/renderers/Form/Hidden.js +1 -1
  376. package/lib/renderers/Form/IconPicker.js +1 -1
  377. package/lib/renderers/Form/IconPickerIcons.js +1 -1
  378. package/lib/renderers/Form/InputArray.js +1 -1
  379. package/lib/renderers/Form/InputCity.d.ts +40 -40
  380. package/lib/renderers/Form/InputCity.js +1 -1
  381. package/lib/renderers/Form/InputColor.d.ts +40 -40
  382. package/lib/renderers/Form/InputColor.js +1 -1
  383. package/lib/renderers/Form/InputDate.js +1 -1
  384. package/lib/renderers/Form/InputDateRange.js +1 -1
  385. package/lib/renderers/Form/InputExcel.d.ts +1 -0
  386. package/lib/renderers/Form/InputExcel.js +6 -1
  387. package/lib/renderers/Form/InputFile.d.ts +5 -0
  388. package/lib/renderers/Form/InputFile.js +39 -18
  389. package/lib/renderers/Form/InputFormula.js +1 -1
  390. package/lib/renderers/Form/InputGroup.js +1 -1
  391. package/lib/renderers/Form/InputImage.js +27 -11
  392. package/lib/renderers/Form/InputMonthRange.js +1 -1
  393. package/lib/renderers/Form/InputNumber.js +1 -1
  394. package/lib/renderers/Form/InputQuarterRange.js +1 -1
  395. package/lib/renderers/Form/InputRange.d.ts +12 -5
  396. package/lib/renderers/Form/InputRange.js +1 -1
  397. package/lib/renderers/Form/InputRating.js +1 -1
  398. package/lib/renderers/Form/InputRepeat.js +1 -1
  399. package/lib/renderers/Form/InputRichText.js +1 -1
  400. package/lib/renderers/Form/InputSubForm.js +1 -1
  401. package/lib/renderers/Form/InputTable.js +9 -5
  402. package/lib/renderers/Form/InputTag.d.ts +34 -0
  403. package/lib/renderers/Form/InputTag.js +78 -40
  404. package/lib/renderers/Form/InputText.d.ts +8 -0
  405. package/lib/renderers/Form/InputText.js +13 -9
  406. package/lib/renderers/Form/InputTree.d.ts +5 -2
  407. package/lib/renderers/Form/InputTree.js +7 -3
  408. package/lib/renderers/Form/InputYearRange.js +1 -1
  409. package/lib/renderers/Form/JSONSchema.js +1 -1
  410. package/lib/renderers/Form/JSONSchemaEditor.js +1 -1
  411. package/lib/renderers/Form/ListSelect.js +1 -1
  412. package/lib/renderers/Form/LocationPicker.js +1 -1
  413. package/lib/renderers/Form/MatrixCheckboxes.js +1 -1
  414. package/lib/renderers/Form/NestedSelect.js +4 -4
  415. package/lib/renderers/Form/Picker.js +1 -1
  416. package/lib/renderers/Form/Radios.d.ts +6 -1
  417. package/lib/renderers/Form/Radios.js +5 -3
  418. package/lib/renderers/Form/Select.d.ts +5 -0
  419. package/lib/renderers/Form/Select.js +5 -4
  420. package/lib/renderers/Form/Static.js +1 -1
  421. package/lib/renderers/Form/Switch.d.ts +3 -0
  422. package/lib/renderers/Form/Switch.js +3 -3
  423. package/lib/renderers/Form/TabsTransfer.js +1 -1
  424. package/lib/renderers/Form/TabsTransferPicker.js +1 -1
  425. package/lib/renderers/Form/Textarea.d.ts +2 -1
  426. package/lib/renderers/Form/Textarea.js +13 -2
  427. package/lib/renderers/Form/Transfer.js +1 -1
  428. package/lib/renderers/Form/TransferPicker.js +1 -1
  429. package/lib/renderers/Form/TreeSelect.js +4 -4
  430. package/lib/renderers/Form/UUID.js +1 -1
  431. package/lib/renderers/Form/UserSelect.js +3 -3
  432. package/lib/renderers/Grid.js +1 -1
  433. package/lib/renderers/Grid2D.js +1 -1
  434. package/lib/renderers/GridNav.js +1 -1
  435. package/lib/renderers/HBox.js +1 -1
  436. package/lib/renderers/IFrame.js +1 -1
  437. package/lib/renderers/Icon.d.ts +1 -1
  438. package/lib/renderers/Icon.js +11 -6
  439. package/lib/renderers/Image.js +1 -1
  440. package/lib/renderers/Images.js +1 -1
  441. package/lib/renderers/Json.d.ts +4 -0
  442. package/lib/renderers/Json.js +5 -4
  443. package/lib/renderers/Link.js +1 -1
  444. package/lib/renderers/List.d.ts +1 -0
  445. package/lib/renderers/List.js +30 -25
  446. package/lib/renderers/Log.d.ts +8 -6
  447. package/lib/renderers/Log.js +63 -32
  448. package/lib/renderers/Mapping.js +1 -1
  449. package/lib/renderers/Markdown.js +1 -1
  450. package/lib/renderers/Nav.d.ts +10 -10
  451. package/lib/renderers/Nav.js +1 -1
  452. package/lib/renderers/Operation.js +1 -1
  453. package/lib/renderers/Page.js +1 -1
  454. package/lib/renderers/Pagination.js +1 -1
  455. package/lib/renderers/PaginationWrapper.js +2 -1
  456. package/lib/renderers/Panel.js +1 -1
  457. package/lib/renderers/Plain.js +1 -1
  458. package/lib/renderers/PopOver.js +4 -4
  459. package/lib/renderers/Portlet.js +1 -1
  460. package/lib/renderers/Progress.js +1 -1
  461. package/lib/renderers/Property.js +1 -1
  462. package/lib/renderers/QRCode.js +1 -1
  463. package/lib/renderers/QuickEdit.js +4 -3
  464. package/lib/renderers/Remark.d.ts +1 -1
  465. package/lib/renderers/Remark.js +1 -1
  466. package/lib/renderers/SearchBox.js +1 -1
  467. package/lib/renderers/Service.js +1 -1
  468. package/lib/renderers/SparkLine.js +1 -1
  469. package/lib/renderers/Spinner.js +1 -1
  470. package/lib/renderers/Status.js +1 -1
  471. package/lib/renderers/Steps.js +3 -2
  472. package/lib/renderers/Table/ColumnToggler.d.ts +4 -3
  473. package/lib/renderers/Table/ColumnToggler.js +4 -4
  474. package/lib/renderers/Table/HeadCellFilterDropdown.js +3 -3
  475. package/lib/renderers/Table/HeadCellSearchDropdown.js +4 -4
  476. package/lib/renderers/Table/ItemActionsWrapper.js +1 -1
  477. package/lib/renderers/Table/TableBody.js +1 -1
  478. package/lib/renderers/Table/TableCell.js +1 -1
  479. package/lib/renderers/Table/TableContent.js +1 -1
  480. package/lib/renderers/Table/TableRow.js +1 -1
  481. package/lib/renderers/Table/exportExcel.js +6 -6
  482. package/lib/renderers/Table/index.d.ts +4 -1
  483. package/lib/renderers/Table/index.js +94 -30
  484. package/lib/renderers/Table-v2/ColumnToggler.d.ts +18 -2
  485. package/lib/renderers/Table-v2/ColumnToggler.js +72 -2
  486. package/lib/renderers/Table-v2/HeadCellSearchDropdown.js +1 -1
  487. package/lib/renderers/Table-v2/TableCell.js +1 -1
  488. package/lib/renderers/Table-v2/index.d.ts +12 -10
  489. package/lib/renderers/Table-v2/index.js +125 -100
  490. package/lib/renderers/TableView.js +1 -1
  491. package/lib/renderers/Tabs.js +1 -1
  492. package/lib/renderers/Tag.js +3 -3
  493. package/lib/renderers/Tasks.js +1 -1
  494. package/lib/renderers/Timeline.js +1 -1
  495. package/lib/renderers/TooltipWrapper.js +3 -3
  496. package/lib/renderers/Tpl.js +1 -1
  497. package/lib/renderers/VBox.js +1 -1
  498. package/lib/renderers/Video.js +1 -1
  499. package/lib/renderers/WebComponent.js +1 -1
  500. package/lib/renderers/Wizard.d.ts +1 -1
  501. package/lib/renderers/Wizard.js +73 -76
  502. package/lib/renderers/Wrapper.js +1 -1
  503. package/lib/schemaExtend.js +77 -1
  504. package/lib/themes/ang-ie11.css +499 -282
  505. package/lib/themes/ang.css +516 -277
  506. package/lib/themes/antd-ie11.css +517 -300
  507. package/lib/themes/antd.css +520 -277
  508. package/lib/themes/cxd-ie11.css +520 -319
  509. package/lib/themes/cxd.css +531 -308
  510. package/lib/themes/dark-ie11.css +504 -287
  511. package/lib/themes/dark.css +521 -279
  512. package/lib/themes/default-ie11.css +520 -319
  513. package/lib/themes/default.css +531 -308
  514. package/lib/types.d.ts +1 -1
  515. package/package.json +33 -4
  516. package/schema.json +2532 -844
  517. package/sdk/ang-ie11.css +547 -95
  518. package/sdk/ang.css +564 -90
  519. package/sdk/antd-ie11.css +581 -129
  520. package/sdk/antd.css +568 -90
  521. package/sdk/barcode.js +50 -50
  522. package/sdk/charts.js +15 -15
  523. package/sdk/codemirror.js +7 -7
  524. package/sdk/color-picker.js +65 -65
  525. package/sdk/cropperjs.js +2 -2
  526. package/sdk/cxd-ie11.css +590 -159
  527. package/sdk/cxd.css +579 -126
  528. package/sdk/dark-ie11.css +552 -100
  529. package/sdk/dark.css +569 -92
  530. package/sdk/exceljs.js +1 -1
  531. package/sdk/helper.css +0 -1
  532. package/sdk/locale/de-DE.js +3 -1
  533. package/sdk/markdown.js +68 -68
  534. package/sdk/papaparse.js +1 -1
  535. package/sdk/rest.js +24 -24
  536. package/sdk/rich-text.js +62 -62
  537. package/sdk/sdk-ie11.css +590 -159
  538. package/sdk/sdk.css +579 -126
  539. package/sdk/sdk.js +1789 -1711
  540. package/sdk/thirds/hls.js/hls.js +1 -1
  541. package/sdk/thirds/mpegts.js/mpegts.js +1 -1
  542. package/sdk/tinymce.js +57 -57
@@ -0,0 +1,1583 @@
1
+ /**
2
+ * amis v2.0.2
3
+ * Copyright 2018-2022 baidu
4
+ */
5
+
6
+ import { __extends, __awaiter, __generator, __spreadArray, __assign, __rest, __decorate, __metadata } from 'tslib';
7
+ import React from 'react';
8
+ import { findDOMNode } from 'react-dom';
9
+ import { resolveVariableAndFilter, getScrollParent, offset, getStyleNumber, anyChanged, isPureVariable, isArrayChildrenModified, createObject, difference, resizeSensor, eachTree, resolveVariable, filter, noop, isObject, evalExpression, ScopedContext, autobind, Renderer, TableStore } from 'amis-core';
10
+ import forEach from 'lodash/forEach';
11
+ import { Icon, Checkbox, Button, Spinner } from 'amis-ui';
12
+ import debouce from 'lodash/debounce';
13
+ import Sortable from 'sortablejs';
14
+ import find from 'lodash/find';
15
+ export { TableCell } from './TableCell.js';
16
+ import { HeadCellFilterDropDown } from './HeadCellFilterDropdown.js';
17
+ import { HeadCellSearchDropDown } from './HeadCellSearchDropdown.js';
18
+ import { TableContent } from './TableContent.js';
19
+ import { TableBody } from './TableBody.js';
20
+ import { isAlive } from 'mobx-state-tree';
21
+ import ColumnToggler from './ColumnToggler.js';
22
+ import { exportExcel } from './exportExcel.js';
23
+
24
+ var Table = /** @class */ (function (_super) {
25
+ __extends(Table, _super);
26
+ function Table(props, context) {
27
+ var _this = _super.call(this, props) || this;
28
+ _this.lastScrollLeft = -1;
29
+ _this.lastScrollTop = 0;
30
+ _this.totalWidth = 0;
31
+ _this.totalHeight = 0;
32
+ _this.outterWidth = 0;
33
+ _this.outterHeight = 0;
34
+ _this.widths = {};
35
+ _this.widths2 = {};
36
+ _this.heights = {};
37
+ _this.renderedToolbars = [];
38
+ _this.subForms = {};
39
+ var scoped = context;
40
+ scoped.registerComponent(_this);
41
+ _this.handleOutterScroll = _this.handleOutterScroll.bind(_this);
42
+ _this.affixDetect = _this.affixDetect.bind(_this);
43
+ _this.updateTableInfoLazy = debouce(_this.updateTableInfo.bind(_this), 250, {
44
+ trailing: true,
45
+ leading: true
46
+ });
47
+ _this.tableRef = _this.tableRef.bind(_this);
48
+ _this.affixedTableRef = _this.affixedTableRef.bind(_this);
49
+ _this.handleAction = _this.handleAction.bind(_this);
50
+ _this.handleCheck = _this.handleCheck.bind(_this);
51
+ _this.handleCheckAll = _this.handleCheckAll.bind(_this);
52
+ _this.handleQuickChange = _this.handleQuickChange.bind(_this);
53
+ _this.handleSave = _this.handleSave.bind(_this);
54
+ _this.handleSaveOrder = _this.handleSaveOrder.bind(_this);
55
+ _this.reset = _this.reset.bind(_this);
56
+ _this.dragTipRef = _this.dragTipRef.bind(_this);
57
+ _this.getPopOverContainer = _this.getPopOverContainer.bind(_this);
58
+ _this.renderCell = _this.renderCell.bind(_this);
59
+ _this.renderHeadCell = _this.renderHeadCell.bind(_this);
60
+ _this.renderToolbar = _this.renderToolbar.bind(_this);
61
+ _this.handleMouseMove = _this.handleMouseMove.bind(_this);
62
+ _this.handleMouseLeave = _this.handleMouseLeave.bind(_this);
63
+ _this.subFormRef = _this.subFormRef.bind(_this);
64
+ _this.handleColumnToggle = _this.handleColumnToggle.bind(_this);
65
+ _this.updateAutoFillHeight = _this.updateAutoFillHeight.bind(_this);
66
+ var store = props.store, columns = props.columns, selectable = props.selectable, columnsTogglable = props.columnsTogglable, draggable = props.draggable, orderBy = props.orderBy, orderDir = props.orderDir, multiple = props.multiple, footable = props.footable, primaryField = props.primaryField, itemCheckableOn = props.itemCheckableOn, itemDraggableOn = props.itemDraggableOn, hideCheckToggler = props.hideCheckToggler, combineFromIndex = props.combineFromIndex, expandConfig = props.expandConfig, formItem = props.formItem, keepItemSelectionOnPageChange = props.keepItemSelectionOnPageChange, maxKeepItemSelectionLength = props.maxKeepItemSelectionLength;
67
+ var combineNum = props.combineNum;
68
+ if (typeof combineNum === 'string') {
69
+ combineNum = parseInt(resolveVariableAndFilter(combineNum, props.data, '| raw'), 10);
70
+ }
71
+ store.update({
72
+ selectable: selectable,
73
+ draggable: draggable,
74
+ columns: columns,
75
+ columnsTogglable: columnsTogglable,
76
+ orderBy: orderBy,
77
+ orderDir: orderDir,
78
+ multiple: multiple,
79
+ footable: footable,
80
+ expandConfig: expandConfig,
81
+ primaryField: primaryField,
82
+ itemCheckableOn: itemCheckableOn,
83
+ itemDraggableOn: itemDraggableOn,
84
+ hideCheckToggler: hideCheckToggler,
85
+ combineNum: combineNum,
86
+ combineFromIndex: combineFromIndex,
87
+ keepItemSelectionOnPageChange: keepItemSelectionOnPageChange,
88
+ maxKeepItemSelectionLength: maxKeepItemSelectionLength
89
+ });
90
+ formItem && isAlive(formItem) && formItem.setSubStore(store);
91
+ Table.syncRows(store, _this.props, undefined) && _this.syncSelected();
92
+ return _this;
93
+ }
94
+ Table.syncRows = function (store, props, prevProps) {
95
+ var source = props.source;
96
+ var value = props.value || props.items;
97
+ var rows = [];
98
+ var updateRows = false;
99
+ if (Array.isArray(value) &&
100
+ (!prevProps || (prevProps.value || prevProps.items) !== value)) {
101
+ updateRows = true;
102
+ rows = value;
103
+ }
104
+ else if (typeof source === 'string') {
105
+ var resolved = resolveVariableAndFilter(source, props.data, '| raw');
106
+ var prev = prevProps
107
+ ? resolveVariableAndFilter(source, prevProps.data, '| raw')
108
+ : null;
109
+ if (prev && prev === resolved) {
110
+ updateRows = false;
111
+ }
112
+ else if (Array.isArray(resolved)) {
113
+ updateRows = true;
114
+ rows = resolved;
115
+ }
116
+ }
117
+ updateRows && store.initRows(rows, props.getEntryId, props.reUseRow);
118
+ typeof props.selected !== 'undefined' &&
119
+ store.updateSelected(props.selected, props.valueField);
120
+ return updateRows;
121
+ };
122
+ Table.prototype.componentDidMount = function () {
123
+ var parent = getScrollParent(findDOMNode(this));
124
+ if (!parent || parent === document.body) {
125
+ parent = window;
126
+ }
127
+ this.parentNode = parent;
128
+ this.updateTableInfo();
129
+ var dom = findDOMNode(this);
130
+ if (dom.closest('.modal-body')) {
131
+ return;
132
+ }
133
+ this.affixDetect();
134
+ parent.addEventListener('scroll', this.affixDetect);
135
+ window.addEventListener('resize', this.affixDetect);
136
+ this.updateAutoFillHeight();
137
+ window.addEventListener('resize', this.updateAutoFillHeight);
138
+ var _a = this.props, store = _a.store, autoGenerateFilter = _a.autoGenerateFilter, onSearchableFromInit = _a.onSearchableFromInit;
139
+ // autoGenerateFilter 开启后
140
+ // 如果没有一个 searchable 的 column crud 就不会初始化加载
141
+ // 所以这里加个判断默认初始加载一次
142
+ if (autoGenerateFilter &&
143
+ !store.searchableColumns.length &&
144
+ onSearchableFromInit) {
145
+ onSearchableFromInit({});
146
+ }
147
+ };
148
+ /**
149
+ * 自动设置表格高度占满界面剩余区域
150
+ * 用 css 实现有点麻烦,要改很多结构,所以先用 dom hack 了,避免对之前的功能有影响
151
+ */
152
+ Table.prototype.updateAutoFillHeight = function () {
153
+ var _this = this;
154
+ var _a = this.props, autoFillHeight = _a.autoFillHeight, footerToolbar = _a.footerToolbar, ns = _a.classPrefix;
155
+ if (!autoFillHeight) {
156
+ return;
157
+ }
158
+ var table = findDOMNode(this);
159
+ var tableContent = table.querySelector(".".concat(ns, "Table-content"));
160
+ var tableContentWrap = table.querySelector(".".concat(ns, "Table-contentWrap"));
161
+ var footToolbar = table.querySelector(".".concat(ns, "Table-footToolbar"));
162
+ var leftFixedColumns = table.querySelector(".".concat(ns, "Table-fixedLeft"));
163
+ var rightFixedColumns = table.querySelector(".".concat(ns, "Table-fixedRight"));
164
+ if (!tableContent) {
165
+ return;
166
+ }
167
+ // 计算 table-content 在 dom 中的位置
168
+ var tableContentTop = offset(tableContent).top;
169
+ var viewportHeight = window.innerHeight;
170
+ // 有时候会拿不到 footToolbar?
171
+ var footToolbarHeight = footToolbar ? offset(footToolbar).height : 0;
172
+ // 有时候会拿不到 footToolbar,等一下在执行
173
+ if (!footToolbarHeight && footerToolbar && footerToolbar.length) {
174
+ this.timer = setTimeout(function () {
175
+ _this.updateAutoFillHeight();
176
+ }, 100);
177
+ return;
178
+ }
179
+ var tableContentWrapMarginButtom = getStyleNumber(tableContentWrap, 'margin-bottom');
180
+ // 循环计算父级节点的 pddding,这里不考虑父级节点还可能会有其它兄弟节点的情况了
181
+ var allParentPaddingButtom = 0;
182
+ var parentNode = tableContent.parentElement;
183
+ while (parentNode) {
184
+ var paddingButtom = getStyleNumber(parentNode, 'padding-bottom');
185
+ var borderBottom = getStyleNumber(parentNode, 'border-bottom-width');
186
+ allParentPaddingButtom =
187
+ allParentPaddingButtom + paddingButtom + borderBottom;
188
+ parentNode = parentNode.parentElement;
189
+ }
190
+ var tableContentHeight = "".concat(viewportHeight -
191
+ tableContentTop -
192
+ tableContentWrapMarginButtom -
193
+ footToolbarHeight -
194
+ allParentPaddingButtom, "px");
195
+ tableContent.style.height = tableContentHeight;
196
+ /**autoFillHeight开启后固定列会溢出Table高度,需要同步一下 */
197
+ if (leftFixedColumns) {
198
+ leftFixedColumns.style.height = tableContentHeight;
199
+ leftFixedColumns.style.overflowY = 'auto';
200
+ }
201
+ if (rightFixedColumns) {
202
+ rightFixedColumns.style.height = tableContentHeight;
203
+ rightFixedColumns.style.overflowY = 'auto';
204
+ }
205
+ };
206
+ Table.prototype.componentDidUpdate = function (prevProps) {
207
+ var props = this.props;
208
+ var store = props.store;
209
+ if (anyChanged([
210
+ 'selectable',
211
+ 'columnsTogglable',
212
+ 'draggable',
213
+ 'orderBy',
214
+ 'orderDir',
215
+ 'multiple',
216
+ 'footable',
217
+ 'primaryField',
218
+ 'itemCheckableOn',
219
+ 'itemDraggableOn',
220
+ 'hideCheckToggler',
221
+ 'combineNum',
222
+ 'combineFromIndex',
223
+ 'expandConfig'
224
+ ], prevProps, props)) {
225
+ var combineNum = props.combineNum;
226
+ if (typeof combineNum === 'string') {
227
+ combineNum = parseInt(resolveVariableAndFilter(combineNum, props.data, '| raw'), 10);
228
+ }
229
+ store.update({
230
+ selectable: props.selectable,
231
+ columnsTogglable: props.columnsTogglable,
232
+ draggable: props.draggable,
233
+ orderBy: props.orderBy,
234
+ orderDir: props.orderDir,
235
+ multiple: props.multiple,
236
+ primaryField: props.primaryField,
237
+ footable: props.footable,
238
+ itemCheckableOn: props.itemCheckableOn,
239
+ itemDraggableOn: props.itemDraggableOn,
240
+ hideCheckToggler: props.hideCheckToggler,
241
+ combineNum: combineNum,
242
+ combineFromIndex: props.combineFromIndex,
243
+ expandConfig: props.expandConfig
244
+ });
245
+ }
246
+ if (prevProps.columns !== props.columns) {
247
+ store.update({
248
+ columns: props.columns
249
+ });
250
+ }
251
+ if (anyChanged(['source', 'value', 'items'], prevProps, props) ||
252
+ (!props.value &&
253
+ !props.items &&
254
+ (props.data !== prevProps.data ||
255
+ (typeof props.source === 'string' && isPureVariable(props.source))))) {
256
+ Table.syncRows(store, props, prevProps) && this.syncSelected();
257
+ }
258
+ else if (isArrayChildrenModified(prevProps.selected, props.selected)) {
259
+ var prevSelectedRows = store.selectedRows
260
+ .map(function (item) { return item.id; })
261
+ .join(',');
262
+ store.updateSelected(props.selected || [], props.valueField);
263
+ var selectedRows = store.selectedRows.map(function (item) { return item.id; }).join(',');
264
+ prevSelectedRows !== selectedRows && this.syncSelected();
265
+ }
266
+ this.updateTableInfoLazy();
267
+ };
268
+ Table.prototype.componentWillUnmount = function () {
269
+ var formItem = this.props.formItem;
270
+ var parent = this.parentNode;
271
+ parent && parent.removeEventListener('scroll', this.affixDetect);
272
+ window.removeEventListener('resize', this.affixDetect);
273
+ window.removeEventListener('resize', this.updateAutoFillHeight);
274
+ this.updateTableInfoLazy.cancel();
275
+ this.unSensor && this.unSensor();
276
+ formItem && isAlive(formItem) && formItem.setSubStore(null);
277
+ clearTimeout(this.timer);
278
+ var scoped = this.context;
279
+ scoped.unRegisterComponent(this);
280
+ };
281
+ Table.prototype.subFormRef = function (form, x, y) {
282
+ var quickEditFormRef = this.props.quickEditFormRef;
283
+ quickEditFormRef && quickEditFormRef(form, x, y);
284
+ this.subForms["".concat(x, "-").concat(y)] = form;
285
+ form && this.props.store.addForm(form.props.store, y);
286
+ };
287
+ Table.prototype.handleAction = function (e, action, ctx) {
288
+ var onAction = this.props.onAction;
289
+ // todo
290
+ onAction(e, action, ctx);
291
+ };
292
+ Table.prototype.handleCheck = function (item, value, shift) {
293
+ return __awaiter(this, void 0, void 0, function () {
294
+ var _a, store, data, dispatchEvent, selectedItems, unSelectedItems, rendererEvent;
295
+ return __generator(this, function (_b) {
296
+ switch (_b.label) {
297
+ case 0:
298
+ _a = this.props, store = _a.store, data = _a.data, dispatchEvent = _a.dispatchEvent;
299
+ selectedItems = value
300
+ ? __spreadArray(__spreadArray([], store.selectedRows.map(function (row) { return row.data; }), true), [item.data], false) : store.selectedRows.filter(function (row) { return row.id !== item.id; });
301
+ unSelectedItems = value
302
+ ? store.unSelectedRows.filter(function (row) { return row.id !== item.id; })
303
+ : __spreadArray(__spreadArray([], store.unSelectedRows.map(function (row) { return row.data; }), true), [item.data], false);
304
+ return [4 /*yield*/, dispatchEvent('selectedChange', createObject(data, {
305
+ selectedItems: selectedItems,
306
+ unSelectedItems: unSelectedItems
307
+ }))];
308
+ case 1:
309
+ rendererEvent = _b.sent();
310
+ if (rendererEvent === null || rendererEvent === void 0 ? void 0 : rendererEvent.prevented) {
311
+ return [2 /*return*/];
312
+ }
313
+ if (shift) {
314
+ store.toggleShift(item);
315
+ }
316
+ else {
317
+ item.toggle();
318
+ }
319
+ this.syncSelected();
320
+ return [2 /*return*/];
321
+ }
322
+ });
323
+ });
324
+ };
325
+ Table.prototype.handleCheckAll = function () {
326
+ return __awaiter(this, void 0, void 0, function () {
327
+ var _a, store, data, dispatchEvent, items, rendererEvent;
328
+ return __generator(this, function (_b) {
329
+ switch (_b.label) {
330
+ case 0:
331
+ _a = this.props, store = _a.store, data = _a.data, dispatchEvent = _a.dispatchEvent;
332
+ items = store.getSelectedRows().map(function (item) { return item.data; });
333
+ return [4 /*yield*/, dispatchEvent('selectedChange', createObject(data, {
334
+ selectedItems: store.allChecked ? [] : items,
335
+ unSelectedItems: store.allChecked ? items : []
336
+ }))];
337
+ case 1:
338
+ rendererEvent = _b.sent();
339
+ if (rendererEvent === null || rendererEvent === void 0 ? void 0 : rendererEvent.prevented) {
340
+ return [2 /*return*/];
341
+ }
342
+ store.toggleAll();
343
+ this.syncSelected();
344
+ return [2 /*return*/];
345
+ }
346
+ });
347
+ });
348
+ };
349
+ Table.prototype.handleQuickChange = function (item, values, saveImmediately, savePristine, resetOnFailed) {
350
+ if (!isAlive(item)) {
351
+ return;
352
+ }
353
+ var _a = this.props, onSave = _a.onSave, onPristineChange = _a.onPristineChange, propsSaveImmediately = _a.saveImmediately, primaryField = _a.primaryField;
354
+ item.change(values, savePristine);
355
+ // 值发生变化了,需要通过 onSelect 通知到外面,否则会出现数据不同步的问题
356
+ item.modified && this.syncSelected();
357
+ if (savePristine) {
358
+ onPristineChange === null || onPristineChange === void 0 ? void 0 : onPristineChange(item.data, item.path);
359
+ return;
360
+ }
361
+ else if (!saveImmediately && !propsSaveImmediately) {
362
+ return;
363
+ }
364
+ if (saveImmediately && saveImmediately.api) {
365
+ this.props.onAction(null, {
366
+ actionType: 'ajax',
367
+ api: saveImmediately.api
368
+ }, values);
369
+ return;
370
+ }
371
+ if (!onSave) {
372
+ return;
373
+ }
374
+ onSave(item.data, difference(item.data, item.pristine, ['id', primaryField]), item.path, undefined, item.pristine, resetOnFailed);
375
+ };
376
+ Table.prototype.handleSave = function () {
377
+ return __awaiter(this, void 0, void 0, function () {
378
+ var _a, store, onSave, primaryField, subForms, result, rows, rowIndexes, diff, unModifiedRows;
379
+ var _this = this;
380
+ return __generator(this, function (_b) {
381
+ switch (_b.label) {
382
+ case 0:
383
+ _a = this.props, store = _a.store, onSave = _a.onSave, primaryField = _a.primaryField;
384
+ if (!onSave || !store.modifiedRows.length) {
385
+ return [2 /*return*/];
386
+ }
387
+ subForms = [];
388
+ Object.keys(this.subForms).forEach(function (key) { return _this.subForms[key] && subForms.push(_this.subForms[key]); });
389
+ if (!subForms.length) return [3 /*break*/, 2];
390
+ return [4 /*yield*/, Promise.all(subForms.map(function (item) { return item.validate(); }))];
391
+ case 1:
392
+ result = _b.sent();
393
+ if (~result.indexOf(false)) {
394
+ return [2 /*return*/];
395
+ }
396
+ _b.label = 2;
397
+ case 2:
398
+ rows = store.modifiedRows.map(function (item) { return item.data; });
399
+ rowIndexes = store.modifiedRows.map(function (item) { return item.path; });
400
+ diff = store.modifiedRows.map(function (item) {
401
+ return difference(item.data, item.pristine, ['id', primaryField]);
402
+ });
403
+ unModifiedRows = store.rows
404
+ .filter(function (item) { return !item.modified; })
405
+ .map(function (item) { return item.data; });
406
+ onSave(rows, diff, rowIndexes, unModifiedRows, store.modifiedRows.map(function (item) { return item.pristine; }));
407
+ return [2 /*return*/];
408
+ }
409
+ });
410
+ });
411
+ };
412
+ Table.prototype.handleSaveOrder = function () {
413
+ return __awaiter(this, void 0, void 0, function () {
414
+ var _a, store, onSaveOrder, data, dispatchEvent, movedItems, items, rendererEvent;
415
+ return __generator(this, function (_b) {
416
+ switch (_b.label) {
417
+ case 0:
418
+ _a = this.props, store = _a.store, onSaveOrder = _a.onSaveOrder, data = _a.data, dispatchEvent = _a.dispatchEvent;
419
+ movedItems = store.movedRows.map(function (item) { return item.data; });
420
+ items = store.rows.map(function (item) { return item.getDataWithModifiedChilden(); });
421
+ return [4 /*yield*/, dispatchEvent('orderChange', createObject(data, { movedItems: movedItems }))];
422
+ case 1:
423
+ rendererEvent = _b.sent();
424
+ if (rendererEvent === null || rendererEvent === void 0 ? void 0 : rendererEvent.prevented) {
425
+ return [2 /*return*/];
426
+ }
427
+ if (!onSaveOrder || !store.movedRows.length) {
428
+ return [2 /*return*/];
429
+ }
430
+ onSaveOrder(movedItems, items);
431
+ return [2 /*return*/];
432
+ }
433
+ });
434
+ });
435
+ };
436
+ Table.prototype.syncSelected = function () {
437
+ var _a = this.props, store = _a.store, onSelect = _a.onSelect;
438
+ onSelect &&
439
+ onSelect(store.selectedRows.map(function (item) { return item.data; }), store.unSelectedRows.map(function (item) { return item.data; }));
440
+ };
441
+ Table.prototype.reset = function () {
442
+ var _this = this;
443
+ var store = this.props.store;
444
+ store.reset();
445
+ var subForms = [];
446
+ Object.keys(this.subForms).forEach(function (key) { return _this.subForms[key] && subForms.push(_this.subForms[key]); });
447
+ subForms.forEach(function (item) { return item.clearErrors(); });
448
+ };
449
+ Table.prototype.bulkUpdate = function (value, items) {
450
+ var _a = this.props, store = _a.store, primaryField = _a.primaryField;
451
+ if (primaryField && value.ids) {
452
+ var ids_1 = value.ids.split(',');
453
+ var rows = store.rows.filter(function (item) {
454
+ return find(ids_1, function (id) { return id && id == item.data[primaryField]; });
455
+ });
456
+ var newValue_1 = __assign(__assign({}, value), { ids: undefined });
457
+ rows.forEach(function (row) { return row.change(newValue_1); });
458
+ }
459
+ else {
460
+ var rows = store.rows.filter(function (item) { return ~items.indexOf(item.pristine); });
461
+ rows.forEach(function (row) { return row.change(value); });
462
+ }
463
+ };
464
+ Table.prototype.getSelected = function () {
465
+ var store = this.props.store;
466
+ return store.selectedRows.map(function (item) { return item.data; });
467
+ };
468
+ Table.prototype.affixDetect = function () {
469
+ var _a, _b, _c, _d;
470
+ if (!this.props.affixHeader || !this.table || this.props.autoFillHeight) {
471
+ return;
472
+ }
473
+ var ns = this.props.classPrefix;
474
+ var dom = findDOMNode(this);
475
+ var clip = this.table.getBoundingClientRect();
476
+ var offsetY = (_b = (_a = this.props.affixOffsetTop) !== null && _a !== void 0 ? _a : this.props.env.affixOffsetTop) !== null && _b !== void 0 ? _b : 0;
477
+ var headingHeight = ((_c = dom.querySelector(".".concat(ns, "Table-heading"))) === null || _c === void 0 ? void 0 : _c.getBoundingClientRect().height) || 0;
478
+ var headerHeight = ((_d = dom.querySelector(".".concat(ns, "Table-headToolbar"))) === null || _d === void 0 ? void 0 : _d.getBoundingClientRect().height) || 0;
479
+ var affixed = clip.top - headerHeight - headingHeight < offsetY &&
480
+ clip.top + clip.height - 40 > offsetY;
481
+ var affixedDom = dom.querySelector(".".concat(ns, "Table-fixedTop"));
482
+ affixedDom.style.cssText += "top: ".concat(offsetY, "px;width: ").concat(this.table.parentNode.offsetWidth, "px");
483
+ affixed
484
+ ? affixedDom.classList.add('in')
485
+ : affixedDom.classList.remove('in');
486
+ // store.markHeaderAffix(clip.top < offsetY && (clip.top + clip.height - 40) > offsetY);
487
+ };
488
+ Table.prototype.updateTableInfo = function () {
489
+ if (!this.table) {
490
+ return;
491
+ }
492
+ var table = this.table;
493
+ var outter = table.parentNode;
494
+ var affixHeader = this.props.affixHeader;
495
+ var ns = this.props.classPrefix;
496
+ // 完成宽高都没有变化就直接跳过了。
497
+ // if (this.totalWidth === table.scrollWidth && this.totalHeight === table.scrollHeight) {
498
+ // return;
499
+ // }
500
+ this.totalWidth = table.scrollWidth;
501
+ this.totalHeight = table.scrollHeight;
502
+ this.outterWidth = outter.offsetWidth;
503
+ this.outterHeight = outter.offsetHeight;
504
+ var widths = (this.widths = {});
505
+ var widths2 = (this.widths2 = {});
506
+ var heights = (this.heights = {});
507
+ heights.header = table
508
+ .querySelector('thead>tr:last-child')
509
+ .getBoundingClientRect().height;
510
+ heights.header2 = table
511
+ .querySelector('thead>tr:first-child')
512
+ .getBoundingClientRect().height;
513
+ forEach(table.querySelectorAll('thead>tr:last-child>th'), function (item) {
514
+ widths[item.getAttribute('data-index')] =
515
+ item.getBoundingClientRect().width;
516
+ });
517
+ forEach(table.querySelectorAll('thead>tr:first-child>th'), function (item) {
518
+ widths2[item.getAttribute('data-index')] =
519
+ item.getBoundingClientRect().width;
520
+ });
521
+ forEach(table.querySelectorAll('tbody>tr>*:last-child'), function (item, index) {
522
+ return (heights[index] = item.getBoundingClientRect().height);
523
+ });
524
+ // 让 react 去更新非常慢,还是手动更新吧。
525
+ var dom = findDOMNode(this);
526
+ forEach(
527
+ // 折叠 footTable 不需要改变
528
+ dom.querySelectorAll(".".concat(ns, "Table-fixedTop table, .").concat(ns, "Table-fixedLeft>table, .").concat(ns, "Table-fixedRight>table")), function (table) {
529
+ var totalWidth = 0;
530
+ var totalWidth2 = 0;
531
+ forEach(table.querySelectorAll('thead>tr:last-child>th'), function (item) {
532
+ var width = widths[item.getAttribute('data-index')];
533
+ item.style.cssText += "width: ".concat(width, "px; height: ").concat(heights.header, "px");
534
+ totalWidth += width;
535
+ });
536
+ forEach(table.querySelectorAll('thead>tr:first-child>th'), function (item) {
537
+ var width = widths2[item.getAttribute('data-index')];
538
+ item.style.cssText += "width: ".concat(width, "px; height: ").concat(heights.header2, "px");
539
+ totalWidth2 += width;
540
+ });
541
+ forEach(table.querySelectorAll('colgroup>col'), function (item) {
542
+ var width = widths[item.getAttribute('data-index')];
543
+ item.setAttribute('width', "".concat(width));
544
+ });
545
+ forEach(table.querySelectorAll('tbody>tr'), function (item, index) {
546
+ item.style.cssText += "height: ".concat(heights[index], "px");
547
+ });
548
+ table.style.cssText += "width: ".concat(Math.max(totalWidth, totalWidth2), "px;table-layout: auto;");
549
+ });
550
+ if (affixHeader) {
551
+ dom.querySelector(".".concat(ns, "Table-fixedTop>.").concat(ns, "Table-wrapper")).style.cssText += "width: ".concat(this.outterWidth, "px");
552
+ }
553
+ this.lastScrollLeft = -1;
554
+ this.handleOutterScroll();
555
+ };
556
+ Table.prototype.handleOutterScroll = function () {
557
+ var outter = this.table.parentNode;
558
+ var scrollLeft = outter.scrollLeft;
559
+ var ns = this.props.classPrefix;
560
+ var dom = findDOMNode(this);
561
+ var fixedLeft = dom.querySelectorAll(".".concat(ns, "Table-fixedLeft"));
562
+ var fixedRight = dom.querySelectorAll(".".concat(ns, "Table-fixedRight"));
563
+ if (scrollLeft !== this.lastScrollLeft) {
564
+ this.lastScrollLeft = scrollLeft;
565
+ var leading = scrollLeft === 0;
566
+ var trailing = Math.ceil(scrollLeft) + this.outterWidth >= this.totalWidth;
567
+ // console.log(scrollLeft, store.outterWidth, store.totalWidth, (scrollLeft + store.outterWidth) === store.totalWidth);
568
+ // store.setLeading(leading);
569
+ // store.setTrailing(trailing);
570
+ if (fixedLeft && fixedLeft.length) {
571
+ for (var i = 0, len = fixedLeft.length; i < len; i++) {
572
+ var node = fixedLeft[i];
573
+ leading ? node.classList.remove('in') : node.classList.add('in');
574
+ }
575
+ }
576
+ if (fixedRight && fixedRight.length) {
577
+ for (var i = 0, len = fixedRight.length; i < len; i++) {
578
+ var node = fixedRight[i];
579
+ trailing ? node.classList.remove('in') : node.classList.add('in');
580
+ }
581
+ }
582
+ var table = this.affixedTable;
583
+ if (table) {
584
+ table.style.cssText += "transform: translateX(-".concat(scrollLeft, "px)");
585
+ }
586
+ }
587
+ /* 同步固定列内容的垂直滚动 */
588
+ if (outter.scrollTop !== this.lastScrollTop) {
589
+ this.lastScrollTop = outter.scrollTop;
590
+ if (fixedLeft && fixedLeft.length) {
591
+ forEach(fixedLeft, function (node) { return node.scrollTo({ top: outter.scrollTop }); });
592
+ }
593
+ if (fixedRight && fixedRight.length) {
594
+ forEach(fixedRight, function (node) { return node.scrollTo({ top: outter.scrollTop }); });
595
+ }
596
+ }
597
+ };
598
+ Table.prototype.handleFixedColumnsScroll = function (event) {
599
+ /** table内容区当前Top */
600
+ var currentScrollTop = this.lastScrollTop;
601
+ /** 固定列的新Top */
602
+ var fixedScrollTop = event.currentTarget.scrollTop;
603
+ if (currentScrollTop !== fixedScrollTop) {
604
+ this.lastScrollTop = fixedScrollTop;
605
+ var tableContentDom = this.table
606
+ .parentNode;
607
+ tableContentDom.scrollTo({ top: fixedScrollTop });
608
+ }
609
+ };
610
+ Table.prototype.tableRef = function (ref) {
611
+ this.table = ref;
612
+ if (ref) {
613
+ this.unSensor = resizeSensor(ref.parentNode, this.updateTableInfoLazy);
614
+ }
615
+ else {
616
+ this.unSensor && this.unSensor();
617
+ delete this.unSensor;
618
+ }
619
+ };
620
+ Table.prototype.dragTipRef = function (ref) {
621
+ if (!this.dragTip && ref) {
622
+ this.initDragging();
623
+ }
624
+ else if (this.dragTip && !ref) {
625
+ this.destroyDragging();
626
+ }
627
+ this.dragTip = ref;
628
+ };
629
+ Table.prototype.affixedTableRef = function (ref) {
630
+ this.affixedTable = ref;
631
+ };
632
+ Table.prototype.initDragging = function () {
633
+ var _this = this;
634
+ var _a = this.props, store = _a.store, ns = _a.classPrefix;
635
+ this.sortable = new Sortable(this.table.querySelector('tbody'), {
636
+ group: 'table',
637
+ animation: 150,
638
+ handle: ".".concat(ns, "Table-dragCell"),
639
+ filter: ".".concat(ns, "Table-dragCell.is-dragDisabled"),
640
+ ghostClass: 'is-dragging',
641
+ onEnd: function (e) { return __awaiter(_this, void 0, void 0, function () {
642
+ var parent;
643
+ return __generator(this, function (_a) {
644
+ // 没有移动
645
+ if (e.newIndex === e.oldIndex) {
646
+ return [2 /*return*/];
647
+ }
648
+ parent = e.to;
649
+ if (e.oldIndex < parent.childNodes.length - 1) {
650
+ parent.insertBefore(e.item, parent.childNodes[e.oldIndex]);
651
+ }
652
+ else {
653
+ parent.appendChild(e.item);
654
+ }
655
+ store.exchange(e.oldIndex, e.newIndex);
656
+ return [2 /*return*/];
657
+ });
658
+ }); }
659
+ });
660
+ };
661
+ Table.prototype.destroyDragging = function () {
662
+ this.sortable && this.sortable.destroy();
663
+ };
664
+ Table.prototype.getPopOverContainer = function () {
665
+ return findDOMNode(this);
666
+ };
667
+ Table.prototype.handleMouseMove = function (e) {
668
+ var tr = e.target.closest('tr[data-id]');
669
+ if (!tr) {
670
+ return;
671
+ }
672
+ var _a = this.props, store = _a.store, affixColumns = _a.affixColumns, itemActions = _a.itemActions;
673
+ if ((affixColumns === false ||
674
+ (store.leftFixedColumns.length === 0 &&
675
+ store.rightFixedColumns.length === 0)) &&
676
+ (!itemActions || !itemActions.filter(function (item) { return !item.hiddenOnHover; }).length)) {
677
+ return;
678
+ }
679
+ var id = tr.getAttribute('data-id');
680
+ var row = store.hoverRow;
681
+ if ((row === null || row === void 0 ? void 0 : row.id) === id) {
682
+ return;
683
+ }
684
+ eachTree(store.rows, function (item) { return item.setIsHover(item.id === id); });
685
+ };
686
+ Table.prototype.handleMouseLeave = function () {
687
+ var store = this.props.store;
688
+ var row = store.hoverRow;
689
+ row === null || row === void 0 ? void 0 : row.setIsHover(false);
690
+ };
691
+ Table.prototype.handleDragStart = function (e) {
692
+ var store = this.props.store;
693
+ var target = e.currentTarget;
694
+ var tr = (this.draggingTr = target.closest('tr'));
695
+ var id = tr.getAttribute('data-id');
696
+ var tbody = tr.parentNode;
697
+ this.originIndex = Array.prototype.indexOf.call(tbody.childNodes, tr);
698
+ tr.classList.add('is-dragging');
699
+ e.dataTransfer.effectAllowed = 'move';
700
+ e.dataTransfer.setData('text/plain', id);
701
+ e.dataTransfer.setDragImage(tr, 0, 0);
702
+ var item = store.getRowById(id);
703
+ store.collapseAllAtDepth(item.depth);
704
+ var siblings = store.rows;
705
+ if (item.parentId) {
706
+ var parent_1 = store.getRowById(item.parentId);
707
+ siblings = parent_1.children;
708
+ }
709
+ siblings = siblings.filter(function (sibling) { return sibling !== item; });
710
+ tbody.addEventListener('dragover', this.handleDragOver);
711
+ tbody.addEventListener('drop', this.handleDrop);
712
+ this.draggingSibling = siblings.map(function (item) {
713
+ var tr = tbody.querySelector("tr[data-id=\"".concat(item.id, "\"]"));
714
+ tr.classList.add('is-drop-allowed');
715
+ return tr;
716
+ });
717
+ tr.addEventListener('dragend', this.handleDragEnd);
718
+ };
719
+ Table.prototype.handleDragOver = function (e) {
720
+ if (!e.target) {
721
+ return;
722
+ }
723
+ e.preventDefault();
724
+ e.dataTransfer.dropEffect = 'move';
725
+ var overTr = e.target.closest('tr');
726
+ if (!overTr ||
727
+ !~overTr.className.indexOf('is-drop-allowed') ||
728
+ overTr === this.draggingTr) {
729
+ return;
730
+ }
731
+ var tbody = overTr.parentElement;
732
+ var dRect = this.draggingTr.getBoundingClientRect();
733
+ var tRect = overTr.getBoundingClientRect();
734
+ var ratio = dRect.top < tRect.top ? 0.1 : 0.9;
735
+ var next = (e.clientY - tRect.top) / (tRect.bottom - tRect.top) > ratio;
736
+ tbody.insertBefore(this.draggingTr, (next && overTr.nextSibling) || overTr);
737
+ };
738
+ Table.prototype.handleDrop = function () {
739
+ return __awaiter(this, void 0, void 0, function () {
740
+ var store, tr, tbody, index, item;
741
+ return __generator(this, function (_a) {
742
+ store = this.props.store;
743
+ tr = this.draggingTr;
744
+ tbody = tr.parentElement;
745
+ index = Array.prototype.indexOf.call(tbody.childNodes, tr);
746
+ item = store.getRowById(tr.getAttribute('data-id'));
747
+ // destroy
748
+ this.handleDragEnd();
749
+ store.exchange(this.originIndex, index, item);
750
+ return [2 /*return*/];
751
+ });
752
+ });
753
+ };
754
+ Table.prototype.handleDragEnd = function () {
755
+ var tr = this.draggingTr;
756
+ var tbody = tr.parentElement;
757
+ var index = Array.prototype.indexOf.call(tbody.childNodes, tr);
758
+ tbody.insertBefore(tr, tbody.childNodes[index < this.originIndex ? this.originIndex + 1 : this.originIndex]);
759
+ tr.classList.remove('is-dragging');
760
+ tr.removeEventListener('dragend', this.handleDragEnd);
761
+ tbody.removeEventListener('dragover', this.handleDragOver);
762
+ tbody.removeEventListener('drop', this.handleDrop);
763
+ this.draggingSibling.forEach(function (item) {
764
+ return item.classList.remove('is-drop-allowed');
765
+ });
766
+ };
767
+ Table.prototype.handleImageEnlarge = function (info, target) {
768
+ var onImageEnlarge = this.props.onImageEnlarge;
769
+ // 如果已经是多张了,直接跳过
770
+ if (Array.isArray(info.list)) {
771
+ return onImageEnlarge && onImageEnlarge(info, target);
772
+ }
773
+ // 从列表中收集所有图片,然后作为一个图片集合派送出去。
774
+ var store = this.props.store;
775
+ var column = store.columns[target.colIndex].pristine;
776
+ var index = target.rowIndex;
777
+ var list = [];
778
+ store.rows.forEach(function (row, i) {
779
+ var src = resolveVariable(column.name, row.data);
780
+ if (!src) {
781
+ if (i < target.rowIndex) {
782
+ index--;
783
+ }
784
+ return;
785
+ }
786
+ list.push({
787
+ src: src,
788
+ originalSrc: column.originalSrc
789
+ ? filter(column.originalSrc, row.data)
790
+ : src,
791
+ title: column.enlargeTitle
792
+ ? filter(column.enlargeTitle, row.data)
793
+ : column.title
794
+ ? filter(column.title, row.data)
795
+ : undefined,
796
+ caption: column.enlargeCaption
797
+ ? filter(column.enlargeCaption, row.data)
798
+ : column.caption
799
+ ? filter(column.caption, row.data)
800
+ : undefined
801
+ });
802
+ });
803
+ if (list.length > 1) {
804
+ onImageEnlarge &&
805
+ onImageEnlarge(__assign(__assign({}, info), { list: list, index: index }), target);
806
+ }
807
+ else {
808
+ onImageEnlarge && onImageEnlarge(info, target);
809
+ }
810
+ };
811
+ // 开始列宽度调整
812
+ Table.prototype.handleColResizeMouseDown = function (e) {
813
+ this.lineStartX = e.clientX;
814
+ var currentTarget = e.currentTarget;
815
+ this.resizeLine = currentTarget;
816
+ this.resizeLineLeft = parseInt(getComputedStyle(this.resizeLine).getPropertyValue('left'), 10);
817
+ this.targetTh = this.resizeLine.parentElement;
818
+ this.targetThWidth = this.targetTh.getBoundingClientRect().width;
819
+ document.addEventListener('mousemove', this.handleColResizeMouseMove);
820
+ document.addEventListener('mouseup', this.handleColResizeMouseUp);
821
+ };
822
+ // 垂直线拖拽移动
823
+ Table.prototype.handleColResizeMouseMove = function (e) {
824
+ var moveX = e.clientX - this.lineStartX;
825
+ // 光标right为-4px,列宽改变时会自动跟随,不需要单独处理位置
826
+ // this.resizeLine.style.left = this.resizeLineLeft + moveX + 'px';
827
+ this.targetTh.style.width = this.targetThWidth + moveX + 'px';
828
+ };
829
+ // 垂直线拖拽结束
830
+ Table.prototype.handleColResizeMouseUp = function (e) {
831
+ document.removeEventListener('mousemove', this.handleColResizeMouseMove);
832
+ document.removeEventListener('mouseup', this.handleColResizeMouseUp);
833
+ };
834
+ Table.prototype.handleColumnToggle = function (columns) {
835
+ var store = this.props.store;
836
+ store.updateColumns(columns);
837
+ };
838
+ Table.prototype.renderAutoFilterForm = function () {
839
+ var _a = this.props, render = _a.render, store = _a.store, onSearchableFromReset = _a.onSearchableFromReset, onSearchableFromSubmit = _a.onSearchableFromSubmit, onSearchableFromInit = _a.onSearchableFromInit, cx = _a.classnames, __ = _a.translate;
840
+ var searchableColumns = store.searchableColumns;
841
+ var activedSearchableColumns = store.activedSearchableColumns;
842
+ if (!searchableColumns.length) {
843
+ return null;
844
+ }
845
+ var groupedSearchableColumns = [
846
+ { body: [], md: 4 },
847
+ { body: [], md: 4 },
848
+ { body: [], md: 4 }
849
+ ];
850
+ activedSearchableColumns.forEach(function (column, index) {
851
+ var _a, _b, _c, _d;
852
+ groupedSearchableColumns[index % 3].body.push(__assign(__assign({}, (column.searchable === true
853
+ ? {
854
+ type: 'input-text',
855
+ name: column.name,
856
+ label: column.label
857
+ }
858
+ : __assign({ type: 'input-text', name: column.name }, column.searchable))), { name: (_b = (_a = column.searchable) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : column.name, label: (_d = (_c = column.searchable) === null || _c === void 0 ? void 0 : _c.label) !== null && _d !== void 0 ? _d : column.label, mode: 'horizontal' }));
859
+ });
860
+ return render('searchable-form', {
861
+ type: 'form',
862
+ api: null,
863
+ title: '',
864
+ mode: 'normal',
865
+ submitText: __('search'),
866
+ body: [
867
+ {
868
+ type: 'grid',
869
+ columns: groupedSearchableColumns
870
+ }
871
+ ],
872
+ actions: [
873
+ {
874
+ type: 'dropdown-button',
875
+ label: __('Table.searchFields'),
876
+ className: cx('Table-searchableForm-dropdown', 'mr-2'),
877
+ level: 'link',
878
+ trigger: 'click',
879
+ size: 'sm',
880
+ align: 'right',
881
+ buttons: searchableColumns.map(function (column) {
882
+ var _a, _b, _c, _d;
883
+ return {
884
+ type: 'checkbox',
885
+ className: cx('Table-searchableForm-checkbox'),
886
+ name: "__search_".concat((_b = (_a = column.searchable) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : column.name),
887
+ option: (_d = (_c = column.searchable) === null || _c === void 0 ? void 0 : _c.label) !== null && _d !== void 0 ? _d : column.label,
888
+ value: column.enableSearch,
889
+ badge: {
890
+ offset: [-10, 5],
891
+ visibleOn: "".concat(column.toggable && !column.toggled && column.enableSearch)
892
+ },
893
+ onChange: function (value) {
894
+ column.setEnableSearch(value);
895
+ }
896
+ };
897
+ })
898
+ },
899
+ {
900
+ type: 'submit',
901
+ label: __('search'),
902
+ level: 'primary',
903
+ className: 'w-18'
904
+ },
905
+ {
906
+ type: 'reset',
907
+ label: __('reset'),
908
+ className: 'w-18'
909
+ }
910
+ ]
911
+ }, {
912
+ key: 'searchable-form',
913
+ panelClassName: cx('Table-searchableForm'),
914
+ actionsClassName: cx('Table-searchableForm-footer'),
915
+ onReset: onSearchableFromReset,
916
+ onSubmit: onSearchableFromSubmit,
917
+ onInit: onSearchableFromInit,
918
+ formStore: undefined
919
+ });
920
+ };
921
+ Table.prototype.renderHeading = function () {
922
+ var _a = this.props, title = _a.title, store = _a.store, hideQuickSaveBtn = _a.hideQuickSaveBtn, data = _a.data, cx = _a.classnames, saveImmediately = _a.saveImmediately, headingClassName = _a.headingClassName, quickSaveApi = _a.quickSaveApi, __ = _a.translate;
923
+ if (title ||
924
+ (quickSaveApi &&
925
+ !saveImmediately &&
926
+ store.modified &&
927
+ !hideQuickSaveBtn) ||
928
+ store.moved) {
929
+ return (React.createElement("div", { className: cx('Table-heading', headingClassName), key: "heading" }, !saveImmediately && store.modified && !hideQuickSaveBtn ? (React.createElement("span", null,
930
+ __('Table.modified', {
931
+ modified: store.modified
932
+ }),
933
+ React.createElement("button", { type: "button", className: cx('Button Button--xs Button--success m-l-sm'), onClick: this.handleSave },
934
+ React.createElement(Icon, { icon: "check", className: "icon m-r-xs" }),
935
+ __('Form.submit')),
936
+ React.createElement("button", { type: "button", className: cx('Button Button--xs Button--danger m-l-sm'), onClick: this.reset },
937
+ React.createElement(Icon, { icon: "close", className: "icon m-r-xs" }),
938
+ __('Table.discard')))) : store.moved ? (React.createElement("span", null,
939
+ __('Table.moved', {
940
+ moved: store.moved
941
+ }),
942
+ React.createElement("button", { type: "button", className: cx('Button Button--xs Button--success m-l-sm'), onClick: this.handleSaveOrder },
943
+ React.createElement(Icon, { icon: "check", className: "icon m-r-xs" }),
944
+ __('Form.submit')),
945
+ React.createElement("button", { type: "button", className: cx('Button Button--xs Button--danger m-l-sm'), onClick: this.reset },
946
+ React.createElement(Icon, { icon: "close", className: "icon m-r-xs" }),
947
+ __('Table.discard')))) : title ? (filter(title, data)) : ('')));
948
+ }
949
+ return null;
950
+ };
951
+ Table.prototype.renderHeadCell = function (column, props) {
952
+ var _this = this;
953
+ var _a = this.props, store = _a.store, query = _a.query, onQuery = _a.onQuery, multiple = _a.multiple, env = _a.env, render = _a.render, ns = _a.classPrefix, resizable = _a.resizable, cx = _a.classnames, autoGenerateFilter = _a.autoGenerateFilter, dispatchEvent = _a.dispatchEvent, data = _a.data;
954
+ if (column.type === '__checkme') {
955
+ return (React.createElement("th", __assign({}, props, { className: cx(column.pristine.className) }), store.rows.length && multiple ? (React.createElement(Checkbox, { classPrefix: ns, partial: store.someChecked && !store.allChecked, checked: store.someChecked, disabled: store.disabledHeadCheckbox, onChange: this.handleCheckAll })) : ('\u00A0')));
956
+ }
957
+ else if (column.type === '__dragme') {
958
+ return React.createElement("th", __assign({}, props, { className: cx(column.pristine.className) }));
959
+ }
960
+ else if (column.type === '__expandme') {
961
+ return (React.createElement("th", __assign({}, props, { className: cx(column.pristine.className) }), (store.footable &&
962
+ (store.footable.expandAll === false || store.footable.accordion)) ||
963
+ (store.expandConfig &&
964
+ (store.expandConfig.expandAll === false ||
965
+ store.expandConfig.accordion)) ? null : (React.createElement("a", { className: cx('Table-expandBtn', store.allExpanded ? 'is-active' : ''),
966
+ // data-tooltip="展开/收起全部"
967
+ // data-position="top"
968
+ onClick: store.toggleExpandAll },
969
+ React.createElement(Icon, { icon: "right-arrow-bold", className: "icon" })))));
970
+ }
971
+ var affix = null;
972
+ if (column.searchable && column.name && !autoGenerateFilter) {
973
+ affix = (React.createElement(HeadCellSearchDropDown, __assign({}, this.props, { onQuery: onQuery, name: column.name, searchable: column.searchable, sortable: column.sortable, type: column.type, data: query, orderBy: store.orderBy, orderDir: store.orderDir, popOverContainer: this.getPopOverContainer })));
974
+ }
975
+ else if (column.sortable && column.name) {
976
+ affix = (React.createElement("span", { className: cx('TableCell-sortBtn'), onClick: function () { return __awaiter(_this, void 0, void 0, function () {
977
+ var orderBy, orderDir, order, rendererEvent;
978
+ return __generator(this, function (_a) {
979
+ switch (_a.label) {
980
+ case 0:
981
+ orderBy = '';
982
+ orderDir = '';
983
+ if (column.name === store.orderBy) {
984
+ if (store.orderDir !== 'desc') {
985
+ // 升序之后降序
986
+ orderBy = column.name;
987
+ orderDir = 'desc';
988
+ }
989
+ }
990
+ else {
991
+ orderBy = column.name;
992
+ }
993
+ order = orderDir ? 'desc' : 'asc';
994
+ return [4 /*yield*/, dispatchEvent('columnSort', createObject(data, {
995
+ orderBy: orderBy,
996
+ orderDir: order
997
+ }))];
998
+ case 1:
999
+ rendererEvent = _a.sent();
1000
+ if (rendererEvent === null || rendererEvent === void 0 ? void 0 : rendererEvent.prevented) {
1001
+ return [2 /*return*/];
1002
+ }
1003
+ store.setOrderByInfo(orderBy, order);
1004
+ onQuery &&
1005
+ onQuery({
1006
+ orderBy: store.orderBy,
1007
+ orderDir: store.orderDir
1008
+ });
1009
+ return [2 /*return*/];
1010
+ }
1011
+ });
1012
+ }); } },
1013
+ React.createElement("i", { className: cx('TableCell-sortBtn--down', store.orderBy === column.name && store.orderDir === 'desc'
1014
+ ? 'is-active'
1015
+ : '') },
1016
+ React.createElement(Icon, { icon: "sort-desc", className: "icon" })),
1017
+ React.createElement("i", { className: cx('TableCell-sortBtn--up', store.orderBy === column.name && store.orderDir === 'asc'
1018
+ ? 'is-active'
1019
+ : '') },
1020
+ React.createElement(Icon, { icon: "sort-asc", className: "icon" })),
1021
+ React.createElement("i", { className: cx('TableCell-sortBtn--default', store.orderBy === column.name ? '' : 'is-active') },
1022
+ React.createElement(Icon, { icon: "sort-default", className: "icon" }))));
1023
+ }
1024
+ else if (column.filterable && column.name) {
1025
+ affix = (React.createElement(HeadCellFilterDropDown, __assign({}, this.props, { onQuery: onQuery, name: column.name, type: column.type, data: query, filterable: column.filterable, popOverContainer: this.getPopOverContainer })));
1026
+ }
1027
+ if (column.pristine.width) {
1028
+ props.style = props.style || {};
1029
+ props.style.width = column.pristine.width;
1030
+ }
1031
+ if (column.pristine.align) {
1032
+ props.style = props.style || {};
1033
+ props.style.textAlign = column.pristine.align;
1034
+ }
1035
+ var resizeLine = (React.createElement("div", { className: cx('Table-content-colDragLine'), key: "resize-".concat(column.index), onMouseDown: this.handleColResizeMouseDown }));
1036
+ return (React.createElement("th", __assign({}, props, { className: cx(props ? props.className : '', {
1037
+ 'TableCell--sortable': column.sortable,
1038
+ 'TableCell--searchable': column.searchable,
1039
+ 'TableCell--filterable': column.filterable,
1040
+ 'Table-operationCell': column.type === 'operation'
1041
+ }) }),
1042
+ React.createElement("div", { className: cx("".concat(ns, "TableCell--title"), column.pristine.className, column.pristine.labelClassName), style: props.style },
1043
+ column.label ? render('tpl', column.label) : null,
1044
+ column.remark
1045
+ ? render('remark', {
1046
+ type: 'remark',
1047
+ tooltip: column.remark,
1048
+ container: env && env.getModalContainer
1049
+ ? env.getModalContainer
1050
+ : undefined
1051
+ })
1052
+ : null),
1053
+ affix,
1054
+ resizable === false ? null : resizeLine));
1055
+ };
1056
+ Table.prototype.renderCell = function (region, column, item, props, ignoreDrag) {
1057
+ if (ignoreDrag === void 0) { ignoreDrag = false; }
1058
+ var _a = this.props, render = _a.render, store = _a.store, multiple = _a.multiple, ns = _a.classPrefix, cx = _a.classnames, checkOnItemClick = _a.checkOnItemClick, popOverContainer = _a.popOverContainer, canAccessSuperData = _a.canAccessSuperData, itemBadge = _a.itemBadge;
1059
+ if (column.name && item.rowSpans[column.name] === 0) {
1060
+ return null;
1061
+ }
1062
+ if (column.type === '__checkme') {
1063
+ return (React.createElement("td", { key: props.key, className: cx(column.pristine.className) },
1064
+ React.createElement(Checkbox, { classPrefix: ns, type: multiple ? 'checkbox' : 'radio', checked: item.checked, disabled: item.checkdisable || !item.checkable, onChange: checkOnItemClick ? noop : this.handleCheck.bind(this, item) })));
1065
+ }
1066
+ else if (column.type === '__dragme') {
1067
+ return (React.createElement("td", { key: props.key, className: cx(column.pristine.className, {
1068
+ 'is-dragDisabled': !item.draggable
1069
+ }) }, item.draggable ? React.createElement(Icon, { icon: "drag", className: "icon" }) : null));
1070
+ }
1071
+ else if (column.type === '__expandme') {
1072
+ return (React.createElement("td", { key: props.key, className: cx(column.pristine.className) },
1073
+ item.depth > 2
1074
+ ? Array.from({ length: item.depth - 2 }).map(function (_, index) { return (React.createElement("i", { key: index, className: cx('Table-divider-' + (index + 1)) })); })
1075
+ : null,
1076
+ item.expandable ? (React.createElement("a", { className: cx('Table-expandBtn', item.expanded ? 'is-active' : ''),
1077
+ // data-tooltip="展开/收起"
1078
+ // data-position="top"
1079
+ onClick: item.toggleExpanded },
1080
+ React.createElement(Icon, { icon: "right-arrow-bold", className: "icon" }))) : null));
1081
+ }
1082
+ var prefix = null;
1083
+ if (!ignoreDrag &&
1084
+ column.isPrimary &&
1085
+ store.isNested &&
1086
+ store.draggable &&
1087
+ item.draggable) {
1088
+ prefix = (React.createElement("a", { draggable: true, onDragStart: this.handleDragStart, className: cx('Table-dragBtn') },
1089
+ React.createElement(Icon, { icon: "drag", className: "icon" })));
1090
+ }
1091
+ var subProps = __assign(__assign({}, props), { btnDisabled: store.dragging, data: item.locals, value: column.name
1092
+ ? resolveVariable(column.name, canAccessSuperData ? item.locals : item.data)
1093
+ : column.value, popOverContainer: popOverContainer || this.getPopOverContainer, rowSpan: item.rowSpans[column.name], quickEditFormRef: this.subFormRef, prefix: prefix, onImageEnlarge: this.handleImageEnlarge, canAccessSuperData: canAccessSuperData, row: item, itemBadge: itemBadge, showBadge: !props.isHead &&
1094
+ itemBadge &&
1095
+ store.firstToggledColumnIndex === props.colIndex });
1096
+ delete subProps.label;
1097
+ return render(region, __assign(__assign({}, column.pristine), { column: column.pristine, type: 'cell' }), subProps);
1098
+ };
1099
+ Table.prototype.renderAffixHeader = function (tableClassName) {
1100
+ var _this = this;
1101
+ var _a = this.props, store = _a.store, affixHeader = _a.affixHeader, render = _a.render, cx = _a.classnames;
1102
+ var hideHeader = store.filteredColumns.every(function (column) { return !column.label; });
1103
+ var columnsGroup = store.columnGroup;
1104
+ return affixHeader ? (React.createElement("div", { className: cx('Table-fixedTop', {
1105
+ 'is-fakeHide': hideHeader
1106
+ }) },
1107
+ this.renderHeader(false),
1108
+ this.renderHeading(),
1109
+ React.createElement("div", { className: cx('Table-fixedLeft') }, store.leftFixedColumns.length
1110
+ ? this.renderFixedColumns(store.rows, store.leftFixedColumns, true, tableClassName)
1111
+ : null),
1112
+ React.createElement("div", { className: cx('Table-fixedRight') }, store.rightFixedColumns.length
1113
+ ? this.renderFixedColumns(store.rows, store.rightFixedColumns, true, tableClassName)
1114
+ : null),
1115
+ React.createElement("div", { className: cx('Table-wrapper') },
1116
+ React.createElement("table", { ref: this.affixedTableRef, className: tableClassName },
1117
+ React.createElement("colgroup", null, store.filteredColumns.map(function (column) { return (React.createElement("col", { key: column.index, "data-index": column.index })); })),
1118
+ React.createElement("thead", null,
1119
+ columnsGroup.length ? (React.createElement("tr", null, columnsGroup.map(function (item, index) { return (React.createElement("th", { key: index, "data-index": item.index, colSpan: item.colSpan, rowSpan: item.rowSpan }, item.label ? render('tpl', item.label) : null)); }))) : null,
1120
+ React.createElement("tr", null, store.filteredColumns.map(function (column) {
1121
+ var _a;
1122
+ return ((_a = columnsGroup.find(function (group) { return ~group.has.indexOf(column); })) === null || _a === void 0 ? void 0 : _a.rowSpan) === 2
1123
+ ? null
1124
+ : _this.renderHeadCell(column, {
1125
+ 'key': column.index,
1126
+ 'data-index': column.index
1127
+ });
1128
+ }))))))) : null;
1129
+ };
1130
+ Table.prototype.renderFixedColumns = function (rows, columns, headerOnly, tableClassName) {
1131
+ var _this = this;
1132
+ if (headerOnly === void 0) { headerOnly = false; }
1133
+ if (tableClassName === void 0) { tableClassName = ''; }
1134
+ var _a = this.props, placeholder = _a.placeholder, store = _a.store, cx = _a.classnames, render = _a.render, data = _a.data, translate = _a.translate, locale = _a.locale, checkOnItemClick = _a.checkOnItemClick, buildItemProps = _a.buildItemProps, rowClassNameExpr = _a.rowClassNameExpr, rowClassName = _a.rowClassName, itemAction = _a.itemAction, dispatchEvent = _a.dispatchEvent, onEvent = _a.onEvent;
1135
+ var hideHeader = store.filteredColumns.every(function (column) { return !column.label; });
1136
+ var columnsGroup = store.columnGroup;
1137
+ return (React.createElement("table", { className: cx('Table-table', store.combineNum > 0 ? 'Table-table--withCombine' : '', tableClassName) },
1138
+ React.createElement("thead", null,
1139
+ columnsGroup.length ? (React.createElement("tr", null, columnsGroup.map(function (item, index) {
1140
+ var renderColumns = columns.filter(function (a) { return ~item.has.indexOf(a); });
1141
+ return renderColumns.length ? (React.createElement("th", { key: index, "data-index": item.index, colSpan: renderColumns.length, rowSpan: item.rowSpan }, item.label)) : null;
1142
+ }))) : null,
1143
+ React.createElement("tr", { className: hideHeader ? 'fake-hide' : '' }, columns.map(function (column) {
1144
+ var _a;
1145
+ return ((_a = columnsGroup.find(function (group) { return ~group.has.indexOf(column); })) === null || _a === void 0 ? void 0 : _a.rowSpan) === 2
1146
+ ? null
1147
+ : _this.renderHeadCell(column, {
1148
+ 'key': column.index,
1149
+ 'data-index': column.index
1150
+ });
1151
+ }))),
1152
+ headerOnly ? null : !rows.length ? (React.createElement("tbody", null,
1153
+ React.createElement("tr", { className: cx('Table-placeholder') },
1154
+ React.createElement("td", { colSpan: columns.length }, render('placeholder', translate(placeholder || 'placeholder.noData')))))) : (React.createElement(TableBody, { tableClassName: cx(store.combineNum > 0 ? 'Table-table--withCombine' : '', tableClassName), itemAction: itemAction, classnames: cx, render: render, renderCell: this.renderCell, onCheck: this.handleCheck, onQuickChange: store.dragging ? undefined : this.handleQuickChange, footable: store.footable, ignoreFootableContent: true, footableColumns: store.footableColumns, checkOnItemClick: checkOnItemClick, buildItemProps: buildItemProps, onAction: this.handleAction, rowClassNameExpr: rowClassNameExpr, rowClassName: rowClassName, columns: columns, rows: rows, locale: locale, translate: translate, rowsProps: {
1155
+ regionPrefix: 'fixed/',
1156
+ renderCell: function (region, column, item, props) { return _this.renderCell(region, column, item, props, true); },
1157
+ data: data,
1158
+ dispatchEvent: dispatchEvent,
1159
+ onEvent: onEvent
1160
+ } }))));
1161
+ };
1162
+ Table.prototype.renderToolbar = function (toolbar) {
1163
+ var type = toolbar.type || toolbar;
1164
+ if (type === 'columns-toggler') {
1165
+ this.renderedToolbars.push(type);
1166
+ return this.renderColumnsToggler(toolbar);
1167
+ }
1168
+ else if (type === 'drag-toggler') {
1169
+ this.renderedToolbars.push(type);
1170
+ return this.renderDragToggler();
1171
+ }
1172
+ else if (type === 'export-excel') {
1173
+ this.renderedToolbars.push(type);
1174
+ return this.renderExportExcel(toolbar);
1175
+ }
1176
+ return void 0;
1177
+ };
1178
+ Table.prototype.renderColumnsToggler = function (config) {
1179
+ var _this = this;
1180
+ var _a;
1181
+ var _b = this.props; _b.className; var store = _b.store, ns = _b.classPrefix, cx = _b.classnames, rest = __rest(_b, ["className", "store", "classPrefix", "classnames"]);
1182
+ var __ = rest.translate;
1183
+ var env = rest.env;
1184
+ var render = this.props.render;
1185
+ if (!store.columnsTogglable) {
1186
+ return null;
1187
+ }
1188
+ return (React.createElement(ColumnToggler, __assign({}, rest, (isObject(config) ? config : {}), { tooltip: (config === null || config === void 0 ? void 0 : config.tooltip) || __('Table.columnsVisibility'), tooltipContainer: env && env.getModalContainer ? env.getModalContainer : undefined, align: (_a = config === null || config === void 0 ? void 0 : config.align) !== null && _a !== void 0 ? _a : 'left', isActived: store.hasColumnHidden(), classnames: cx, classPrefix: ns, key: "columns-toggable", size: (config === null || config === void 0 ? void 0 : config.size) || 'sm', icon: config === null || config === void 0 ? void 0 : config.icon, label: config === null || config === void 0 ? void 0 : config.label, draggable: config === null || config === void 0 ? void 0 : config.draggable, columns: store.columnsData, activeToggaleColumns: store.activeToggaleColumns, onColumnToggle: this.handleColumnToggle }),
1189
+ store.toggableColumns.length ? (React.createElement("li", { className: cx('ColumnToggler-menuItem'), key: 'selectAll', onClick: function () { return __awaiter(_this, void 0, void 0, function () {
1190
+ var _a, data, dispatchEvent, allToggled, rendererEvent;
1191
+ return __generator(this, function (_b) {
1192
+ switch (_b.label) {
1193
+ case 0:
1194
+ _a = this.props, data = _a.data, dispatchEvent = _a.dispatchEvent;
1195
+ allToggled = !(store.activeToggaleColumns.length ===
1196
+ store.toggableColumns.length);
1197
+ return [4 /*yield*/, dispatchEvent('columnToggled', createObject(data, {
1198
+ columns: allToggled
1199
+ ? store.toggableColumns.map(function (column) { return column.pristine; })
1200
+ : []
1201
+ }))];
1202
+ case 1:
1203
+ rendererEvent = _b.sent();
1204
+ if (rendererEvent === null || rendererEvent === void 0 ? void 0 : rendererEvent.prevented) {
1205
+ return [2 /*return*/];
1206
+ }
1207
+ store.toggleAllColumns();
1208
+ return [2 /*return*/];
1209
+ }
1210
+ });
1211
+ }); } },
1212
+ React.createElement(Checkbox, { size: "sm", classPrefix: ns, key: "checkall", checked: !!store.activeToggaleColumns.length, partial: !!(store.activeToggaleColumns.length &&
1213
+ store.activeToggaleColumns.length !==
1214
+ store.toggableColumns.length) }, __('Checkboxes.selectAll')))) : null,
1215
+ store.toggableColumns.map(function (column) { return (React.createElement("li", { className: cx('ColumnToggler-menuItem'), key: column.index, onClick: function () { return __awaiter(_this, void 0, void 0, function () {
1216
+ var _a, data, dispatchEvent, columns, rendererEvent;
1217
+ return __generator(this, function (_b) {
1218
+ switch (_b.label) {
1219
+ case 0:
1220
+ _a = this.props, data = _a.data, dispatchEvent = _a.dispatchEvent;
1221
+ columns = store.activeToggaleColumns.map(function (item) { return item.pristine; });
1222
+ if (!column.toggled) {
1223
+ columns.push(column.pristine);
1224
+ }
1225
+ else {
1226
+ columns = columns.filter(function (c) { return c.name !== column.pristine.name; });
1227
+ }
1228
+ return [4 /*yield*/, dispatchEvent('columnToggled', createObject(data, {
1229
+ columns: columns
1230
+ }))];
1231
+ case 1:
1232
+ rendererEvent = _b.sent();
1233
+ if (rendererEvent === null || rendererEvent === void 0 ? void 0 : rendererEvent.prevented) {
1234
+ return [2 /*return*/];
1235
+ }
1236
+ column.toggleToggle();
1237
+ return [2 /*return*/];
1238
+ }
1239
+ });
1240
+ }); } },
1241
+ React.createElement(Checkbox, { size: "sm", classPrefix: ns, checked: column.toggled }, column.label ? render('tpl', column.label) : null))); })));
1242
+ };
1243
+ Table.prototype.renderDragToggler = function () {
1244
+ var _a = this.props, store = _a.store, env = _a.env, draggable = _a.draggable, ns = _a.classPrefix, __ = _a.translate;
1245
+ if (!draggable || store.isNested) {
1246
+ return null;
1247
+ }
1248
+ return (React.createElement(Button, { disabled: !!store.modified, classPrefix: ns, key: "dragging-toggle", tooltip: __('Table.startSort'), tooltipContainer: env && env.getModalContainer ? env.getModalContainer : undefined, size: "sm", active: store.dragging, onClick: function (e) {
1249
+ e.preventDefault();
1250
+ store.toggleDragging();
1251
+ store.dragging && store.clear();
1252
+ }, iconOnly: true },
1253
+ React.createElement(Icon, { icon: "exchange", className: "icon" })));
1254
+ };
1255
+ Table.prototype.renderExportExcel = function (toolbar) {
1256
+ var _this = this;
1257
+ var _a = this.props, store = _a.store; _a.env; _a.classPrefix; _a.classnames; var __ = _a.translate; _a.data; var render = _a.render;
1258
+ var columns = store.filteredColumns || [];
1259
+ if (!columns) {
1260
+ return null;
1261
+ }
1262
+ return render('exportExcel', __assign(__assign({ label: __('CRUD.exportExcel') }, toolbar), { type: 'button' }), {
1263
+ onAction: function () {
1264
+ import('exceljs').then(function (ExcelJS) { return __awaiter(_this, void 0, void 0, function () {
1265
+ return __generator(this, function (_a) {
1266
+ exportExcel(ExcelJS, this.props, toolbar);
1267
+ return [2 /*return*/];
1268
+ });
1269
+ }); });
1270
+ }
1271
+ });
1272
+ };
1273
+ Table.prototype.renderActions = function (region) {
1274
+ var _this = this;
1275
+ var _a = this.props, actions = _a.actions, render = _a.render, store = _a.store, cx = _a.classnames, data = _a.data;
1276
+ actions = Array.isArray(actions) ? actions.concat() : [];
1277
+ if (store.toggable &&
1278
+ region === 'header' &&
1279
+ !~this.renderedToolbars.indexOf('columns-toggler')) {
1280
+ actions.push({
1281
+ type: 'button',
1282
+ children: this.renderColumnsToggler()
1283
+ });
1284
+ }
1285
+ if (store.draggable &&
1286
+ !store.isNested &&
1287
+ region === 'header' &&
1288
+ store.rows.length > 1 &&
1289
+ !~this.renderedToolbars.indexOf('drag-toggler')) {
1290
+ actions.push({
1291
+ type: 'button',
1292
+ children: this.renderDragToggler()
1293
+ });
1294
+ }
1295
+ return Array.isArray(actions) && actions.length ? (React.createElement("div", { className: cx('Table-actions') }, actions.map(function (action, key) {
1296
+ return render("action/".concat(key), __assign({ type: 'button' }, action), {
1297
+ onAction: _this.handleAction,
1298
+ key: key,
1299
+ btnDisabled: store.dragging,
1300
+ data: store.getData(data)
1301
+ });
1302
+ }))) : null;
1303
+ };
1304
+ Table.prototype.renderHeader = function (editable) {
1305
+ var _a = this.props, header = _a.header, headerClassName = _a.headerClassName, toolbarClassName = _a.toolbarClassName, headerToolbarClassName = _a.headerToolbarClassName, headerToolbarRender = _a.headerToolbarRender, render = _a.render, showHeader = _a.showHeader, store = _a.store, cx = _a.classnames, data = _a.data, __ = _a.translate;
1306
+ if (showHeader === false) {
1307
+ return null;
1308
+ }
1309
+ var otherProps = {};
1310
+ // editable === false && (otherProps.$$editable = false);
1311
+ var child = headerToolbarRender
1312
+ ? headerToolbarRender(__assign(__assign(__assign({}, this.props), { selectedItems: store.selectedRows.map(function (item) { return item.data; }), items: store.rows.map(function (item) { return item.data; }), unSelectedItems: store.unSelectedRows.map(function (item) { return item.data; }) }), otherProps), this.renderToolbar)
1313
+ : null;
1314
+ var actions = this.renderActions('header');
1315
+ var toolbarNode = actions || child || store.dragging ? (React.createElement("div", { className: cx('Table-toolbar Table-headToolbar', toolbarClassName, headerToolbarClassName), key: "header-toolbar" },
1316
+ actions,
1317
+ child,
1318
+ store.dragging ? (React.createElement("div", { className: cx('Table-dragTip'), ref: this.dragTipRef }, __('Table.dragTip'))) : null)) : null;
1319
+ var headerNode = header && (!Array.isArray(header) || header.length) ? (React.createElement("div", { className: cx('Table-header', headerClassName), key: "header" }, render('header', header, __assign(__assign({}, (editable === false ? otherProps : null)), { data: store.getData(data) })))) : null;
1320
+ return headerNode && toolbarNode
1321
+ ? [headerNode, toolbarNode]
1322
+ : headerNode || toolbarNode || null;
1323
+ };
1324
+ Table.prototype.renderFooter = function () {
1325
+ var _a = this.props, footer = _a.footer, toolbarClassName = _a.toolbarClassName, footerToolbarClassName = _a.footerToolbarClassName, footerClassName = _a.footerClassName, footerToolbarRender = _a.footerToolbarRender, render = _a.render, showFooter = _a.showFooter, store = _a.store, data = _a.data, cx = _a.classnames;
1326
+ if (showFooter === false) {
1327
+ return null;
1328
+ }
1329
+ var child = footerToolbarRender
1330
+ ? footerToolbarRender(__assign(__assign({}, this.props), { selectedItems: store.selectedRows.map(function (item) { return item.data; }), items: store.rows.map(function (item) { return item.data; }) }), this.renderToolbar)
1331
+ : null;
1332
+ var actions = this.renderActions('footer');
1333
+ var toolbarNode = actions || child ? (React.createElement("div", { className: cx('Table-toolbar Table-footToolbar', toolbarClassName, footerToolbarClassName), key: "footer-toolbar" },
1334
+ actions,
1335
+ child)) : null;
1336
+ var footerNode = footer && (!Array.isArray(footer) || footer.length) ? (React.createElement("div", { className: cx('Table-footer', footerClassName), key: "footer" }, render('footer', footer, {
1337
+ data: store.getData(data)
1338
+ }))) : null;
1339
+ return footerNode && toolbarNode
1340
+ ? [toolbarNode, footerNode]
1341
+ : footerNode || toolbarNode || null;
1342
+ };
1343
+ Table.prototype.renderTableContent = function () {
1344
+ var _a = this.props, cx = _a.classnames, tableClassName = _a.tableClassName, store = _a.store, placeholder = _a.placeholder, render = _a.render, checkOnItemClick = _a.checkOnItemClick, buildItemProps = _a.buildItemProps, rowClassNameExpr = _a.rowClassNameExpr, rowClassName = _a.rowClassName, prefixRow = _a.prefixRow, locale = _a.locale, affixRow = _a.affixRow, tableContentClassName = _a.tableContentClassName, translate = _a.translate, itemAction = _a.itemAction; _a.affixRowClassNameExpr; var affixRowClassName = _a.affixRowClassName; _a.prefixRowClassNameExpr; var prefixRowClassName = _a.prefixRowClassName; _a.autoFillHeight; var itemActions = _a.itemActions, dispatchEvent = _a.dispatchEvent, onEvent = _a.onEvent, _b = _a.loading, loading = _b === void 0 ? false : _b;
1345
+ // 理论上来说 store.rows 应该也行啊
1346
+ // 不过目前看来只有这样写它才会重新更新视图
1347
+ store.rows.length;
1348
+ return (React.createElement(React.Fragment, null,
1349
+ React.createElement(TableContent, { tableClassName: cx(store.combineNum > 0 ? 'Table-table--withCombine' : '', { 'Table-table--checkOnItemClick': checkOnItemClick }, tableClassName), className: tableContentClassName, itemActions: itemActions, itemAction: itemAction, store: store, classnames: cx, columns: store.filteredColumns, columnsGroup: store.columnGroup, rows: store.rows, placeholder: placeholder, render: render, onMouseMove: this.handleMouseMove, onScroll: this.handleOutterScroll, tableRef: this.tableRef, renderHeadCell: this.renderHeadCell, renderCell: this.renderCell, onCheck: this.handleCheck, onQuickChange: store.dragging ? undefined : this.handleQuickChange, footable: store.footable, footableColumns: store.footableColumns, checkOnItemClick: checkOnItemClick, buildItemProps: buildItemProps, onAction: this.handleAction, rowClassNameExpr: rowClassNameExpr, rowClassName: rowClassName, data: store.data, prefixRow: prefixRow, affixRow: affixRow, prefixRowClassName: prefixRowClassName, affixRowClassName: affixRowClassName, locale: locale, translate: translate, dispatchEvent: dispatchEvent, onEvent: onEvent, loading: loading }),
1350
+ React.createElement(Spinner, { overlay: true, show: loading })));
1351
+ };
1352
+ Table.prototype.doAction = function (action, args, throwErrors) {
1353
+ var _a = this.props, store = _a.store, valueField = _a.valueField, data = _a.data;
1354
+ var actionType = action === null || action === void 0 ? void 0 : action.actionType;
1355
+ switch (actionType) {
1356
+ case 'selectAll':
1357
+ store.clear();
1358
+ store.toggleAll();
1359
+ break;
1360
+ case 'clearAll':
1361
+ store.clear();
1362
+ break;
1363
+ case 'select':
1364
+ var dataSource = store.getData(data);
1365
+ var selected_1 = [];
1366
+ dataSource.items.forEach(function (item, rowIndex) {
1367
+ var flag = evalExpression(args === null || args === void 0 ? void 0 : args.selected, { record: item, rowIndex: rowIndex });
1368
+ if (flag) {
1369
+ selected_1.push(item);
1370
+ }
1371
+ });
1372
+ store.updateSelected(selected_1, valueField);
1373
+ break;
1374
+ case 'initDrag':
1375
+ store.stopDragging();
1376
+ store.toggleDragging();
1377
+ break;
1378
+ default:
1379
+ this.handleAction(undefined, action, data);
1380
+ break;
1381
+ }
1382
+ };
1383
+ Table.prototype.render = function () {
1384
+ var _a = this.props, className = _a.className, store = _a.store, cx = _a.classnames, affixColumns = _a.affixColumns, autoFillHeight = _a.autoFillHeight, autoGenerateFilter = _a.autoGenerateFilter;
1385
+ this.renderedToolbars = []; // 用来记录哪些 toolbar 已经渲染了,已经渲染了就不重复渲染了。
1386
+ var heading = this.renderHeading();
1387
+ var header = this.renderHeader();
1388
+ var footer = this.renderFooter();
1389
+ var tableClassName = cx('Table-table', store.combineNum > 0 ? 'Table-table--withCombine' : '', this.props.tableClassName);
1390
+ return (React.createElement("div", { className: cx('Table', className, {
1391
+ 'Table--unsaved': !!store.modified || !!store.moved,
1392
+ 'Table--autoFillHeight': autoFillHeight
1393
+ }) },
1394
+ autoGenerateFilter ? this.renderAutoFilterForm() : null,
1395
+ header,
1396
+ heading,
1397
+ React.createElement("div", { className: cx('Table-contentWrap'), onMouseLeave: this.handleMouseLeave },
1398
+ React.createElement("div", { className: cx('Table-fixedLeft', {
1399
+ 'Table-fixedLeft--autoFillHeight': autoFillHeight
1400
+ }), onMouseMove: this.handleMouseMove, onScroll: this.handleFixedColumnsScroll }, affixColumns !== false && store.leftFixedColumns.length
1401
+ ? this.renderFixedColumns(store.rows, store.leftFixedColumns, false, tableClassName)
1402
+ : null),
1403
+ React.createElement("div", { className: cx('Table-fixedRight', {
1404
+ 'Table-fixedLeft--autoFillHeight': autoFillHeight
1405
+ }), onMouseMove: this.handleMouseMove, onScroll: this.handleFixedColumnsScroll }, affixColumns !== false && store.rightFixedColumns.length
1406
+ ? this.renderFixedColumns(store.rows, store.rightFixedColumns, false, tableClassName)
1407
+ : null),
1408
+ this.renderTableContent()),
1409
+ this.renderAffixHeader(tableClassName),
1410
+ footer));
1411
+ };
1412
+ Table.contextType = ScopedContext;
1413
+ Table.propsList = [
1414
+ 'header',
1415
+ 'headerToolbarRender',
1416
+ 'footer',
1417
+ 'footerToolbarRender',
1418
+ 'footable',
1419
+ 'expandConfig',
1420
+ 'placeholder',
1421
+ 'tableClassName',
1422
+ 'headingClassName',
1423
+ 'source',
1424
+ 'selectable',
1425
+ 'columnsTogglable',
1426
+ 'affixHeader',
1427
+ 'affixColumns',
1428
+ 'headerClassName',
1429
+ 'footerClassName',
1430
+ 'selected',
1431
+ 'multiple',
1432
+ 'primaryField',
1433
+ 'hideQuickSaveBtn',
1434
+ 'itemCheckableOn',
1435
+ 'itemDraggableOn',
1436
+ 'checkOnItemClick',
1437
+ 'hideCheckToggler',
1438
+ 'itemAction',
1439
+ 'itemActions',
1440
+ 'combineNum',
1441
+ 'combineFromIndex',
1442
+ 'items',
1443
+ 'columns',
1444
+ 'valueField',
1445
+ 'saveImmediately',
1446
+ 'rowClassName',
1447
+ 'rowClassNameExpr',
1448
+ 'affixRowClassNameExpr',
1449
+ 'prefixRowClassNameExpr',
1450
+ 'popOverContainer',
1451
+ 'headerToolbarClassName',
1452
+ 'toolbarClassName',
1453
+ 'footerToolbarClassName',
1454
+ 'itemBadge',
1455
+ 'autoFillHeight',
1456
+ 'onSelect',
1457
+ 'keepItemSelectionOnPageChange',
1458
+ 'maxKeepItemSelectionLength'
1459
+ ];
1460
+ Table.defaultProps = {
1461
+ className: '',
1462
+ placeholder: 'placeholder.noData',
1463
+ tableClassName: '',
1464
+ source: '$items',
1465
+ selectable: false,
1466
+ columnsTogglable: 'auto',
1467
+ affixHeader: true,
1468
+ headerClassName: '',
1469
+ footerClassName: '',
1470
+ toolbarClassName: '',
1471
+ headerToolbarClassName: '',
1472
+ footerToolbarClassName: '',
1473
+ primaryField: 'id',
1474
+ itemCheckableOn: '',
1475
+ itemDraggableOn: '',
1476
+ hideCheckToggler: false,
1477
+ canAccessSuperData: false,
1478
+ resizable: true
1479
+ };
1480
+ __decorate([
1481
+ autobind,
1482
+ __metadata("design:type", Function),
1483
+ __metadata("design:paramtypes", [Object]),
1484
+ __metadata("design:returntype", void 0)
1485
+ ], Table.prototype, "handleFixedColumnsScroll", null);
1486
+ __decorate([
1487
+ autobind,
1488
+ __metadata("design:type", Function),
1489
+ __metadata("design:paramtypes", [Object]),
1490
+ __metadata("design:returntype", void 0)
1491
+ ], Table.prototype, "handleDragStart", null);
1492
+ __decorate([
1493
+ autobind,
1494
+ __metadata("design:type", Function),
1495
+ __metadata("design:paramtypes", [Object]),
1496
+ __metadata("design:returntype", void 0)
1497
+ ], Table.prototype, "handleDragOver", null);
1498
+ __decorate([
1499
+ autobind,
1500
+ __metadata("design:type", Function),
1501
+ __metadata("design:paramtypes", []),
1502
+ __metadata("design:returntype", Promise)
1503
+ ], Table.prototype, "handleDrop", null);
1504
+ __decorate([
1505
+ autobind,
1506
+ __metadata("design:type", Function),
1507
+ __metadata("design:paramtypes", []),
1508
+ __metadata("design:returntype", void 0)
1509
+ ], Table.prototype, "handleDragEnd", null);
1510
+ __decorate([
1511
+ autobind,
1512
+ __metadata("design:type", Function),
1513
+ __metadata("design:paramtypes", [Object, Object]),
1514
+ __metadata("design:returntype", void 0)
1515
+ ], Table.prototype, "handleImageEnlarge", null);
1516
+ __decorate([
1517
+ autobind,
1518
+ __metadata("design:type", Function),
1519
+ __metadata("design:paramtypes", [Object]),
1520
+ __metadata("design:returntype", void 0)
1521
+ ], Table.prototype, "handleColResizeMouseDown", null);
1522
+ __decorate([
1523
+ autobind,
1524
+ __metadata("design:type", Function),
1525
+ __metadata("design:paramtypes", [MouseEvent]),
1526
+ __metadata("design:returntype", void 0)
1527
+ ], Table.prototype, "handleColResizeMouseMove", null);
1528
+ __decorate([
1529
+ autobind,
1530
+ __metadata("design:type", Function),
1531
+ __metadata("design:paramtypes", [MouseEvent]),
1532
+ __metadata("design:returntype", void 0)
1533
+ ], Table.prototype, "handleColResizeMouseUp", null);
1534
+ return Table;
1535
+ }(React.Component));
1536
+ /** @class */ ((function (_super) {
1537
+ __extends(TableRenderer, _super);
1538
+ function TableRenderer() {
1539
+ return _super !== null && _super.apply(this, arguments) || this;
1540
+ }
1541
+ TableRenderer.prototype.receive = function (values, subPath) {
1542
+ var _this = this;
1543
+ var _a, _b;
1544
+ var scoped = this.context;
1545
+ var parents = (_a = scoped === null || scoped === void 0 ? void 0 : scoped.parent) === null || _a === void 0 ? void 0 : _a.getComponents();
1546
+ /**
1547
+ * 因为Table在scope上注册,导致getComponentByName查询组件时会优先找到Table,和CRUD联动的动作都会失效
1548
+ * 这里先做兼容处理,把动作交给上层的CRUD处理
1549
+ */
1550
+ if (Array.isArray(parents) && parents.length) {
1551
+ // CRUD的name会透传给Table,这样可以保证找到CRUD
1552
+ var crud = parents.find(function (cmpt) { var _a, _b; return ((_a = cmpt === null || cmpt === void 0 ? void 0 : cmpt.props) === null || _a === void 0 ? void 0 : _a.name) === ((_b = _this.props) === null || _b === void 0 ? void 0 : _b.name); });
1553
+ return (_b = crud === null || crud === void 0 ? void 0 : crud.receive) === null || _b === void 0 ? void 0 : _b.call(crud, values, subPath);
1554
+ }
1555
+ if (subPath) {
1556
+ return scoped.send(subPath, values);
1557
+ }
1558
+ };
1559
+ TableRenderer.prototype.reload = function (subPath, query, ctx) {
1560
+ var _this = this;
1561
+ var _a, _b;
1562
+ var scoped = this.context;
1563
+ var parents = (_a = scoped === null || scoped === void 0 ? void 0 : scoped.parent) === null || _a === void 0 ? void 0 : _a.getComponents();
1564
+ if (Array.isArray(parents) && parents.length) {
1565
+ // CRUD的name会透传给Table,这样可以保证找到CRUD
1566
+ var crud = parents.find(function (cmpt) { var _a, _b; return ((_a = cmpt === null || cmpt === void 0 ? void 0 : cmpt.props) === null || _a === void 0 ? void 0 : _a.name) === ((_b = _this.props) === null || _b === void 0 ? void 0 : _b.name); });
1567
+ return (_b = crud === null || crud === void 0 ? void 0 : crud.reload) === null || _b === void 0 ? void 0 : _b.call(crud, subPath, query, ctx);
1568
+ }
1569
+ if (subPath) {
1570
+ return scoped.reload(subPath, ctx);
1571
+ }
1572
+ };
1573
+ TableRenderer = __decorate([
1574
+ Renderer({
1575
+ type: 'table',
1576
+ storeType: TableStore.name,
1577
+ name: 'table'
1578
+ })
1579
+ ], TableRenderer);
1580
+ return TableRenderer;
1581
+ })(Table));
1582
+
1583
+ export { Table as default };