vxe-pc-ui 4.20.34 → 4.20.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (367) hide show
  1. package/dist/all.esm.js +45718 -45038
  2. package/dist/all.esm.min.js +3 -3
  3. package/dist/style.css +307 -1
  4. package/dist/style.mini.css +1 -1
  5. package/es/alert/src/alert.js +117 -114
  6. package/es/anchor/src/anchor-link.js +110 -107
  7. package/es/anchor/src/anchor.js +212 -209
  8. package/es/avatar/src/avatar.js +132 -129
  9. package/es/backtop/src/backtop.js +267 -264
  10. package/es/badge/src/badge.js +102 -99
  11. package/es/breadcrumb/src/breadcrumb-item.js +104 -101
  12. package/es/breadcrumb/src/breadcrumb.js +70 -67
  13. package/es/button/src/button-group.js +88 -85
  14. package/es/calendar/src/calendar.js +1371 -1368
  15. package/es/card/src/card.js +235 -232
  16. package/es/carousel/src/carousel-item.js +78 -75
  17. package/es/carousel/src/carousel.js +392 -389
  18. package/es/cascader/src/cascader.js +1667 -1664
  19. package/es/checkbox/src/button.js +198 -195
  20. package/es/checkbox/src/checkbox.js +181 -178
  21. package/es/checkbox/src/group.js +210 -207
  22. package/es/collapse/src/collapse-pane.js +98 -95
  23. package/es/collapse/src/collapse.js +340 -337
  24. package/es/color-picker/src/color-picker.js +1116 -1113
  25. package/es/components.d.ts +1 -0
  26. package/es/components.js +3 -0
  27. package/es/context-menu/src/context-menu.js +601 -598
  28. package/es/countdown/src/countdown.js +224 -221
  29. package/es/date-panel/src/date-panel.js +1905 -1902
  30. package/es/date-picker/src/date-picker.js +1537 -1534
  31. package/es/date-range-picker/src/date-range-picker.js +1412 -1409
  32. package/es/divider/src/divider.js +80 -77
  33. package/es/drawer/src/drawer.js +778 -775
  34. package/es/empty/src/empty.js +100 -97
  35. package/es/form/src/form-group.js +74 -71
  36. package/es/form/src/form-item.js +76 -73
  37. package/es/form/src/form.js +789 -786
  38. package/es/icon/src/icon.js +59 -56
  39. package/es/icon/style.css +1 -1
  40. package/es/icon/style.mini.css +1 -1
  41. package/es/icon-picker/src/icon-picker.js +719 -716
  42. package/es/image/src/group.js +130 -127
  43. package/es/image/src/image.js +243 -240
  44. package/es/image/src/preview.js +627 -624
  45. package/es/index.esm.js +2 -0
  46. package/es/index.js +2 -0
  47. package/es/input/src/input.js +2700 -2697
  48. package/es/layout-aside/src/layout-aside.js +138 -135
  49. package/es/layout-body/src/layout-body.js +145 -142
  50. package/es/layout-container/src/layout-container.js +71 -68
  51. package/es/layout-footer/src/layout-footer.js +60 -57
  52. package/es/layout-header/src/layout-header.js +58 -55
  53. package/es/link/src/link.js +131 -128
  54. package/es/list/src/list.js +2174 -2171
  55. package/es/loading/src/loading.js +141 -138
  56. package/es/mention/src/mention.js +49 -46
  57. package/es/menu/src/menu.js +799 -796
  58. package/es/modal/src/modal.js +1519 -1527
  59. package/es/notice-bar/src/notice-bar.js +168 -165
  60. package/es/number-input/src/number-input.js +1094 -1091
  61. package/es/pager/src/pager.js +767 -764
  62. package/es/password-input/src/password-input.js +431 -428
  63. package/es/print/src/page-break.js +63 -60
  64. package/es/print/src/print.js +303 -300
  65. package/es/pulldown/src/pulldown.js +403 -400
  66. package/es/radio/src/button.js +214 -211
  67. package/es/radio/src/group.js +195 -192
  68. package/es/radio/src/radio.js +194 -191
  69. package/es/rate/src/rate.js +164 -161
  70. package/es/result/src/result.js +116 -113
  71. package/es/row/src/col.js +133 -130
  72. package/es/row/src/row.js +111 -108
  73. package/es/scrollbar/src/scrollbar.js +518 -515
  74. package/es/segmented/src/segmented.js +240 -237
  75. package/es/select/src/optgroup.js +44 -41
  76. package/es/select/src/option.js +39 -36
  77. package/es/select/src/select.js +1914 -1896
  78. package/es/slider/src/slider.js +419 -416
  79. package/es/space/src/space.js +190 -187
  80. package/es/splitter/src/splitter-panel.js +146 -143
  81. package/es/splitter/src/splitter.js +917 -914
  82. package/es/step-item/index.d.ts +76 -0
  83. package/es/step-item/index.js +17 -0
  84. package/es/steps/index.d.ts +288 -34
  85. package/es/steps/src/step-info.d.ts +6 -0
  86. package/es/steps/src/step-info.js +20 -0
  87. package/es/steps/src/step-item.d.ts +14 -0
  88. package/es/steps/src/step-item.js +39 -0
  89. package/es/steps/src/steps.d.ts +68 -8
  90. package/es/steps/src/steps.js +299 -47
  91. package/es/steps/src/util.d.ts +7 -0
  92. package/es/steps/src/util.js +44 -0
  93. package/es/steps/style.css +297 -0
  94. package/es/steps/style.mini.css +1 -0
  95. package/es/style.css +307 -1
  96. package/es/style.mini.css +1 -1
  97. package/es/switch/src/switch.js +228 -225
  98. package/es/table-select/src/table-select.js +865 -862
  99. package/es/table-transfer/src/table-transfer.js +61 -58
  100. package/es/tabs/src/tab-pane.js +102 -99
  101. package/es/tabs/src/tabs.js +936 -933
  102. package/es/tag/src/tag.js +163 -160
  103. package/es/text/src/text.js +232 -229
  104. package/es/text-ellipsis/src/text-ellipsis.js +252 -249
  105. package/es/textarea/src/textarea.js +434 -431
  106. package/es/timeline/src/timeline.js +74 -36
  107. package/es/timeline/src/util.js +7 -4
  108. package/es/tip/src/tip.js +117 -114
  109. package/es/tooltip/src/tooltip.js +552 -549
  110. package/es/tour/src/tour.js +49 -46
  111. package/es/transfer/src/transfer.js +95 -92
  112. package/es/tree/src/tree.js +3379 -3376
  113. package/es/tree-select/src/tree-select.js +969 -966
  114. package/es/ui/index.js +8 -2
  115. package/es/ui/src/log.js +1 -1
  116. package/es/upload/src/upload.js +1791 -1788
  117. package/es/vxe-icon/style.css +1 -1
  118. package/es/vxe-icon/style.mini.css +1 -1
  119. package/es/vxe-steps/style.css +297 -0
  120. package/es/vxe-steps/style.mini.css +1 -0
  121. package/es/watermark/src/watermark.js +158 -155
  122. package/lib/alert/src/alert.js +117 -114
  123. package/lib/anchor/src/anchor-link.js +110 -107
  124. package/lib/anchor/src/anchor.js +212 -209
  125. package/lib/avatar/src/avatar.js +132 -129
  126. package/lib/backtop/src/backtop.js +267 -264
  127. package/lib/badge/src/badge.js +102 -99
  128. package/lib/breadcrumb/src/breadcrumb-item.js +104 -101
  129. package/lib/breadcrumb/src/breadcrumb.js +70 -67
  130. package/lib/button/src/button-group.js +88 -85
  131. package/lib/calendar/src/calendar.js +1371 -1368
  132. package/lib/card/src/card.js +235 -232
  133. package/lib/carousel/src/carousel-item.js +78 -75
  134. package/lib/carousel/src/carousel.js +392 -389
  135. package/lib/cascader/src/cascader.js +1665 -1662
  136. package/lib/checkbox/src/button.js +198 -195
  137. package/lib/checkbox/src/checkbox.js +181 -178
  138. package/lib/checkbox/src/group.js +210 -207
  139. package/lib/collapse/src/collapse-pane.js +98 -95
  140. package/lib/collapse/src/collapse.js +340 -337
  141. package/lib/color-picker/src/color-picker.js +1116 -1113
  142. package/lib/components.js +3 -0
  143. package/lib/context-menu/src/context-menu.js +601 -598
  144. package/lib/countdown/src/countdown.js +224 -221
  145. package/lib/date-panel/src/date-panel.js +1905 -1902
  146. package/lib/date-picker/src/date-picker.js +1537 -1534
  147. package/lib/date-range-picker/src/date-range-picker.js +1412 -1409
  148. package/lib/divider/src/divider.js +80 -77
  149. package/lib/drawer/src/drawer.js +778 -775
  150. package/lib/empty/src/empty.js +100 -97
  151. package/lib/form/src/form-group.js +74 -71
  152. package/lib/form/src/form-item.js +76 -73
  153. package/lib/form/src/form.js +789 -786
  154. package/lib/icon/src/icon.js +59 -56
  155. package/lib/icon/style/style.css +1 -1
  156. package/lib/icon/style/style.mini.css +1 -1
  157. package/lib/icon-picker/src/icon-picker.js +719 -716
  158. package/lib/image/src/group.js +130 -127
  159. package/lib/image/src/image.js +243 -240
  160. package/lib/image/src/preview.js +627 -624
  161. package/lib/index.common.js +2 -0
  162. package/lib/index.js +2 -0
  163. package/lib/index.umd.js +47411 -46732
  164. package/lib/index.umd.min.js +3 -3
  165. package/lib/input/src/input.js +2700 -2697
  166. package/lib/layout-aside/src/layout-aside.js +138 -135
  167. package/lib/layout-body/src/layout-body.js +145 -142
  168. package/lib/layout-container/src/layout-container.js +71 -68
  169. package/lib/layout-footer/src/layout-footer.js +60 -57
  170. package/lib/layout-header/src/layout-header.js +58 -55
  171. package/lib/link/src/link.js +131 -128
  172. package/lib/list/src/list.js +2173 -2170
  173. package/lib/loading/src/loading.js +141 -138
  174. package/lib/mention/src/mention.js +49 -46
  175. package/lib/menu/src/menu.js +799 -796
  176. package/lib/modal/src/modal.js +1519 -1527
  177. package/lib/notice-bar/src/notice-bar.js +168 -165
  178. package/lib/number-input/src/number-input.js +1094 -1091
  179. package/lib/pager/src/pager.js +767 -764
  180. package/lib/password-input/src/password-input.js +431 -428
  181. package/lib/print/src/page-break.js +63 -60
  182. package/lib/print/src/print.js +303 -300
  183. package/lib/pulldown/src/pulldown.js +403 -400
  184. package/lib/radio/src/button.js +214 -211
  185. package/lib/radio/src/group.js +195 -192
  186. package/lib/radio/src/radio.js +194 -191
  187. package/lib/rate/src/rate.js +164 -161
  188. package/lib/result/src/result.js +116 -113
  189. package/lib/row/src/col.js +133 -130
  190. package/lib/row/src/row.js +111 -108
  191. package/lib/scrollbar/src/scrollbar.js +518 -515
  192. package/lib/segmented/src/segmented.js +240 -237
  193. package/lib/select/src/optgroup.js +44 -41
  194. package/lib/select/src/option.js +39 -36
  195. package/lib/select/src/select.js +1915 -1897
  196. package/lib/slider/src/slider.js +419 -416
  197. package/lib/space/src/space.js +190 -187
  198. package/lib/splitter/src/splitter-panel.js +146 -143
  199. package/lib/splitter/src/splitter.js +917 -914
  200. package/lib/step-item/index.js +47 -0
  201. package/lib/steps/src/step-info.js +49 -0
  202. package/lib/steps/src/step-item.js +59 -0
  203. package/lib/steps/src/steps.js +298 -46
  204. package/lib/steps/src/util.js +74 -0
  205. package/lib/steps/style/style.css +297 -0
  206. package/lib/steps/style/style.mini.css +1 -0
  207. package/lib/style.css +307 -1
  208. package/lib/style.mini.css +1 -1
  209. package/lib/switch/src/switch.js +228 -225
  210. package/lib/table-select/src/table-select.js +865 -862
  211. package/lib/table-transfer/src/table-transfer.js +61 -58
  212. package/lib/tabs/src/tab-pane.js +102 -99
  213. package/lib/tabs/src/tabs.js +936 -933
  214. package/lib/tag/src/tag.js +163 -160
  215. package/lib/text/src/text.js +232 -229
  216. package/lib/text-ellipsis/src/text-ellipsis.js +252 -249
  217. package/lib/textarea/src/textarea.js +434 -431
  218. package/lib/timeline/src/timeline.js +74 -36
  219. package/lib/timeline/src/util.js +7 -4
  220. package/lib/tip/src/tip.js +117 -114
  221. package/lib/tooltip/src/tooltip.js +552 -549
  222. package/lib/tour/src/tour.js +49 -46
  223. package/lib/transfer/src/transfer.js +95 -92
  224. package/lib/tree/src/tree.js +3379 -3376
  225. package/lib/tree-select/src/tree-select.js +969 -966
  226. package/lib/ui/index.js +8 -2
  227. package/lib/ui/src/log.js +1 -1
  228. package/lib/upload/src/upload.js +1788 -1785
  229. package/lib/vxe-icon/style/style.css +1 -1
  230. package/lib/vxe-icon/style/style.mini.css +1 -1
  231. package/lib/vxe-steps/style/style.css +297 -0
  232. package/lib/vxe-steps/style/style.mini.css +1 -0
  233. package/lib/watermark/src/watermark.js +158 -155
  234. package/package.json +1 -1
  235. package/packages/alert/src/alert.ts +2 -2
  236. package/packages/anchor/src/anchor-link.ts +2 -2
  237. package/packages/anchor/src/anchor.ts +2 -2
  238. package/packages/avatar/src/avatar.ts +2 -2
  239. package/packages/backtop/src/backtop.ts +2 -2
  240. package/packages/badge/src/badge.ts +2 -2
  241. package/packages/breadcrumb/src/breadcrumb-item.ts +2 -2
  242. package/packages/breadcrumb/src/breadcrumb.ts +2 -2
  243. package/packages/button/src/button-group.ts +2 -2
  244. package/packages/calendar/src/calendar.ts +2 -2
  245. package/packages/card/src/card.ts +2 -2
  246. package/packages/carousel/src/carousel-item.ts +2 -2
  247. package/packages/carousel/src/carousel.ts +2 -2
  248. package/packages/cascader/src/cascader.ts +2 -2
  249. package/packages/checkbox/src/button.ts +3 -15
  250. package/packages/checkbox/src/checkbox.ts +2 -2
  251. package/packages/checkbox/src/group.ts +2 -2
  252. package/packages/collapse/src/collapse-pane.ts +2 -2
  253. package/packages/collapse/src/collapse.ts +2 -2
  254. package/packages/color-picker/src/color-picker.ts +2 -2
  255. package/packages/components.ts +3 -0
  256. package/packages/context-menu/src/context-menu.ts +3 -16
  257. package/packages/countdown/src/countdown.ts +2 -2
  258. package/packages/date-panel/src/date-panel.ts +2 -2
  259. package/packages/date-picker/src/date-picker.ts +2 -2
  260. package/packages/date-range-picker/src/date-range-picker.ts +2 -2
  261. package/packages/divider/src/divider.ts +2 -2
  262. package/packages/drawer/src/drawer.ts +2 -2
  263. package/packages/empty/src/empty.ts +2 -2
  264. package/packages/form/src/form-group.ts +2 -2
  265. package/packages/form/src/form-item.ts +2 -2
  266. package/packages/form/src/form.ts +2 -2
  267. package/packages/icon/src/icon.ts +2 -2
  268. package/packages/icon-picker/src/icon-picker.ts +2 -2
  269. package/packages/image/src/group.ts +2 -2
  270. package/packages/image/src/image.ts +2 -2
  271. package/packages/image/src/preview.ts +3 -16
  272. package/packages/index.ts +2 -2
  273. package/packages/input/src/input.ts +2 -2
  274. package/packages/layout-aside/src/layout-aside.ts +2 -2
  275. package/packages/layout-body/src/layout-body.ts +2 -2
  276. package/packages/layout-container/src/layout-container.ts +3 -14
  277. package/packages/layout-footer/src/layout-footer.ts +2 -2
  278. package/packages/layout-header/src/layout-header.ts +2 -2
  279. package/packages/link/src/link.ts +2 -2
  280. package/packages/list/src/list.ts +2 -2
  281. package/packages/loading/src/loading.ts +2 -2
  282. package/packages/mention/src/mention.ts +2 -2
  283. package/packages/menu/src/menu.ts +2 -2
  284. package/packages/modal/src/modal.ts +5 -20
  285. package/packages/notice-bar/src/notice-bar.ts +2 -2
  286. package/packages/number-input/src/number-input.ts +3 -17
  287. package/packages/pager/src/pager.ts +2 -2
  288. package/packages/password-input/src/password-input.ts +2 -2
  289. package/packages/print/src/page-break.ts +2 -2
  290. package/packages/print/src/print.ts +2 -2
  291. package/packages/pulldown/src/pulldown.ts +2 -2
  292. package/packages/radio/src/button.ts +3 -16
  293. package/packages/radio/src/group.ts +3 -17
  294. package/packages/radio/src/radio.ts +2 -2
  295. package/packages/rate/src/rate.ts +2 -2
  296. package/packages/result/src/result.ts +2 -2
  297. package/packages/row/src/col.ts +2 -2
  298. package/packages/row/src/row.ts +2 -2
  299. package/packages/scrollbar/src/scrollbar.ts +3 -4
  300. package/packages/segmented/src/segmented.ts +2 -2
  301. package/packages/select/src/optgroup.ts +2 -2
  302. package/packages/select/src/option.ts +2 -2
  303. package/packages/select/src/select.ts +33 -19
  304. package/packages/slider/src/slider.ts +2 -2
  305. package/packages/space/src/space.ts +2 -2
  306. package/packages/splitter/src/splitter-panel.ts +2 -2
  307. package/packages/splitter/src/splitter.ts +2 -2
  308. package/packages/step-item/index.ts +16 -0
  309. package/packages/steps/src/step-info.ts +18 -0
  310. package/packages/steps/src/step-item.ts +41 -0
  311. package/packages/steps/src/steps.ts +273 -13
  312. package/packages/steps/src/util.ts +44 -0
  313. package/packages/switch/src/switch.ts +2 -2
  314. package/packages/table-select/src/table-select.ts +2 -2
  315. package/packages/table-transfer/src/table-transfer.ts +3 -15
  316. package/packages/tabs/src/tab-pane.ts +2 -2
  317. package/packages/tabs/src/tabs.ts +2 -2
  318. package/packages/tag/src/tag.ts +2 -2
  319. package/packages/text/src/text.ts +2 -2
  320. package/packages/text-ellipsis/src/text-ellipsis.ts +2 -2
  321. package/packages/textarea/src/textarea.ts +2 -2
  322. package/packages/timeline/src/timeline-info.ts +17 -17
  323. package/packages/timeline/src/timeline.ts +93 -49
  324. package/packages/timeline/src/util.ts +44 -41
  325. package/packages/tip/src/tip.ts +2 -2
  326. package/packages/tooltip/src/tooltip.ts +2 -2
  327. package/packages/tour/src/tour.ts +2 -2
  328. package/packages/transfer/src/transfer.ts +2 -2
  329. package/packages/tree/src/tree.ts +2 -2
  330. package/packages/tree-select/src/tree-select.ts +2 -2
  331. package/packages/ui/index.ts +8 -1
  332. package/packages/upload/src/upload.ts +2 -2
  333. package/packages/watermark/src/watermark.ts +2 -2
  334. package/styles/all.scss +1 -0
  335. package/styles/components/step-item.scss +0 -0
  336. package/styles/components/steps.scss +354 -0
  337. package/styles/theme/base.scss +9 -0
  338. package/types/all.d.ts +3 -0
  339. package/types/components/gantt.d.ts +1 -3
  340. package/types/components/select.d.ts +1 -13
  341. package/types/components/step-item.d.ts +72 -0
  342. package/types/components/steps.d.ts +67 -8
  343. package/types/components/table.d.ts +7 -66
  344. package/types/handles/form-design.d.ts +1 -4
  345. package/types/ui/global-config.d.ts +2 -0
  346. package/types/ui/global-icon.d.ts +7 -0
  347. /package/dist/{iconfont.1793330162657.ttf → iconfont.1793359478136.ttf} +0 -0
  348. /package/dist/{iconfont.1793330162657.woff → iconfont.1793359478136.woff} +0 -0
  349. /package/dist/{iconfont.1793330162657.woff2 → iconfont.1793359478136.woff2} +0 -0
  350. /package/es/icon/{iconfont.1793330162657.ttf → iconfont.1793359478136.ttf} +0 -0
  351. /package/es/icon/{iconfont.1793330162657.woff → iconfont.1793359478136.woff} +0 -0
  352. /package/es/icon/{iconfont.1793330162657.woff2 → iconfont.1793359478136.woff2} +0 -0
  353. /package/es/{iconfont.1793330162657.ttf → iconfont.1793359478136.ttf} +0 -0
  354. /package/es/{iconfont.1793330162657.woff → iconfont.1793359478136.woff} +0 -0
  355. /package/es/{iconfont.1793330162657.woff2 → iconfont.1793359478136.woff2} +0 -0
  356. /package/es/vxe-icon/{iconfont.1793330162657.ttf → iconfont.1793359478136.ttf} +0 -0
  357. /package/es/vxe-icon/{iconfont.1793330162657.woff → iconfont.1793359478136.woff} +0 -0
  358. /package/es/vxe-icon/{iconfont.1793330162657.woff2 → iconfont.1793359478136.woff2} +0 -0
  359. /package/lib/icon/style/{iconfont.1793330162657.ttf → iconfont.1793359478136.ttf} +0 -0
  360. /package/lib/icon/style/{iconfont.1793330162657.woff → iconfont.1793359478136.woff} +0 -0
  361. /package/lib/icon/style/{iconfont.1793330162657.woff2 → iconfont.1793359478136.woff2} +0 -0
  362. /package/lib/{iconfont.1793330162657.ttf → iconfont.1793359478136.ttf} +0 -0
  363. /package/lib/{iconfont.1793330162657.woff → iconfont.1793359478136.woff} +0 -0
  364. /package/lib/{iconfont.1793330162657.woff2 → iconfont.1793359478136.woff2} +0 -0
  365. /package/lib/vxe-icon/style/{iconfont.1793330162657.ttf → iconfont.1793359478136.ttf} +0 -0
  366. /package/lib/vxe-icon/style/{iconfont.1793330162657.woff → iconfont.1793359478136.woff} +0 -0
  367. /package/lib/vxe-icon/style/{iconfont.1793330162657.woff2 → iconfont.1793359478136.woff2} +0 -0
@@ -37,1646 +37,1638 @@ const msgQueue = [];
37
37
  const notifyQueue = [];
38
38
  const lockScrollAttrKey = "data-vxe-lock-scroll";
39
39
  const lockScrollCssWidthKey = "--vxe-ui-modal-lock-scroll-view-width";
40
- var modal_default = defineVxeComponent({
41
- name: "VxeModal",
42
- props: {
43
- modelValue: Boolean,
44
- id: String,
45
- type: {
46
- type: String,
47
- default: "modal"
48
- },
49
- loading: {
50
- type: Boolean,
51
- default: null
52
- },
53
- status: String,
54
- iconStatus: String,
55
- className: String,
56
- top: {
57
- type: [Number, String],
58
- default: () => getConfig().modal.top
59
- },
60
- position: [String, Object],
61
- title: String,
62
- duration: {
63
- type: [Number, String],
64
- default: () => getConfig().modal.duration
65
- },
66
- content: [Number, String],
67
- useHtml: {
68
- type: Boolean,
69
- default: () => getConfig().modal.useHtml
70
- },
71
- showCancelButton: {
72
- type: Boolean,
73
- default: null
74
- },
75
- cancelButtonText: {
76
- type: String,
77
- default: () => getConfig().modal.cancelButtonText
78
- },
79
- showConfirmButton: {
80
- type: Boolean,
81
- default: () => getConfig().modal.showConfirmButton
82
- },
83
- confirmButtonText: {
84
- type: String,
85
- default: () => getConfig().modal.confirmButtonText
86
- },
87
- lockView: {
88
- type: Boolean,
89
- default: () => getConfig().modal.lockView
90
- },
91
- lockScroll: Boolean,
92
- mask: {
93
- type: Boolean,
94
- default: () => getConfig().modal.mask
95
- },
96
- maskClosable: {
97
- type: Boolean,
98
- default: () => getConfig().modal.maskClosable
99
- },
100
- escClosable: {
101
- type: Boolean,
102
- default: () => getConfig().modal.escClosable
103
- },
104
- cancelClosable: {
105
- type: Boolean,
106
- default: () => getConfig().modal.cancelClosable
107
- },
108
- confirmClosable: {
109
- type: Boolean,
110
- default: () => getConfig().modal.confirmClosable
111
- },
112
- resize: Boolean,
113
- border: {
114
- type: Boolean,
115
- default: () => getConfig().modal.border
116
- },
117
- showTitleBackground: {
118
- type: Boolean,
119
- default: () => getConfig().modal.showTitleBackground
120
- },
121
- showHeader: {
122
- type: Boolean,
123
- default: () => getConfig().modal.showHeader
124
- },
125
- showFooter: {
126
- type: Boolean,
127
- default: () => getConfig().modal.showFooter
128
- },
129
- preload: Boolean,
130
- showZoom: Boolean,
131
- zoomConfig: Object,
132
- showMaximize: {
133
- type: Boolean,
134
- default: () => handleBooleanDefaultValue(getConfig().modal.showMaximize)
135
- },
136
- showMinimize: {
137
- type: Boolean,
138
- default: () => handleBooleanDefaultValue(getConfig().modal.showMinimize)
139
- },
140
- showClose: {
141
- type: Boolean,
142
- default: () => getConfig().modal.showClose
143
- },
144
- dblclickZoom: {
145
- type: Boolean,
146
- default: () => getConfig().modal.dblclickZoom
147
- },
148
- width: {
149
- type: [Number, String],
150
- default: () => getConfig().modal.width
151
- },
152
- height: {
153
- type: [Number, String],
154
- default: () => getConfig().modal.height
155
- },
156
- minWidth: {
157
- type: [Number, String],
158
- default: () => getConfig().modal.minWidth
159
- },
160
- minHeight: {
161
- type: [Number, String],
162
- default: () => getConfig().modal.minHeight
163
- },
164
- zIndex: Number,
165
- marginSize: {
166
- type: [Number, String],
167
- default: () => getConfig().modal.marginSize
168
- },
169
- fullscreen: {
170
- type: Boolean,
171
- default: () => getConfig().modal.fullscreen
172
- },
173
- draggable: {
174
- type: Boolean,
175
- default: () => getConfig().modal.draggable
176
- },
177
- remember: {
178
- type: Boolean,
179
- default: () => getConfig().modal.remember
180
- },
181
- destroyOnClose: {
182
- type: Boolean,
183
- default: () => getConfig().modal.destroyOnClose
184
- },
185
- showTitleOverflow: {
186
- type: Boolean,
187
- default: () => getConfig().modal.showTitleOverflow
188
- },
189
- transfer: {
190
- type: Boolean,
191
- default: () => getConfig().modal.transfer
192
- },
193
- appendTo: {
194
- type: [String, Function],
195
- default: () => getConfig().modal.appendTo
196
- },
197
- isWithinAppendTo: {
198
- type: Boolean,
199
- default: () => getConfig().modal.isWithinAppendTo
200
- },
201
- storage: {
202
- type: Boolean,
203
- default: () => getConfig().modal.storage
204
- },
205
- storeDriver: {
206
- type: String,
207
- default: () => getConfig().modal.storeDriver
208
- },
209
- storageKey: {
210
- type: String,
211
- default: () => getConfig().modal.storageKey
212
- },
213
- padding: {
214
- type: Boolean,
215
- default: () => getConfig().modal.padding
216
- },
217
- size: {
218
- type: String,
219
- default: () => getConfig().modal.size || getConfig().size
220
- },
221
- beforeHideMethod: Function,
222
- slots: Object,
223
- useScrollbar: {
224
- type: Boolean,
225
- default: () => getDefaultConfig(getConfig().modal.useScrollbar, getConfig().useScrollbar)
226
- },
227
- scrollbarConfig: Object,
228
- /**
229
- * 已废弃
230
- * @deprecated
231
- */
232
- message: [Number, String],
233
- /**
234
- * 已废弃
235
- * @deprecated
236
- */
237
- animat: {
238
- type: Boolean,
239
- default: () => getConfig().modal.animat
240
- }
241
- },
242
- emits: ["update:modelValue", "show", "hide", "before-hide", "close", "confirm", "cancel", "zoom", "resize", "move"],
243
- setup(props, context) {
244
- const { slots, emit } = context;
245
- const xID = XEUtils.uniqueId();
246
- const $xeParentModal = inject("$xeModal", null);
247
- const $xeDrawer = inject("$xeDrawer", null);
248
- const $xeTable = inject("$xeTable", null);
249
- const $xeForm = inject("$xeForm", null);
250
- const { computeSize } = useFns.useSize(props);
251
- const { computeIsVScrollbar } = useFns.useVScrollbar(props);
252
- const reactData = reactive(createReactData());
253
- const internalData = createInternalData();
254
- const refElem = ref();
255
- const refModalBox = ref();
256
- const refHeaderElem = ref();
257
- const refConfirmBtn = ref();
258
- const refCancelBtn = ref();
259
- const refMaps = {
260
- refElem
261
- };
262
- const computeBtnTransfer = computed(() => {
263
- const { transfer } = props;
264
- if (transfer === null) {
265
- const globalTransfer = getConfig().modal.transfer;
266
- if (XEUtils.isBoolean(globalTransfer)) {
267
- return globalTransfer;
268
- }
269
- if ($xeTable || $xeParentModal || $xeDrawer || $xeForm) {
270
- return true;
271
- }
40
+ var modal_default = (
41
+ /* define-vxe-component start */
42
+ defineVxeComponent({
43
+ name: "VxeModal",
44
+ props: {
45
+ modelValue: Boolean,
46
+ id: String,
47
+ type: {
48
+ type: String,
49
+ default: "modal"
50
+ },
51
+ loading: {
52
+ type: Boolean,
53
+ default: null
54
+ },
55
+ status: String,
56
+ iconStatus: String,
57
+ className: String,
58
+ top: {
59
+ type: [Number, String],
60
+ default: () => getConfig().modal.top
61
+ },
62
+ position: [String, Object],
63
+ title: String,
64
+ duration: {
65
+ type: [Number, String],
66
+ default: () => getConfig().modal.duration
67
+ },
68
+ content: [Number, String],
69
+ useHtml: {
70
+ type: Boolean,
71
+ default: () => getConfig().modal.useHtml
72
+ },
73
+ showCancelButton: {
74
+ type: Boolean,
75
+ default: null
76
+ },
77
+ cancelButtonText: {
78
+ type: String,
79
+ default: () => getConfig().modal.cancelButtonText
80
+ },
81
+ showConfirmButton: {
82
+ type: Boolean,
83
+ default: () => getConfig().modal.showConfirmButton
84
+ },
85
+ confirmButtonText: {
86
+ type: String,
87
+ default: () => getConfig().modal.confirmButtonText
88
+ },
89
+ lockView: {
90
+ type: Boolean,
91
+ default: () => getConfig().modal.lockView
92
+ },
93
+ lockScroll: Boolean,
94
+ mask: {
95
+ type: Boolean,
96
+ default: () => getConfig().modal.mask
97
+ },
98
+ maskClosable: {
99
+ type: Boolean,
100
+ default: () => getConfig().modal.maskClosable
101
+ },
102
+ escClosable: {
103
+ type: Boolean,
104
+ default: () => getConfig().modal.escClosable
105
+ },
106
+ cancelClosable: {
107
+ type: Boolean,
108
+ default: () => getConfig().modal.cancelClosable
109
+ },
110
+ confirmClosable: {
111
+ type: Boolean,
112
+ default: () => getConfig().modal.confirmClosable
113
+ },
114
+ resize: Boolean,
115
+ border: {
116
+ type: Boolean,
117
+ default: () => getConfig().modal.border
118
+ },
119
+ showTitleBackground: {
120
+ type: Boolean,
121
+ default: () => getConfig().modal.showTitleBackground
122
+ },
123
+ showHeader: {
124
+ type: Boolean,
125
+ default: () => getConfig().modal.showHeader
126
+ },
127
+ showFooter: {
128
+ type: Boolean,
129
+ default: () => getConfig().modal.showFooter
130
+ },
131
+ preload: Boolean,
132
+ showZoom: Boolean,
133
+ zoomConfig: Object,
134
+ showMaximize: {
135
+ type: Boolean,
136
+ default: () => handleBooleanDefaultValue(getConfig().modal.showMaximize)
137
+ },
138
+ showMinimize: {
139
+ type: Boolean,
140
+ default: () => handleBooleanDefaultValue(getConfig().modal.showMinimize)
141
+ },
142
+ showClose: {
143
+ type: Boolean,
144
+ default: () => getConfig().modal.showClose
145
+ },
146
+ dblclickZoom: {
147
+ type: Boolean,
148
+ default: () => getConfig().modal.dblclickZoom
149
+ },
150
+ width: {
151
+ type: [Number, String],
152
+ default: () => getConfig().modal.width
153
+ },
154
+ height: {
155
+ type: [Number, String],
156
+ default: () => getConfig().modal.height
157
+ },
158
+ minWidth: {
159
+ type: [Number, String],
160
+ default: () => getConfig().modal.minWidth
161
+ },
162
+ minHeight: {
163
+ type: [Number, String],
164
+ default: () => getConfig().modal.minHeight
165
+ },
166
+ zIndex: Number,
167
+ marginSize: {
168
+ type: [Number, String],
169
+ default: () => getConfig().modal.marginSize
170
+ },
171
+ fullscreen: {
172
+ type: Boolean,
173
+ default: () => getConfig().modal.fullscreen
174
+ },
175
+ draggable: {
176
+ type: Boolean,
177
+ default: () => getConfig().modal.draggable
178
+ },
179
+ remember: {
180
+ type: Boolean,
181
+ default: () => getConfig().modal.remember
182
+ },
183
+ destroyOnClose: {
184
+ type: Boolean,
185
+ default: () => getConfig().modal.destroyOnClose
186
+ },
187
+ showTitleOverflow: {
188
+ type: Boolean,
189
+ default: () => getConfig().modal.showTitleOverflow
190
+ },
191
+ transfer: {
192
+ type: Boolean,
193
+ default: () => getConfig().modal.transfer
194
+ },
195
+ appendTo: {
196
+ type: [String, Function],
197
+ default: () => getConfig().modal.appendTo
198
+ },
199
+ isWithinAppendTo: {
200
+ type: Boolean,
201
+ default: () => getConfig().modal.isWithinAppendTo
202
+ },
203
+ storage: {
204
+ type: Boolean,
205
+ default: () => getConfig().modal.storage
206
+ },
207
+ storeDriver: {
208
+ type: String,
209
+ default: () => getConfig().modal.storeDriver
210
+ },
211
+ storageKey: {
212
+ type: String,
213
+ default: () => getConfig().modal.storageKey
214
+ },
215
+ padding: {
216
+ type: Boolean,
217
+ default: () => getConfig().modal.padding
218
+ },
219
+ size: {
220
+ type: String,
221
+ default: () => getConfig().modal.size || getConfig().size
222
+ },
223
+ beforeHideMethod: Function,
224
+ slots: Object,
225
+ useScrollbar: {
226
+ type: Boolean,
227
+ default: () => getDefaultConfig(getConfig().modal.useScrollbar, getConfig().useScrollbar)
228
+ },
229
+ scrollbarConfig: Object,
230
+ /**
231
+ * 已废弃
232
+ * @deprecated
233
+ */
234
+ message: [Number, String],
235
+ /**
236
+ * 已废弃
237
+ * @deprecated
238
+ */
239
+ animat: {
240
+ type: Boolean,
241
+ default: () => getConfig().modal.animat
272
242
  }
273
- return transfer;
274
- });
275
- const computeIsMsg = computed(() => {
276
- const { type } = props;
277
- return type === "message" || type === "notification";
278
- });
279
- const computeIsModal = computed(() => {
280
- return props.type === "modal";
281
- });
282
- const computeIsMinimizeStatus = computed(() => {
283
- return reactData.zoomStatus === "minimize";
284
- });
285
- const computeIsMaximizeStatus = computed(() => {
286
- return reactData.zoomStatus === "maximize";
287
- });
288
- const computeZoomOpts = computed(() => {
289
- return Object.assign({}, getConfig().modal.zoomConfig, props.zoomConfig);
290
- });
291
- const computeScrollbarOpts = computed(() => {
292
- return Object.assign({}, getConfig().modal.scrollbarConfig, props.scrollbarConfig);
293
- });
294
- const computeScrollbarProps = computed(() => {
295
- const scrollbarOpts = computeScrollbarOpts.value;
296
- const { viewClassName, viewInnerClassName } = scrollbarOpts;
297
- return {
298
- width: scrollbarOpts.width,
299
- height: scrollbarOpts.height,
300
- autoHide: scrollbarOpts.autoHide,
301
- visible: scrollbarOpts.visible,
302
- xConfig: scrollbarOpts.xConfig,
303
- yConfig: scrollbarOpts.yConfig,
304
- className: scrollbarOpts.className,
305
- viewAttrs: scrollbarOpts.viewAttrs,
306
- viewClassName: "vxe-modal--scrollbar-content-view" + (viewClassName ? " " + viewClassName : ""),
307
- viewInnerClassName: "vxe-modal--scrollbar-content-inner" + (viewClassName ? " " + viewInnerClassName : "")
243
+ },
244
+ emits: ["update:modelValue", "show", "hide", "before-hide", "close", "confirm", "cancel", "zoom", "resize", "move"],
245
+ setup(props, context) {
246
+ const { slots, emit } = context;
247
+ const xID = XEUtils.uniqueId();
248
+ const $xeParentModal = inject("$xeModal", null);
249
+ const $xeDrawer = inject("$xeDrawer", null);
250
+ const $xeTable = inject("$xeTable", null);
251
+ const $xeForm = inject("$xeForm", null);
252
+ const { computeSize } = useFns.useSize(props);
253
+ const { computeIsVScrollbar } = useFns.useVScrollbar(props);
254
+ const reactData = reactive(createReactData());
255
+ const internalData = createInternalData();
256
+ const refElem = ref();
257
+ const refModalBox = ref();
258
+ const refHeaderElem = ref();
259
+ const refConfirmBtn = ref();
260
+ const refCancelBtn = ref();
261
+ const refMaps = {
262
+ refElem
308
263
  };
309
- });
310
- const computeMaps = {
311
- computeSize,
312
- computeZoomOpts
313
- };
314
- const $xeModal = {
315
- xID,
316
- props,
317
- context,
318
- reactData,
319
- internalData,
320
- getRefMaps: () => refMaps,
321
- getComputeMaps: () => computeMaps
322
- };
323
- const posStoreDB = dbUtils.createStore(props.storageKey, {
324
- driver: props.storeDriver
325
- });
326
- const getBox = () => {
327
- const boxElem = refModalBox.value;
328
- return boxElem;
329
- };
330
- const recalculate = () => {
331
- const { width, height, minWidth, minHeight } = props;
332
- const isMsg = computeIsMsg.value;
333
- const isMinimizeStatus = computeIsMinimizeStatus.value;
334
- const boxElem = getBox();
335
- if (boxElem) {
336
- boxElem.style.width = width ? toCssUnit(width) : "";
337
- boxElem.style.height = height ? toCssUnit(height) : "";
338
- boxElem.style.minWidth = !isMsg && !isMinimizeStatus && minWidth ? isScale(minWidth) ? minWidth : toCssUnit(minWidth) : "";
339
- boxElem.style.minHeight = !isMsg && !isMinimizeStatus && minHeight ? isScale(minHeight) ? minHeight : toCssUnit(minHeight) : "";
340
- }
341
- return nextTick();
342
- };
343
- const updateZindex = () => {
344
- const { zIndex } = props;
345
- const { modalZindex } = reactData;
346
- if (zIndex) {
347
- reactData.modalZindex = zIndex;
348
- } else {
349
- const isMsg = computeIsMsg.value;
350
- if (isMsg) {
351
- if (modalZindex < getSubLastZIndex()) {
352
- reactData.modalZindex = nextSubZIndex();
264
+ const computeBtnTransfer = computed(() => {
265
+ const { transfer } = props;
266
+ if (transfer === null) {
267
+ const globalTransfer = getConfig().modal.transfer;
268
+ if (XEUtils.isBoolean(globalTransfer)) {
269
+ return globalTransfer;
353
270
  }
354
- } else {
355
- if (modalZindex < getLastZIndex()) {
356
- reactData.modalZindex = nextZIndex();
271
+ if ($xeTable || $xeParentModal || $xeDrawer || $xeForm) {
272
+ return true;
357
273
  }
358
274
  }
359
- }
360
- };
361
- const updatePosition = () => {
362
- return nextTick().then(() => {
363
- const { position, isWithinAppendTo } = props;
364
- const el = refElem.value;
365
- const boxElem = getBox();
366
- if (!boxElem) {
367
- return;
368
- }
369
- const parentWrapperEl = getPopupWrapperElement(isWithinAppendTo ? el : document.body);
370
- if (!parentWrapperEl) {
371
- return;
372
- }
373
- const clientVisibleWidth = parentWrapperEl.clientWidth;
374
- const clientVisibleHeight = parentWrapperEl.clientHeight;
375
- const marginSize = XEUtils.toNumber(props.marginSize);
376
- const isPosCenter = position === "center";
377
- const { top, left } = XEUtils.isString(position) ? { top: position, left: position } : Object.assign({}, position);
378
- const topCenter = isPosCenter || top === "center";
379
- const leftCenter = isPosCenter || left === "center";
380
- let posTop = "";
381
- let posLeft = "";
382
- if (left && !leftCenter) {
383
- posLeft = toCssUnit(left);
384
- } else {
385
- posLeft = `${Math.max(marginSize, clientVisibleWidth / 2 - boxElem.offsetWidth / 2)}px`;
386
- }
387
- if (top && !topCenter) {
388
- posTop = toCssUnit(top);
389
- } else {
390
- posTop = `${Math.max(marginSize, clientVisibleHeight / 2 - boxElem.offsetHeight / 2)}px`;
391
- }
392
- boxElem.style.top = posTop;
393
- boxElem.style.left = posLeft;
275
+ return transfer;
394
276
  });
395
- };
396
- const updateStyle = () => {
397
- nextTick(() => {
277
+ const computeIsMsg = computed(() => {
398
278
  const { type } = props;
399
- const queueList = type === "notification" ? notifyQueue : msgQueue;
400
- let offsetTop = 0;
401
- queueList.forEach((comp) => {
402
- const boxElem = comp.getBox();
403
- if (boxElem) {
404
- offsetTop += XEUtils.toNumber(comp.props.top);
405
- comp.reactData.modalTop = offsetTop;
406
- offsetTop += boxElem.clientHeight;
407
- }
408
- });
279
+ return type === "message" || type === "notification";
409
280
  });
410
- };
411
- const removeActiveQueue = () => {
412
- if (allActiveModals.indexOf($xeModal) > -1) {
413
- XEUtils.remove(allActiveModals, (item) => item === $xeModal);
414
- }
415
- };
416
- const removeMsgQueue = () => {
417
- const { type } = props;
418
- const queueList = type === "notification" ? notifyQueue : msgQueue;
419
- if (queueList.indexOf($xeModal) > -1) {
420
- XEUtils.remove(queueList, (comp) => comp === $xeModal);
421
- }
422
- updateStyle();
423
- };
424
- const closeModal = (type) => {
425
- const { remember } = props;
426
- const { visible } = reactData;
427
- const isMsg = computeIsMsg.value;
428
- const beforeHideFn = props.beforeHideMethod || getConfig().modal.beforeHideMethod;
429
- const params = { type };
430
- if (visible) {
431
- Promise.resolve(beforeHideFn ? beforeHideFn(params) : null).then((rest) => {
432
- if (!XEUtils.isError(rest)) {
433
- const el = refElem.value;
434
- if (el) {
435
- el.setAttribute("data-effect", "y");
436
- }
437
- if (isMsg) {
438
- removeMsgQueue();
281
+ const computeIsModal = computed(() => {
282
+ return props.type === "modal";
283
+ });
284
+ const computeIsMinimizeStatus = computed(() => {
285
+ return reactData.zoomStatus === "minimize";
286
+ });
287
+ const computeIsMaximizeStatus = computed(() => {
288
+ return reactData.zoomStatus === "maximize";
289
+ });
290
+ const computeZoomOpts = computed(() => {
291
+ return Object.assign({}, getConfig().modal.zoomConfig, props.zoomConfig);
292
+ });
293
+ const computeScrollbarOpts = computed(() => {
294
+ return Object.assign({}, getConfig().modal.scrollbarConfig, props.scrollbarConfig);
295
+ });
296
+ const computeScrollbarProps = computed(() => {
297
+ const scrollbarOpts = computeScrollbarOpts.value;
298
+ const { viewClassName, viewInnerClassName } = scrollbarOpts;
299
+ return {
300
+ width: scrollbarOpts.width,
301
+ height: scrollbarOpts.height,
302
+ autoHide: scrollbarOpts.autoHide,
303
+ visible: scrollbarOpts.visible,
304
+ xConfig: scrollbarOpts.xConfig,
305
+ yConfig: scrollbarOpts.yConfig,
306
+ className: scrollbarOpts.className,
307
+ viewAttrs: scrollbarOpts.viewAttrs,
308
+ viewClassName: "vxe-modal--scrollbar-content-view" + (viewClassName ? " " + viewClassName : ""),
309
+ viewInnerClassName: "vxe-modal--scrollbar-content-inner" + (viewClassName ? " " + viewInnerClassName : "")
310
+ };
311
+ });
312
+ const computeMaps = {
313
+ computeSize,
314
+ computeZoomOpts
315
+ };
316
+ const $xeModal = {
317
+ xID,
318
+ props,
319
+ context,
320
+ reactData,
321
+ internalData,
322
+ getRefMaps: () => refMaps,
323
+ getComputeMaps: () => computeMaps
324
+ };
325
+ const posStoreDB = dbUtils.createStore(props.storageKey, {
326
+ driver: props.storeDriver
327
+ });
328
+ const getBox = () => {
329
+ const boxElem = refModalBox.value;
330
+ return boxElem;
331
+ };
332
+ const recalculate = () => {
333
+ const { width, height, minWidth, minHeight } = props;
334
+ const isMsg = computeIsMsg.value;
335
+ const isMinimizeStatus = computeIsMinimizeStatus.value;
336
+ const boxElem = getBox();
337
+ if (boxElem) {
338
+ boxElem.style.width = width ? toCssUnit(width) : "";
339
+ boxElem.style.height = height ? toCssUnit(height) : "";
340
+ boxElem.style.minWidth = !isMsg && !isMinimizeStatus && minWidth ? isScale(minWidth) ? minWidth : toCssUnit(minWidth) : "";
341
+ boxElem.style.minHeight = !isMsg && !isMinimizeStatus && minHeight ? isScale(minHeight) ? minHeight : toCssUnit(minHeight) : "";
342
+ }
343
+ return nextTick();
344
+ };
345
+ const updateZindex = () => {
346
+ const { zIndex } = props;
347
+ const { modalZindex } = reactData;
348
+ if (zIndex) {
349
+ reactData.modalZindex = zIndex;
350
+ } else {
351
+ const isMsg = computeIsMsg.value;
352
+ if (isMsg) {
353
+ if (modalZindex < getSubLastZIndex()) {
354
+ reactData.modalZindex = nextSubZIndex();
439
355
  }
440
- reactData.contentVisible = false;
441
- if (!remember) {
442
- handleRevert();
356
+ } else {
357
+ if (modalZindex < getLastZIndex()) {
358
+ reactData.modalZindex = nextZIndex();
443
359
  }
444
- removeActiveQueue();
445
- dispatchEvent("before-hide", params, null);
446
- setTimeout(() => {
447
- reactData.visible = false;
448
- emitModel(false);
449
- dispatchEvent("hide", params, null);
450
- }, 200);
451
- removeBodyLockScroll();
452
- setTimeout(() => {
453
- const el2 = refElem.value;
454
- if (el2) {
455
- el2.removeAttribute("data-effect");
456
- }
457
- }, 350);
458
360
  }
459
- }).catch((e) => e);
460
- }
461
- return nextTick();
462
- };
463
- const closeEvent = (evnt) => {
464
- const type = "close";
465
- dispatchEvent(type, { type }, evnt);
466
- closeModal(type);
467
- };
468
- const confirmEvent = (evnt) => {
469
- const { confirmClosable } = props;
470
- const type = "confirm";
471
- dispatchEvent(type, { type }, evnt);
472
- if (confirmClosable) {
473
- closeModal(type);
474
- }
475
- };
476
- const cancelEvent = (evnt) => {
477
- const { cancelClosable } = props;
478
- const type = "cancel";
479
- dispatchEvent(type, { type }, evnt);
480
- if (cancelClosable) {
481
- closeModal(type);
482
- }
483
- };
484
- const getStorageMap = (key, id) => {
485
- return posStoreDB.getById(id).then((dbRest) => dbRest ? dbRest.data : "");
486
- };
487
- const saveStorageMap = (id, posStorage) => {
488
- return posStoreDB.updateById(id, posStorage);
489
- };
490
- const restorePosStorage = (posStorage) => {
491
- if (posStorage) {
492
- const boxElem = getBox();
493
- const [left, top, width, height, zoomLeft, zoomTop, zoomWidth, zoomHeight] = posStorage.split(",");
494
- if (boxElem) {
495
- if (left) {
496
- boxElem.style.left = `${left}px`;
361
+ }
362
+ };
363
+ const updatePosition = () => {
364
+ return nextTick().then(() => {
365
+ const { position, isWithinAppendTo } = props;
366
+ const el = refElem.value;
367
+ const boxElem = getBox();
368
+ if (!boxElem) {
369
+ return;
497
370
  }
498
- if (top) {
499
- boxElem.style.top = `${top}px`;
371
+ const parentWrapperEl = getPopupWrapperElement(isWithinAppendTo ? el : document.body);
372
+ if (!parentWrapperEl) {
373
+ return;
500
374
  }
501
- if (width) {
502
- boxElem.style.width = `${width}px`;
375
+ const clientVisibleWidth = parentWrapperEl.clientWidth;
376
+ const clientVisibleHeight = parentWrapperEl.clientHeight;
377
+ const marginSize = XEUtils.toNumber(props.marginSize);
378
+ const isPosCenter = position === "center";
379
+ const { top, left } = XEUtils.isString(position) ? { top: position, left: position } : Object.assign({}, position);
380
+ const topCenter = isPosCenter || top === "center";
381
+ const leftCenter = isPosCenter || left === "center";
382
+ let posTop = "";
383
+ let posLeft = "";
384
+ if (left && !leftCenter) {
385
+ posLeft = toCssUnit(left);
386
+ } else {
387
+ posLeft = `${Math.max(marginSize, clientVisibleWidth / 2 - boxElem.offsetWidth / 2)}px`;
503
388
  }
504
- if (height) {
505
- boxElem.style.height = `${height}px`;
389
+ if (top && !topCenter) {
390
+ posTop = toCssUnit(top);
391
+ } else {
392
+ posTop = `${Math.max(marginSize, clientVisibleHeight / 2 - boxElem.offsetHeight / 2)}px`;
506
393
  }
394
+ boxElem.style.top = posTop;
395
+ boxElem.style.left = posLeft;
396
+ });
397
+ };
398
+ const updateStyle = () => {
399
+ nextTick(() => {
400
+ const { type } = props;
401
+ const queueList = type === "notification" ? notifyQueue : msgQueue;
402
+ let offsetTop = 0;
403
+ queueList.forEach((comp) => {
404
+ const boxElem = comp.getBox();
405
+ if (boxElem) {
406
+ offsetTop += XEUtils.toNumber(comp.props.top);
407
+ comp.reactData.modalTop = offsetTop;
408
+ offsetTop += boxElem.clientHeight;
409
+ }
410
+ });
411
+ });
412
+ };
413
+ const removeActiveQueue = () => {
414
+ if (allActiveModals.indexOf($xeModal) > -1) {
415
+ XEUtils.remove(allActiveModals, (item) => item === $xeModal);
507
416
  }
508
- if (zoomLeft && zoomTop) {
509
- reactData.revertLocat = {
510
- left: XEUtils.toNumber(zoomLeft),
511
- top: XEUtils.toNumber(zoomTop),
512
- width: XEUtils.toNumber(zoomWidth),
513
- height: XEUtils.toNumber(zoomHeight)
514
- };
417
+ };
418
+ const removeMsgQueue = () => {
419
+ const { type } = props;
420
+ const queueList = type === "notification" ? notifyQueue : msgQueue;
421
+ if (queueList.indexOf($xeModal) > -1) {
422
+ XEUtils.remove(queueList, (comp) => comp === $xeModal);
515
423
  }
516
- }
517
- };
518
- const addMsgQueue = () => {
519
- const { type } = props;
520
- const queueList = type === "notification" ? notifyQueue : msgQueue;
521
- if (queueList.indexOf($xeModal) === -1) {
522
- queueList.push($xeModal);
523
- }
524
- updateStyle();
525
- };
526
- const savePosStorage = () => {
527
- const { id, storage } = props;
528
- const { zoomStatus, revertLocat } = reactData;
529
- if (zoomStatus) {
530
- return;
531
- }
532
- if (id && storage) {
533
- const boxElem = getBox();
534
- if (!boxElem) {
535
- return;
424
+ updateStyle();
425
+ };
426
+ const closeModal = (type) => {
427
+ const { remember } = props;
428
+ const { visible } = reactData;
429
+ const isMsg = computeIsMsg.value;
430
+ const beforeHideFn = props.beforeHideMethod || getConfig().modal.beforeHideMethod;
431
+ const params = { type };
432
+ if (visible) {
433
+ Promise.resolve(beforeHideFn ? beforeHideFn(params) : null).then((rest) => {
434
+ if (!XEUtils.isError(rest)) {
435
+ const el = refElem.value;
436
+ if (el) {
437
+ el.setAttribute("data-effect", "y");
438
+ }
439
+ if (isMsg) {
440
+ removeMsgQueue();
441
+ }
442
+ reactData.contentVisible = false;
443
+ if (!remember) {
444
+ handleRevert();
445
+ }
446
+ removeActiveQueue();
447
+ dispatchEvent("before-hide", params, null);
448
+ setTimeout(() => {
449
+ reactData.visible = false;
450
+ emitModel(false);
451
+ dispatchEvent("hide", params, null);
452
+ }, 200);
453
+ removeBodyLockScroll();
454
+ setTimeout(() => {
455
+ const el2 = refElem.value;
456
+ if (el2) {
457
+ el2.removeAttribute("data-effect");
458
+ }
459
+ }, 350);
460
+ }
461
+ }).catch((e) => e);
536
462
  }
537
- const posStorage = [
538
- boxElem.style.left,
539
- boxElem.style.top,
540
- boxElem.clientWidth,
541
- boxElem.clientHeight,
542
- ...revertLocat ? [
543
- revertLocat.left,
544
- revertLocat.top,
545
- revertLocat.width,
546
- revertLocat.height
547
- ] : []
548
- ].map((val) => val ? XEUtils.toNumber(val) : "").join(",");
549
- saveStorageMap(id, posStorage);
550
- }
551
- };
552
- const handleMinimize = () => {
553
- const { isWithinAppendTo } = props;
554
- const zoomOpts = computeZoomOpts.value;
555
- const { minimizeLayout, minimizeMaxSize, minimizeHorizontalOffset, minimizeVerticalOffset, minimizeOffsetMethod } = zoomOpts;
556
- const isHorizontalLayout = minimizeLayout === "horizontal";
557
- const prevZoomStatus = reactData.zoomStatus;
558
- const hlMList = [];
559
- const vlMList = [];
560
- allActiveModals.forEach((item) => {
561
- if (item.xID !== $xeModal.xID && item.props.type === "modal" && item.reactData.zoomStatus === "minimize") {
562
- const itemZoomOpts = item.getComputeMaps().computeZoomOpts.value;
563
- if (itemZoomOpts.minimizeLayout === "horizontal") {
564
- hlMList.push(item);
565
- } else {
566
- vlMList.push(item);
567
- }
463
+ return nextTick();
464
+ };
465
+ const closeEvent = (evnt) => {
466
+ const type = "close";
467
+ dispatchEvent(type, { type }, evnt);
468
+ closeModal(type);
469
+ };
470
+ const confirmEvent = (evnt) => {
471
+ const { confirmClosable } = props;
472
+ const type = "confirm";
473
+ dispatchEvent(type, { type }, evnt);
474
+ if (confirmClosable) {
475
+ closeModal(type);
568
476
  }
569
- });
570
- const mList = isHorizontalLayout ? hlMList : vlMList;
571
- if (minimizeMaxSize && mList.length >= minimizeMaxSize) {
572
- if (VxeUI.modal) {
573
- VxeUI.modal.message({
574
- status: "error",
575
- content: getI18n("vxe.modal.miniMaxSize", [minimizeMaxSize])
576
- });
477
+ };
478
+ const cancelEvent = (evnt) => {
479
+ const { cancelClosable } = props;
480
+ const type = "cancel";
481
+ dispatchEvent(type, { type }, evnt);
482
+ if (cancelClosable) {
483
+ closeModal(type);
577
484
  }
578
- return Promise.resolve({
579
- status: false
580
- });
581
- }
582
- reactData.prevZoomStatus = prevZoomStatus;
583
- reactData.zoomStatus = "minimize";
584
- return nextTick().then(() => {
585
- const el = refElem.value;
586
- const boxElem = getBox();
587
- if (!boxElem) {
588
- return {
589
- status: false
590
- };
485
+ };
486
+ const getStorageMap = (key, id) => {
487
+ return posStoreDB.getById(id).then((dbRest) => dbRest ? dbRest.data : "");
488
+ };
489
+ const saveStorageMap = (id, posStorage) => {
490
+ return posStoreDB.updateById(id, posStorage);
491
+ };
492
+ const restorePosStorage = (posStorage) => {
493
+ if (posStorage) {
494
+ const boxElem = getBox();
495
+ const [left, top, width, height, zoomLeft, zoomTop, zoomWidth, zoomHeight] = posStorage.split(",");
496
+ if (boxElem) {
497
+ if (left) {
498
+ boxElem.style.left = `${left}px`;
499
+ }
500
+ if (top) {
501
+ boxElem.style.top = `${top}px`;
502
+ }
503
+ if (width) {
504
+ boxElem.style.width = `${width}px`;
505
+ }
506
+ if (height) {
507
+ boxElem.style.height = `${height}px`;
508
+ }
509
+ }
510
+ if (zoomLeft && zoomTop) {
511
+ reactData.revertLocat = {
512
+ left: XEUtils.toNumber(zoomLeft),
513
+ top: XEUtils.toNumber(zoomTop),
514
+ width: XEUtils.toNumber(zoomWidth),
515
+ height: XEUtils.toNumber(zoomHeight)
516
+ };
517
+ }
591
518
  }
592
- const headerEl = refHeaderElem.value;
593
- if (!headerEl) {
594
- return {
595
- status: false
596
- };
519
+ };
520
+ const addMsgQueue = () => {
521
+ const { type } = props;
522
+ const queueList = type === "notification" ? notifyQueue : msgQueue;
523
+ if (queueList.indexOf($xeModal) === -1) {
524
+ queueList.push($xeModal);
597
525
  }
598
- const parentWrapperEl = getPopupWrapperElement(isWithinAppendTo ? el : document.body);
599
- if (!parentWrapperEl) {
600
- return {
601
- status: false
602
- };
526
+ updateStyle();
527
+ };
528
+ const savePosStorage = () => {
529
+ const { id, storage } = props;
530
+ const { zoomStatus, revertLocat } = reactData;
531
+ if (zoomStatus) {
532
+ return;
603
533
  }
604
- const visibleHeight = parentWrapperEl.clientHeight;
605
- if (!prevZoomStatus) {
606
- reactData.revertLocat = {
607
- top: boxElem.offsetTop,
608
- left: boxElem.offsetLeft,
609
- width: boxElem.offsetWidth + (boxElem.style.width ? 0 : 1),
610
- height: boxElem.offsetHeight + (boxElem.style.height ? 0 : 1)
611
- };
534
+ if (id && storage) {
535
+ const boxElem = getBox();
536
+ if (!boxElem) {
537
+ return;
538
+ }
539
+ const posStorage = [boxElem.style.left, boxElem.style.top, boxElem.clientWidth, boxElem.clientHeight, ...revertLocat ? [revertLocat.left, revertLocat.top, revertLocat.width, revertLocat.height] : []].map((val) => val ? XEUtils.toNumber(val) : "").join(",");
540
+ saveStorageMap(id, posStorage);
612
541
  }
613
- const targetModal = XEUtils[isHorizontalLayout ? "max" : "min"](mList, ($modal) => {
614
- const boxElem2 = $modal.getBox();
615
- return boxElem2 ? XEUtils.toNumber(boxElem2.style[isHorizontalLayout ? "left" : "top"]) : 0;
616
- });
617
- let targetTop = visibleHeight - headerEl.offsetHeight - 16;
618
- let targetLeft = 16;
619
- if (targetModal) {
620
- const minBoxElem = targetModal.getBox();
621
- if (minBoxElem) {
622
- const boxLeft = XEUtils.toNumber(minBoxElem.style.left);
623
- const boxTop = XEUtils.toNumber(minBoxElem.style.top);
624
- let offsetObj = {};
625
- if (isHorizontalLayout) {
626
- offsetObj = Object.assign({}, minimizeHorizontalOffset);
542
+ };
543
+ const handleMinimize = () => {
544
+ const { isWithinAppendTo } = props;
545
+ const zoomOpts = computeZoomOpts.value;
546
+ const { minimizeLayout, minimizeMaxSize, minimizeHorizontalOffset, minimizeVerticalOffset, minimizeOffsetMethod } = zoomOpts;
547
+ const isHorizontalLayout = minimizeLayout === "horizontal";
548
+ const prevZoomStatus = reactData.zoomStatus;
549
+ const hlMList = [];
550
+ const vlMList = [];
551
+ allActiveModals.forEach((item) => {
552
+ if (item.xID !== $xeModal.xID && item.props.type === "modal" && item.reactData.zoomStatus === "minimize") {
553
+ const itemZoomOpts = item.getComputeMaps().computeZoomOpts.value;
554
+ if (itemZoomOpts.minimizeLayout === "horizontal") {
555
+ hlMList.push(item);
627
556
  } else {
628
- offsetObj = Object.assign({}, minimizeVerticalOffset);
629
- }
630
- targetLeft = boxLeft + XEUtils.toNumber(offsetObj.left);
631
- targetTop = boxTop + XEUtils.toNumber(offsetObj.top);
632
- if (minimizeOffsetMethod) {
633
- offsetObj = minimizeOffsetMethod({
634
- $modal: $xeModal,
635
- left: targetLeft,
636
- top: targetTop
637
- });
638
- targetLeft = XEUtils.toNumber(offsetObj.left);
639
- targetTop = XEUtils.toNumber(offsetObj.top);
557
+ vlMList.push(item);
640
558
  }
641
559
  }
642
- }
643
- Object.assign(boxElem.style, {
644
- top: `${targetTop}px`,
645
- left: `${targetLeft}px`,
646
- width: "200px",
647
- height: `${headerEl.offsetHeight}px`,
648
- minHeight: "",
649
- minWidth: ""
650
560
  });
651
- savePosStorage();
652
- return {
653
- status: true
654
- };
655
- });
656
- };
657
- const handleMaximize = () => {
658
- const { isWithinAppendTo } = props;
659
- const prevZoomStatus = reactData.zoomStatus;
660
- reactData.prevZoomStatus = prevZoomStatus;
661
- reactData.zoomStatus = "maximize";
662
- return nextTick().then(() => {
663
- const boxElem = getBox();
664
- if (boxElem) {
561
+ const mList = isHorizontalLayout ? hlMList : vlMList;
562
+ if (minimizeMaxSize && mList.length >= minimizeMaxSize) {
563
+ if (VxeUI.modal) {
564
+ VxeUI.modal.message({
565
+ status: "error",
566
+ content: getI18n("vxe.modal.miniMaxSize", [minimizeMaxSize])
567
+ });
568
+ }
569
+ return Promise.resolve({
570
+ status: false
571
+ });
572
+ }
573
+ reactData.prevZoomStatus = prevZoomStatus;
574
+ reactData.zoomStatus = "minimize";
575
+ return nextTick().then(() => {
576
+ const el = refElem.value;
577
+ const boxElem = getBox();
578
+ if (!boxElem) {
579
+ return {
580
+ status: false
581
+ };
582
+ }
583
+ const headerEl = refHeaderElem.value;
584
+ if (!headerEl) {
585
+ return {
586
+ status: false
587
+ };
588
+ }
589
+ const parentWrapperEl = getPopupWrapperElement(isWithinAppendTo ? el : document.body);
590
+ if (!parentWrapperEl) {
591
+ return {
592
+ status: false
593
+ };
594
+ }
595
+ const visibleHeight = parentWrapperEl.clientHeight;
665
596
  if (!prevZoomStatus) {
666
- const el = refElem.value;
667
- const parentWrapperEl = getPopupWrapperElement(isWithinAppendTo ? el : document.body);
668
- if (!parentWrapperEl) {
669
- return {
670
- status: false
671
- };
672
- }
673
- const clientVisibleWidth = parentWrapperEl.clientWidth;
674
- const clientVisibleHeight = parentWrapperEl.clientHeight;
675
- const marginSize = XEUtils.toNumber(props.marginSize);
676
597
  reactData.revertLocat = {
677
- top: Math.max(marginSize, clientVisibleHeight / 2 - boxElem.offsetHeight / 2),
678
- left: Math.max(marginSize, clientVisibleWidth / 2 - boxElem.offsetWidth / 2),
598
+ top: boxElem.offsetTop,
599
+ left: boxElem.offsetLeft,
679
600
  width: boxElem.offsetWidth + (boxElem.style.width ? 0 : 1),
680
601
  height: boxElem.offsetHeight + (boxElem.style.height ? 0 : 1)
681
602
  };
682
603
  }
604
+ const targetModal = XEUtils[isHorizontalLayout ? "max" : "min"](mList, ($modal) => {
605
+ const boxElem2 = $modal.getBox();
606
+ return boxElem2 ? XEUtils.toNumber(boxElem2.style[isHorizontalLayout ? "left" : "top"]) : 0;
607
+ });
608
+ let targetTop = visibleHeight - headerEl.offsetHeight - 16;
609
+ let targetLeft = 16;
610
+ if (targetModal) {
611
+ const minBoxElem = targetModal.getBox();
612
+ if (minBoxElem) {
613
+ const boxLeft = XEUtils.toNumber(minBoxElem.style.left);
614
+ const boxTop = XEUtils.toNumber(minBoxElem.style.top);
615
+ let offsetObj = {};
616
+ if (isHorizontalLayout) {
617
+ offsetObj = Object.assign({}, minimizeHorizontalOffset);
618
+ } else {
619
+ offsetObj = Object.assign({}, minimizeVerticalOffset);
620
+ }
621
+ targetLeft = boxLeft + XEUtils.toNumber(offsetObj.left);
622
+ targetTop = boxTop + XEUtils.toNumber(offsetObj.top);
623
+ if (minimizeOffsetMethod) {
624
+ offsetObj = minimizeOffsetMethod({
625
+ $modal: $xeModal,
626
+ left: targetLeft,
627
+ top: targetTop
628
+ });
629
+ targetLeft = XEUtils.toNumber(offsetObj.left);
630
+ targetTop = XEUtils.toNumber(offsetObj.top);
631
+ }
632
+ }
633
+ }
683
634
  Object.assign(boxElem.style, {
684
- top: "0",
685
- left: "0",
686
- width: "100%",
687
- height: "100%",
635
+ top: `${targetTop}px`,
636
+ left: `${targetLeft}px`,
637
+ width: "200px",
638
+ height: `${headerEl.offsetHeight}px`,
688
639
  minHeight: "",
689
640
  minWidth: ""
690
641
  });
642
+ savePosStorage();
643
+ return {
644
+ status: true
645
+ };
646
+ });
647
+ };
648
+ const handleMaximize = () => {
649
+ const { isWithinAppendTo } = props;
650
+ const prevZoomStatus = reactData.zoomStatus;
651
+ reactData.prevZoomStatus = prevZoomStatus;
652
+ reactData.zoomStatus = "maximize";
653
+ return nextTick().then(() => {
654
+ const boxElem = getBox();
655
+ if (boxElem) {
656
+ if (!prevZoomStatus) {
657
+ const el = refElem.value;
658
+ const parentWrapperEl = getPopupWrapperElement(isWithinAppendTo ? el : document.body);
659
+ if (!parentWrapperEl) {
660
+ return {
661
+ status: false
662
+ };
663
+ }
664
+ const clientVisibleWidth = parentWrapperEl.clientWidth;
665
+ const clientVisibleHeight = parentWrapperEl.clientHeight;
666
+ const marginSize = XEUtils.toNumber(props.marginSize);
667
+ reactData.revertLocat = {
668
+ top: Math.max(marginSize, clientVisibleHeight / 2 - boxElem.offsetHeight / 2),
669
+ left: Math.max(marginSize, clientVisibleWidth / 2 - boxElem.offsetWidth / 2),
670
+ width: boxElem.offsetWidth + (boxElem.style.width ? 0 : 1),
671
+ height: boxElem.offsetHeight + (boxElem.style.height ? 0 : 1)
672
+ };
673
+ }
674
+ Object.assign(boxElem.style, {
675
+ top: "0",
676
+ left: "0",
677
+ width: "100%",
678
+ height: "100%",
679
+ minHeight: "",
680
+ minWidth: ""
681
+ });
682
+ }
683
+ savePosStorage();
684
+ return {
685
+ status: true
686
+ };
687
+ });
688
+ };
689
+ const handleMsgAutoClose = () => {
690
+ const { duration } = props;
691
+ if (duration !== -1) {
692
+ internalData.msgTimeout = setTimeout(() => closeModal("close"), XEUtils.toNumber(duration));
691
693
  }
692
- savePosStorage();
693
- return {
694
- status: true
695
- };
696
- });
697
- };
698
- const handleMsgAutoClose = () => {
699
- const { duration } = props;
700
- if (duration !== -1) {
701
- internalData.msgTimeout = setTimeout(() => closeModal("close"), XEUtils.toNumber(duration));
702
- }
703
- };
704
- const removeBodyLockScroll = () => {
705
- const htmlElem = document.documentElement;
706
- const lockData = htmlElem.getAttribute(lockScrollAttrKey);
707
- if (lockData) {
708
- const lockList = lockData.split(",").filter((key) => key !== xID);
709
- if (lockList.length) {
710
- htmlElem.setAttribute(lockScrollAttrKey, lockList.join(","));
711
- } else {
712
- htmlElem.removeAttribute(lockScrollAttrKey);
713
- htmlElem.style.removeProperty(lockScrollCssWidthKey);
714
- }
715
- }
716
- };
717
- const addBodyLockScroll = () => {
718
- const { lockScroll } = props;
719
- const isMsg = computeIsMsg.value;
720
- if (lockScroll && !isMsg) {
694
+ };
695
+ const removeBodyLockScroll = () => {
721
696
  const htmlElem = document.documentElement;
722
- const clientWidth = document.body.clientWidth;
723
697
  const lockData = htmlElem.getAttribute(lockScrollAttrKey);
724
- const lockList = lockData ? lockData.split(",") : [];
725
- if (!lockList.includes(xID)) {
726
- lockList.push(xID);
727
- htmlElem.setAttribute(lockScrollAttrKey, lockList.join(","));
698
+ if (lockData) {
699
+ const lockList = lockData.split(",").filter((key) => key !== xID);
700
+ if (lockList.length) {
701
+ htmlElem.setAttribute(lockScrollAttrKey, lockList.join(","));
702
+ } else {
703
+ htmlElem.removeAttribute(lockScrollAttrKey);
704
+ htmlElem.style.removeProperty(lockScrollCssWidthKey);
705
+ }
728
706
  }
729
- htmlElem.style.setProperty(lockScrollCssWidthKey, `${clientWidth}px`);
730
- }
731
- };
732
- const openModal = () => {
733
- const { storageKey, id, remember, showFooter, fullscreen } = props;
734
- const { initialized, visible } = reactData;
735
- const isMsg = computeIsMsg.value;
736
- const isModal = computeIsModal.value;
737
- if (!initialized) {
738
- reactData.initialized = true;
739
- }
740
- if (!visible) {
741
- addBodyLockScroll();
742
- internalData.isMoveStatus = false;
743
- reactData.visible = true;
744
- reactData.contentVisible = false;
745
- updateZindex();
746
- allActiveModals.push($xeModal);
747
- setTimeout(() => {
748
- reactData.contentVisible = true;
749
- nextTick(() => {
750
- if (!(isModal && fullscreen)) {
751
- recalculate();
752
- }
753
- if (showFooter) {
754
- const confirmBtn = refConfirmBtn.value;
755
- const cancelBtn = refCancelBtn.value;
756
- const operBtn = confirmBtn || cancelBtn;
757
- if (operBtn) {
758
- operBtn.focus();
707
+ };
708
+ const addBodyLockScroll = () => {
709
+ const { lockScroll } = props;
710
+ const isMsg = computeIsMsg.value;
711
+ if (lockScroll && !isMsg) {
712
+ const htmlElem = document.documentElement;
713
+ const clientWidth = document.body.clientWidth;
714
+ const lockData = htmlElem.getAttribute(lockScrollAttrKey);
715
+ const lockList = lockData ? lockData.split(",") : [];
716
+ if (!lockList.includes(xID)) {
717
+ lockList.push(xID);
718
+ htmlElem.setAttribute(lockScrollAttrKey, lockList.join(","));
719
+ }
720
+ htmlElem.style.setProperty(lockScrollCssWidthKey, `${clientWidth}px`);
721
+ }
722
+ };
723
+ const openModal = () => {
724
+ const { storageKey, id, remember, showFooter, fullscreen } = props;
725
+ const { initialized, visible } = reactData;
726
+ const isMsg = computeIsMsg.value;
727
+ const isModal = computeIsModal.value;
728
+ if (!initialized) {
729
+ reactData.initialized = true;
730
+ }
731
+ if (!visible) {
732
+ addBodyLockScroll();
733
+ internalData.isMoveStatus = false;
734
+ reactData.visible = true;
735
+ reactData.contentVisible = false;
736
+ updateZindex();
737
+ allActiveModals.push($xeModal);
738
+ setTimeout(() => {
739
+ reactData.contentVisible = true;
740
+ nextTick(() => {
741
+ if (!(isModal && fullscreen)) {
742
+ recalculate();
759
743
  }
760
- }
761
- const type = "";
762
- const params = { type };
763
- emitModel(true);
764
- dispatchEvent("show", params, null);
765
- });
766
- }, 10);
767
- if (isMsg) {
768
- addMsgQueue();
769
- handleMsgAutoClose();
770
- } else {
771
- nextTick(() => {
772
- const { firstOpen } = reactData;
773
- const el = refElem.value;
774
- if (el) {
775
- el.setAttribute("data-effect", "y");
776
- }
777
- if (firstOpen) {
778
- reactData.firstOpen = false;
779
- if (storageKey && id) {
780
- getStorageMap(storageKey, id).then((posStorage) => {
781
- if (posStorage) {
782
- restorePosStorage(posStorage);
783
- } else {
784
- if (isModal && fullscreen) {
785
- nextTick(() => handleMaximize());
744
+ if (showFooter) {
745
+ const confirmBtn = refConfirmBtn.value;
746
+ const cancelBtn = refCancelBtn.value;
747
+ const operBtn = confirmBtn || cancelBtn;
748
+ if (operBtn) {
749
+ operBtn.focus();
750
+ }
751
+ }
752
+ const type = "";
753
+ const params = { type };
754
+ emitModel(true);
755
+ dispatchEvent("show", params, null);
756
+ });
757
+ }, 10);
758
+ if (isMsg) {
759
+ addMsgQueue();
760
+ handleMsgAutoClose();
761
+ } else {
762
+ nextTick(() => {
763
+ const { firstOpen } = reactData;
764
+ const el = refElem.value;
765
+ if (el) {
766
+ el.setAttribute("data-effect", "y");
767
+ }
768
+ if (firstOpen) {
769
+ reactData.firstOpen = false;
770
+ if (storageKey && id) {
771
+ getStorageMap(storageKey, id).then((posStorage) => {
772
+ if (posStorage) {
773
+ restorePosStorage(posStorage);
786
774
  } else {
787
- recalculate();
788
- updatePosition().then(() => {
789
- setTimeout(() => updatePosition(), 20);
790
- });
775
+ if (isModal && fullscreen) {
776
+ nextTick(() => handleMaximize());
777
+ } else {
778
+ recalculate();
779
+ updatePosition().then(() => {
780
+ setTimeout(() => updatePosition(), 20);
781
+ });
782
+ }
791
783
  }
784
+ });
785
+ } else {
786
+ if (isModal && fullscreen) {
787
+ nextTick(() => handleMaximize());
788
+ } else {
789
+ recalculate();
790
+ updatePosition().then(() => {
791
+ setTimeout(() => updatePosition(), 20);
792
+ });
792
793
  }
793
- });
794
+ }
794
795
  } else {
795
- if (isModal && fullscreen) {
796
- nextTick(() => handleMaximize());
797
- } else {
796
+ if (!remember) {
798
797
  recalculate();
799
798
  updatePosition().then(() => {
800
799
  setTimeout(() => updatePosition(), 20);
801
800
  });
802
801
  }
803
802
  }
804
- } else {
805
- if (!remember) {
806
- recalculate();
807
- updatePosition().then(() => {
808
- setTimeout(() => updatePosition(), 20);
809
- });
803
+ });
804
+ setTimeout(() => {
805
+ const el = refElem.value;
806
+ if (el) {
807
+ el.removeAttribute("data-effect");
810
808
  }
811
- }
812
- });
813
- setTimeout(() => {
814
- const el = refElem.value;
815
- if (el) {
816
- el.removeAttribute("data-effect");
817
- }
818
- }, 350);
809
+ }, 350);
810
+ }
811
+ }
812
+ return nextTick();
813
+ };
814
+ const selfClickEvent = (evnt) => {
815
+ const el = refElem.value;
816
+ if (props.maskClosable && evnt.target === el) {
817
+ const type = "mask";
818
+ closeModal(type);
819
+ }
820
+ };
821
+ const selfMouseoverEvent = () => {
822
+ const { msgTimeout } = internalData;
823
+ if (!msgTimeout) {
824
+ return;
819
825
  }
820
- }
821
- return nextTick();
822
- };
823
- const selfClickEvent = (evnt) => {
824
- const el = refElem.value;
825
- if (props.maskClosable && evnt.target === el) {
826
- const type = "mask";
827
- closeModal(type);
828
- }
829
- };
830
- const selfMouseoverEvent = () => {
831
- const { msgTimeout } = internalData;
832
- if (!msgTimeout) {
833
- return;
834
- }
835
- const isMsg = computeIsMsg.value;
836
- if (isMsg) {
837
- clearTimeout(msgTimeout);
838
- internalData.msgTimeout = void 0;
839
- }
840
- };
841
- const selfMouseoutEvent = () => {
842
- const { msgTimeout } = internalData;
843
- if (!msgTimeout) {
844
826
  const isMsg = computeIsMsg.value;
845
827
  if (isMsg) {
846
- handleMsgAutoClose();
828
+ clearTimeout(msgTimeout);
829
+ internalData.msgTimeout = void 0;
847
830
  }
848
- }
849
- };
850
- const handleGlobalKeydownEvent = (evnt) => {
851
- const isEsc = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ESCAPE);
852
- if (isEsc) {
853
- const lastModal = XEUtils.max(
854
- allActiveModals.filter((item) => item.reactData.zoomStatus !== "minimize"),
855
- (item) => item.reactData.modalZindex
856
- );
857
- if (lastModal) {
858
- setTimeout(() => {
859
- if (lastModal === $xeModal && lastModal.props.escClosable) {
860
- const type = "exit";
861
- dispatchEvent("close", { type }, evnt);
862
- closeModal(type);
863
- }
864
- }, 10);
831
+ };
832
+ const selfMouseoutEvent = () => {
833
+ const { msgTimeout } = internalData;
834
+ if (!msgTimeout) {
835
+ const isMsg = computeIsMsg.value;
836
+ if (isMsg) {
837
+ handleMsgAutoClose();
838
+ }
865
839
  }
866
- }
867
- };
868
- const handleGlobalResizeEvent = () => {
869
- if (!internalData.isMoveStatus) {
870
- updatePosition();
871
- }
872
- };
873
- const isMinimized = () => {
874
- return reactData.zoomStatus === "minimize";
875
- };
876
- const isMaximized = () => {
877
- return reactData.zoomStatus === "maximize";
878
- };
879
- const handleRevert = () => {
880
- reactData.prevZoomStatus = reactData.zoomStatus;
881
- reactData.zoomStatus = "";
882
- return nextTick().then(() => {
883
- const { revertLocat } = reactData;
884
- if (revertLocat) {
885
- const boxElem = getBox();
886
- reactData.revertLocat = null;
887
- if (boxElem) {
888
- Object.assign(boxElem.style, {
889
- top: `${revertLocat.top}px`,
890
- left: `${revertLocat.left}px`,
891
- width: `${revertLocat.width}px`,
892
- height: `${revertLocat.height}px`
840
+ };
841
+ const handleGlobalKeydownEvent = (evnt) => {
842
+ const isEsc = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ESCAPE);
843
+ if (isEsc) {
844
+ const lastModal = XEUtils.max(
845
+ allActiveModals.filter((item) => item.reactData.zoomStatus !== "minimize"),
846
+ (item) => item.reactData.modalZindex
847
+ );
848
+ if (lastModal) {
849
+ setTimeout(() => {
850
+ if (lastModal === $xeModal && lastModal.props.escClosable) {
851
+ const type = "exit";
852
+ dispatchEvent("close", { type }, evnt);
853
+ closeModal(type);
854
+ }
855
+ }, 10);
856
+ }
857
+ }
858
+ };
859
+ const handleGlobalResizeEvent = () => {
860
+ if (!internalData.isMoveStatus) {
861
+ updatePosition();
862
+ }
863
+ };
864
+ const isMinimized = () => {
865
+ return reactData.zoomStatus === "minimize";
866
+ };
867
+ const isMaximized = () => {
868
+ return reactData.zoomStatus === "maximize";
869
+ };
870
+ const handleRevert = () => {
871
+ reactData.prevZoomStatus = reactData.zoomStatus;
872
+ reactData.zoomStatus = "";
873
+ return nextTick().then(() => {
874
+ const { revertLocat } = reactData;
875
+ if (revertLocat) {
876
+ const boxElem = getBox();
877
+ reactData.revertLocat = null;
878
+ if (boxElem) {
879
+ Object.assign(boxElem.style, {
880
+ top: `${revertLocat.top}px`,
881
+ left: `${revertLocat.left}px`,
882
+ width: `${revertLocat.width}px`,
883
+ height: `${revertLocat.height}px`
884
+ });
885
+ }
886
+ savePosStorage();
887
+ return nextTick().then(() => {
888
+ return {
889
+ status: true
890
+ };
893
891
  });
894
892
  }
895
- savePosStorage();
896
- return nextTick().then(() => {
893
+ return {
894
+ status: false
895
+ };
896
+ });
897
+ };
898
+ const handleZoom = (type) => {
899
+ const { zoomStatus } = reactData;
900
+ return new Promise((resolve) => {
901
+ if (type) {
902
+ if (type === "maximize") {
903
+ resolve(handleMaximize());
904
+ return;
905
+ }
906
+ if (type === "minimize") {
907
+ resolve(handleMinimize());
908
+ return;
909
+ }
910
+ resolve(handleRevert());
911
+ return;
912
+ }
913
+ resolve(zoomStatus ? handleRevert() : handleMaximize());
914
+ }).then(() => {
915
+ return reactData.zoomStatus || "revert";
916
+ });
917
+ };
918
+ const toggleZoomMinEvent = (evnt) => {
919
+ const { zoomStatus, prevZoomStatus } = reactData;
920
+ return handleZoom(zoomStatus === "minimize" ? prevZoomStatus || "revert" : "minimize").then((type) => {
921
+ const params = { type };
922
+ dispatchEvent("zoom", params, evnt);
923
+ });
924
+ };
925
+ const toggleZoomMaxEvent = (evnt) => {
926
+ return handleZoom().then((type) => {
927
+ const params = { type };
928
+ dispatchEvent("zoom", params, evnt);
929
+ });
930
+ };
931
+ const getPosition = () => {
932
+ const isMsg = computeIsMsg.value;
933
+ if (!isMsg) {
934
+ const boxElem = getBox();
935
+ if (boxElem) {
897
936
  return {
898
- status: true
937
+ top: boxElem.offsetTop,
938
+ left: boxElem.offsetLeft
899
939
  };
900
- });
940
+ }
901
941
  }
902
- return {
903
- status: false
904
- };
905
- });
906
- };
907
- const handleZoom = (type) => {
908
- const { zoomStatus } = reactData;
909
- return new Promise((resolve) => {
910
- if (type) {
911
- if (type === "maximize") {
912
- resolve(handleMaximize());
913
- return;
942
+ return null;
943
+ };
944
+ const setPosition = (top, left) => {
945
+ const isMsg = computeIsMsg.value;
946
+ if (!isMsg) {
947
+ const boxElem = getBox();
948
+ if (boxElem) {
949
+ if (XEUtils.isNumber(top)) {
950
+ boxElem.style.top = `${top}px`;
951
+ }
952
+ if (XEUtils.isNumber(left)) {
953
+ boxElem.style.left = `${left}px`;
954
+ }
914
955
  }
915
- if (type === "minimize") {
916
- resolve(handleMinimize());
956
+ }
957
+ return nextTick();
958
+ };
959
+ const boxMousedownEvent = () => {
960
+ const { modalZindex } = reactData;
961
+ if (allActiveModals.some((comp) => comp.reactData.visible && comp.reactData.modalZindex > modalZindex)) {
962
+ updateZindex();
963
+ }
964
+ };
965
+ const mousedownEvent = (evnt) => {
966
+ const { storage, isWithinAppendTo } = props;
967
+ const { zoomStatus } = reactData;
968
+ const marginSize = XEUtils.toNumber(props.marginSize);
969
+ const boxElem = getBox();
970
+ if (!boxElem) {
971
+ return;
972
+ }
973
+ if (zoomStatus !== "maximize" && evnt.button === 0 && !getEventTargetNode(evnt, boxElem, "trigger--btn").flag) {
974
+ evnt.preventDefault();
975
+ const el = refElem.value;
976
+ const parentWrapperEl = getPopupWrapperElement(isWithinAppendTo ? el : document.body);
977
+ if (!parentWrapperEl) {
917
978
  return;
918
979
  }
919
- resolve(handleRevert());
980
+ const visibleWidth = parentWrapperEl.clientWidth;
981
+ const visibleHeight = parentWrapperEl.clientHeight;
982
+ const disX = evnt.clientX - boxElem.offsetLeft;
983
+ const disY = evnt.clientY - boxElem.offsetTop;
984
+ document.onmousemove = (evnt2) => {
985
+ evnt2.preventDefault();
986
+ const offsetWidth = boxElem.offsetWidth;
987
+ const offsetHeight = boxElem.offsetHeight;
988
+ const minX = marginSize;
989
+ const maxX = visibleWidth - offsetWidth - marginSize - 1;
990
+ const minY = marginSize;
991
+ const maxY = visibleHeight - offsetHeight - marginSize - 1;
992
+ let left = evnt2.clientX - disX;
993
+ let top = evnt2.clientY - disY;
994
+ if (left > maxX) {
995
+ left = maxX;
996
+ }
997
+ if (left < minX) {
998
+ left = minX;
999
+ }
1000
+ if (top > maxY) {
1001
+ top = maxY;
1002
+ }
1003
+ if (top < minY) {
1004
+ top = minY;
1005
+ }
1006
+ boxElem.style.left = `${left}px`;
1007
+ boxElem.style.top = `${top}px`;
1008
+ boxElem.className = boxElem.className.replace(/\s?is--drag/, "") + " is--drag";
1009
+ dispatchEvent("move", { type: "move" }, evnt2);
1010
+ internalData.isMoveStatus = true;
1011
+ reactData.resizeFlag++;
1012
+ };
1013
+ document.onmouseup = () => {
1014
+ document.onmousemove = null;
1015
+ document.onmouseup = null;
1016
+ if (storage) {
1017
+ nextTick(() => {
1018
+ savePosStorage();
1019
+ });
1020
+ }
1021
+ reactData.resizeFlag++;
1022
+ setTimeout(() => {
1023
+ boxElem.className = boxElem.className.replace(/\s?is--drag/, "");
1024
+ }, 50);
1025
+ };
1026
+ }
1027
+ };
1028
+ const dragEvent = (evnt) => {
1029
+ evnt.preventDefault();
1030
+ const { minWidth, minHeight, storage, isWithinAppendTo } = props;
1031
+ const el = refElem.value;
1032
+ const parentWrapperEl = getPopupWrapperElement(isWithinAppendTo ? el : document.body);
1033
+ if (!parentWrapperEl) {
920
1034
  return;
921
1035
  }
922
- resolve(zoomStatus ? handleRevert() : handleMaximize());
923
- }).then(() => {
924
- return reactData.zoomStatus || "revert";
925
- });
926
- };
927
- const toggleZoomMinEvent = (evnt) => {
928
- const { zoomStatus, prevZoomStatus } = reactData;
929
- return handleZoom(zoomStatus === "minimize" ? prevZoomStatus || "revert" : "minimize").then((type) => {
930
- const params = { type };
931
- dispatchEvent("zoom", params, evnt);
932
- });
933
- };
934
- const toggleZoomMaxEvent = (evnt) => {
935
- return handleZoom().then((type) => {
936
- const params = { type };
937
- dispatchEvent("zoom", params, evnt);
938
- });
939
- };
940
- const getPosition = () => {
941
- const isMsg = computeIsMsg.value;
942
- if (!isMsg) {
1036
+ const visibleWidth = parentWrapperEl.clientWidth;
1037
+ const visibleHeight = parentWrapperEl.clientHeight;
1038
+ const marginSize = XEUtils.toNumber(props.marginSize);
1039
+ const targetElem = evnt.target;
1040
+ const type = targetElem.getAttribute("data-type");
1041
+ const dragMinWidth = isScale(minWidth) ? XEUtils.toNumber(minWidth) * visibleWidth / 100 : XEUtils.toNumber(minWidth);
1042
+ const dragMinHeight = isScale(minHeight) ? XEUtils.toNumber(minHeight) * visibleHeight / 100 : XEUtils.toNumber(minHeight);
1043
+ const maxWidth = visibleWidth;
1044
+ const maxHeight = visibleHeight;
943
1045
  const boxElem = getBox();
944
- if (boxElem) {
945
- return {
946
- top: boxElem.offsetTop,
947
- left: boxElem.offsetLeft
948
- };
1046
+ const clientWidth = boxElem.clientWidth;
1047
+ const clientHeight = boxElem.clientHeight;
1048
+ const disX = evnt.clientX;
1049
+ const disY = evnt.clientY;
1050
+ const offsetTop = boxElem.offsetTop;
1051
+ const offsetLeft = boxElem.offsetLeft;
1052
+ const params = { type: "resize" };
1053
+ document.onmousemove = (evnt2) => {
1054
+ evnt2.preventDefault();
1055
+ let dragLeft;
1056
+ let dragTop;
1057
+ let width;
1058
+ let height;
1059
+ switch (type) {
1060
+ case "wl":
1061
+ dragLeft = disX - evnt2.clientX;
1062
+ width = dragLeft + clientWidth;
1063
+ if (offsetLeft - dragLeft > marginSize) {
1064
+ if (width > dragMinWidth) {
1065
+ boxElem.style.width = `${width < maxWidth ? width : maxWidth}px`;
1066
+ boxElem.style.left = `${offsetLeft - dragLeft}px`;
1067
+ }
1068
+ }
1069
+ break;
1070
+ case "swst":
1071
+ dragLeft = disX - evnt2.clientX;
1072
+ dragTop = disY - evnt2.clientY;
1073
+ width = dragLeft + clientWidth;
1074
+ height = dragTop + clientHeight;
1075
+ if (offsetLeft - dragLeft > marginSize) {
1076
+ if (width > dragMinWidth) {
1077
+ boxElem.style.width = `${width < maxWidth ? width : maxWidth}px`;
1078
+ boxElem.style.left = `${offsetLeft - dragLeft}px`;
1079
+ }
1080
+ }
1081
+ if (offsetTop - dragTop > marginSize) {
1082
+ if (height > dragMinHeight) {
1083
+ boxElem.style.height = `${height < maxHeight ? height : maxHeight}px`;
1084
+ boxElem.style.top = `${offsetTop - dragTop}px`;
1085
+ }
1086
+ }
1087
+ break;
1088
+ case "swlb":
1089
+ dragLeft = disX - evnt2.clientX;
1090
+ dragTop = evnt2.clientY - disY;
1091
+ width = dragLeft + clientWidth;
1092
+ height = dragTop + clientHeight;
1093
+ if (offsetLeft - dragLeft > marginSize) {
1094
+ if (width > dragMinWidth) {
1095
+ boxElem.style.width = `${width < maxWidth ? width : maxWidth}px`;
1096
+ boxElem.style.left = `${offsetLeft - dragLeft}px`;
1097
+ }
1098
+ }
1099
+ if (offsetTop + height + marginSize < visibleHeight) {
1100
+ if (height > dragMinHeight) {
1101
+ boxElem.style.height = `${height < maxHeight ? height : maxHeight}px`;
1102
+ }
1103
+ }
1104
+ break;
1105
+ case "st":
1106
+ dragTop = disY - evnt2.clientY;
1107
+ height = clientHeight + dragTop;
1108
+ if (offsetTop - dragTop > marginSize) {
1109
+ if (height > dragMinHeight) {
1110
+ boxElem.style.height = `${height < maxHeight ? height : maxHeight}px`;
1111
+ boxElem.style.top = `${offsetTop - dragTop}px`;
1112
+ }
1113
+ }
1114
+ break;
1115
+ case "wr":
1116
+ dragLeft = evnt2.clientX - disX;
1117
+ width = dragLeft + clientWidth;
1118
+ if (offsetLeft + width + marginSize < visibleWidth) {
1119
+ if (width > dragMinWidth) {
1120
+ boxElem.style.width = `${width < maxWidth ? width : maxWidth}px`;
1121
+ }
1122
+ }
1123
+ break;
1124
+ case "sest":
1125
+ dragLeft = evnt2.clientX - disX;
1126
+ dragTop = disY - evnt2.clientY;
1127
+ width = dragLeft + clientWidth;
1128
+ height = dragTop + clientHeight;
1129
+ if (offsetLeft + width + marginSize < visibleWidth) {
1130
+ if (width > dragMinWidth) {
1131
+ boxElem.style.width = `${width < maxWidth ? width : maxWidth}px`;
1132
+ }
1133
+ }
1134
+ if (offsetTop - dragTop > marginSize) {
1135
+ if (height > dragMinHeight) {
1136
+ boxElem.style.height = `${height < maxHeight ? height : maxHeight}px`;
1137
+ boxElem.style.top = `${offsetTop - dragTop}px`;
1138
+ }
1139
+ }
1140
+ break;
1141
+ case "selb":
1142
+ dragLeft = evnt2.clientX - disX;
1143
+ dragTop = evnt2.clientY - disY;
1144
+ width = dragLeft + clientWidth;
1145
+ height = dragTop + clientHeight;
1146
+ if (offsetLeft + width + marginSize < visibleWidth) {
1147
+ if (width > dragMinWidth) {
1148
+ boxElem.style.width = `${width < maxWidth ? width : maxWidth}px`;
1149
+ }
1150
+ }
1151
+ if (offsetTop + height + marginSize < visibleHeight) {
1152
+ if (height > dragMinHeight) {
1153
+ boxElem.style.height = `${height < maxHeight ? height : maxHeight}px`;
1154
+ }
1155
+ }
1156
+ break;
1157
+ case "sb":
1158
+ dragTop = evnt2.clientY - disY;
1159
+ height = dragTop + clientHeight;
1160
+ if (offsetTop + height + marginSize < visibleHeight) {
1161
+ if (height > dragMinHeight) {
1162
+ boxElem.style.height = `${height < maxHeight ? height : maxHeight}px`;
1163
+ }
1164
+ }
1165
+ break;
1166
+ }
1167
+ boxElem.className = boxElem.className.replace(/\s?is--drag/, "") + " is--drag";
1168
+ if (storage) {
1169
+ savePosStorage();
1170
+ }
1171
+ dispatchEvent("resize", params, evnt2);
1172
+ };
1173
+ document.onmouseup = () => {
1174
+ reactData.revertLocat = null;
1175
+ document.onmousemove = null;
1176
+ document.onmouseup = null;
1177
+ setTimeout(() => {
1178
+ boxElem.className = boxElem.className.replace(/\s?is--drag/, "");
1179
+ }, 50);
1180
+ };
1181
+ };
1182
+ const dispatchEvent = (type, params, evnt) => {
1183
+ emit(type, createEvent(evnt, { $modal: $xeModal }, params));
1184
+ };
1185
+ const emitModel = (value) => {
1186
+ emit("update:modelValue", value);
1187
+ };
1188
+ const modalMethods = {
1189
+ dispatchEvent,
1190
+ open: openModal,
1191
+ close() {
1192
+ return closeModal("close");
1193
+ },
1194
+ getBox,
1195
+ getPosition,
1196
+ setPosition,
1197
+ isMinimized,
1198
+ isMaximized,
1199
+ zoom() {
1200
+ return handleZoom();
1201
+ },
1202
+ minimize() {
1203
+ const { visible } = reactData;
1204
+ const isModal = computeIsModal.value;
1205
+ if (!isModal || !visible) {
1206
+ return Promise.resolve({
1207
+ status: false
1208
+ });
1209
+ }
1210
+ return handleMinimize();
1211
+ },
1212
+ maximize() {
1213
+ const { visible } = reactData;
1214
+ const isModal = computeIsModal.value;
1215
+ if (!isModal || !visible) {
1216
+ return Promise.resolve({
1217
+ status: false
1218
+ });
1219
+ }
1220
+ return handleMaximize();
1221
+ },
1222
+ revert() {
1223
+ const { visible } = reactData;
1224
+ const isModal = computeIsModal.value;
1225
+ if (!isModal || !visible) {
1226
+ return Promise.resolve({
1227
+ status: false
1228
+ });
1229
+ }
1230
+ return handleRevert();
949
1231
  }
950
- }
951
- return null;
952
- };
953
- const setPosition = (top, left) => {
954
- const isMsg = computeIsMsg.value;
955
- if (!isMsg) {
956
- const boxElem = getBox();
957
- if (boxElem) {
958
- if (XEUtils.isNumber(top)) {
959
- boxElem.style.top = `${top}px`;
1232
+ };
1233
+ Object.assign($xeModal, modalMethods);
1234
+ const renderTitles = () => {
1235
+ const { slots: propSlots = {}, showClose, showZoom, showMaximize, showMinimize, title } = props;
1236
+ const { zoomStatus } = reactData;
1237
+ const titleSlot = slots.title || propSlots.title;
1238
+ const cornerSlot = slots.corner || propSlots.corner;
1239
+ const isMinimizeStatus = computeIsMinimizeStatus.value;
1240
+ const isMaximizeStatus = computeIsMaximizeStatus.value;
1241
+ return [
1242
+ h(
1243
+ "div",
1244
+ {
1245
+ class: "vxe-modal--header-title"
1246
+ },
1247
+ titleSlot ? getSlotVNs(
1248
+ titleSlot({
1249
+ $modal: $xeModal,
1250
+ minimized: isMinimizeStatus,
1251
+ maximized: isMaximizeStatus
1252
+ })
1253
+ ) : title ? getFuncText(title) : getI18n("vxe.alert.title")
1254
+ ),
1255
+ h(
1256
+ "div",
1257
+ {
1258
+ class: "vxe-modal--header-right"
1259
+ },
1260
+ [
1261
+ cornerSlot && !isMinimizeStatus ? h(
1262
+ "div",
1263
+ {
1264
+ class: "vxe-modal--corner-wrapper"
1265
+ },
1266
+ getSlotVNs(cornerSlot({ $modal: $xeModal }))
1267
+ ) : renderEmptyElement($xeModal),
1268
+ (XEUtils.isBoolean(showMinimize) ? showMinimize : showZoom) ? h(
1269
+ "div",
1270
+ {
1271
+ class: ["vxe-modal--zoom-btn", "trigger--btn"],
1272
+ title: getI18n(`vxe.modal.zoom${zoomStatus === "minimize" ? "Out" : "Min"}`),
1273
+ onClick: toggleZoomMinEvent
1274
+ },
1275
+ [
1276
+ h("i", {
1277
+ class: zoomStatus === "minimize" ? getIcon().MODAL_ZOOM_REVERT : getIcon().MODAL_ZOOM_MIN
1278
+ })
1279
+ ]
1280
+ ) : renderEmptyElement($xeModal),
1281
+ (XEUtils.isBoolean(showMaximize) ? showMaximize : showZoom) && zoomStatus !== "minimize" ? h(
1282
+ "div",
1283
+ {
1284
+ class: ["vxe-modal--zoom-btn", "trigger--btn"],
1285
+ title: getI18n(`vxe.modal.zoom${zoomStatus === "maximize" ? "Out" : "In"}`),
1286
+ onClick: toggleZoomMaxEvent
1287
+ },
1288
+ [
1289
+ h("i", {
1290
+ class: zoomStatus === "maximize" ? getIcon().MODAL_ZOOM_OUT : getIcon().MODAL_ZOOM_IN
1291
+ })
1292
+ ]
1293
+ ) : renderEmptyElement($xeModal),
1294
+ showClose ? h(
1295
+ "div",
1296
+ {
1297
+ class: ["vxe-modal--close-btn", "trigger--btn"],
1298
+ title: getI18n("vxe.modal.close"),
1299
+ onClick: closeEvent
1300
+ },
1301
+ [
1302
+ h("i", {
1303
+ class: getIcon().MODAL_CLOSE
1304
+ })
1305
+ ]
1306
+ ) : renderEmptyElement($xeModal)
1307
+ ]
1308
+ )
1309
+ ];
1310
+ };
1311
+ const renderHeader = () => {
1312
+ const { slots: propSlots = {}, showZoom, showMaximize, draggable } = props;
1313
+ const headerSlot = slots.header || propSlots.header;
1314
+ if (props.showHeader) {
1315
+ const headerOns = {};
1316
+ if (draggable) {
1317
+ headerOns.onMousedown = mousedownEvent;
960
1318
  }
961
- if (XEUtils.isNumber(left)) {
962
- boxElem.style.left = `${left}px`;
1319
+ if ((XEUtils.isBoolean(showMaximize) ? showMaximize : showZoom) && props.dblclickZoom && props.type === "modal") {
1320
+ headerOns.onDblclick = toggleZoomMaxEvent;
963
1321
  }
1322
+ return h(
1323
+ "div",
1324
+ {
1325
+ ref: refHeaderElem,
1326
+ class: [
1327
+ "vxe-modal--header",
1328
+ {
1329
+ "is--ellipsis": props.showTitleOverflow
1330
+ }
1331
+ ],
1332
+ ...headerOns
1333
+ },
1334
+ headerSlot ? getSlotVNs(headerSlot({ $modal: $xeModal })) : renderTitles()
1335
+ );
964
1336
  }
965
- }
966
- return nextTick();
967
- };
968
- const boxMousedownEvent = () => {
969
- const { modalZindex } = reactData;
970
- if (allActiveModals.some((comp) => comp.reactData.visible && comp.reactData.modalZindex > modalZindex)) {
971
- updateZindex();
972
- }
973
- };
974
- const mousedownEvent = (evnt) => {
975
- const { storage, isWithinAppendTo } = props;
976
- const { zoomStatus } = reactData;
977
- const marginSize = XEUtils.toNumber(props.marginSize);
978
- const boxElem = getBox();
979
- if (!boxElem) {
980
- return;
981
- }
982
- if (zoomStatus !== "maximize" && evnt.button === 0 && !getEventTargetNode(evnt, boxElem, "trigger--btn").flag) {
983
- evnt.preventDefault();
984
- const el = refElem.value;
985
- const parentWrapperEl = getPopupWrapperElement(isWithinAppendTo ? el : document.body);
986
- if (!parentWrapperEl) {
987
- return;
1337
+ return renderEmptyElement($xeModal);
1338
+ };
1339
+ const renderBody = () => {
1340
+ const { slots: propSlots = {}, status, message, iconStatus, useHtml } = props;
1341
+ const content = props.content || message;
1342
+ const isVScrollbar = computeIsVScrollbar.value;
1343
+ const isMsg = computeIsMsg.value;
1344
+ const scrollbarProps = computeScrollbarProps.value;
1345
+ const defaultSlot = slots.default || propSlots.default;
1346
+ const leftSlot = slots.left || propSlots.left;
1347
+ const rightSlot = slots.right || propSlots.right;
1348
+ const contVNs = [];
1349
+ if (!isMsg && (status || iconStatus)) {
1350
+ contVNs.push(
1351
+ h(
1352
+ "div",
1353
+ {
1354
+ class: "vxe-modal--status-wrapper"
1355
+ },
1356
+ [
1357
+ h("i", {
1358
+ class: ["vxe-modal--status-icon", iconStatus || getIcon()[`MODAL_${status}`.toLocaleUpperCase()]]
1359
+ })
1360
+ ]
1361
+ )
1362
+ );
988
1363
  }
989
- const visibleWidth = parentWrapperEl.clientWidth;
990
- const visibleHeight = parentWrapperEl.clientHeight;
991
- const disX = evnt.clientX - boxElem.offsetLeft;
992
- const disY = evnt.clientY - boxElem.offsetTop;
993
- document.onmousemove = (evnt2) => {
994
- evnt2.preventDefault();
995
- const offsetWidth = boxElem.offsetWidth;
996
- const offsetHeight = boxElem.offsetHeight;
997
- const minX = marginSize;
998
- const maxX = visibleWidth - offsetWidth - marginSize - 1;
999
- const minY = marginSize;
1000
- const maxY = visibleHeight - offsetHeight - marginSize - 1;
1001
- let left = evnt2.clientX - disX;
1002
- let top = evnt2.clientY - disY;
1003
- if (left > maxX) {
1004
- left = maxX;
1005
- }
1006
- if (left < minX) {
1007
- left = minX;
1008
- }
1009
- if (top > maxY) {
1010
- top = maxY;
1011
- }
1012
- if (top < minY) {
1013
- top = minY;
1014
- }
1015
- boxElem.style.left = `${left}px`;
1016
- boxElem.style.top = `${top}px`;
1017
- boxElem.className = boxElem.className.replace(/\s?is--drag/, "") + " is--drag";
1018
- dispatchEvent("move", { type: "move" }, evnt2);
1019
- internalData.isMoveStatus = true;
1020
- reactData.resizeFlag++;
1021
- };
1022
- document.onmouseup = () => {
1023
- document.onmousemove = null;
1024
- document.onmouseup = null;
1025
- if (storage) {
1026
- nextTick(() => {
1027
- savePosStorage();
1028
- });
1029
- }
1030
- reactData.resizeFlag++;
1031
- setTimeout(() => {
1032
- boxElem.className = boxElem.className.replace(/\s?is--drag/, "");
1033
- }, 50);
1034
- };
1035
- }
1036
- };
1037
- const dragEvent = (evnt) => {
1038
- evnt.preventDefault();
1039
- const { minWidth, minHeight, storage, isWithinAppendTo } = props;
1040
- const el = refElem.value;
1041
- const parentWrapperEl = getPopupWrapperElement(isWithinAppendTo ? el : document.body);
1042
- if (!parentWrapperEl) {
1043
- return;
1044
- }
1045
- const visibleWidth = parentWrapperEl.clientWidth;
1046
- const visibleHeight = parentWrapperEl.clientHeight;
1047
- const marginSize = XEUtils.toNumber(props.marginSize);
1048
- const targetElem = evnt.target;
1049
- const type = targetElem.getAttribute("data-type");
1050
- const dragMinWidth = isScale(minWidth) ? XEUtils.toNumber(minWidth) * visibleWidth / 100 : XEUtils.toNumber(minWidth);
1051
- const dragMinHeight = isScale(minHeight) ? XEUtils.toNumber(minHeight) * visibleHeight / 100 : XEUtils.toNumber(minHeight);
1052
- const maxWidth = visibleWidth;
1053
- const maxHeight = visibleHeight;
1054
- const boxElem = getBox();
1055
- const clientWidth = boxElem.clientWidth;
1056
- const clientHeight = boxElem.clientHeight;
1057
- const disX = evnt.clientX;
1058
- const disY = evnt.clientY;
1059
- const offsetTop = boxElem.offsetTop;
1060
- const offsetLeft = boxElem.offsetLeft;
1061
- const params = { type: "resize" };
1062
- document.onmousemove = (evnt2) => {
1063
- evnt2.preventDefault();
1064
- let dragLeft;
1065
- let dragTop;
1066
- let width;
1067
- let height;
1068
- switch (type) {
1069
- case "wl":
1070
- dragLeft = disX - evnt2.clientX;
1071
- width = dragLeft + clientWidth;
1072
- if (offsetLeft - dragLeft > marginSize) {
1073
- if (width > dragMinWidth) {
1074
- boxElem.style.width = `${width < maxWidth ? width : maxWidth}px`;
1075
- boxElem.style.left = `${offsetLeft - dragLeft}px`;
1076
- }
1077
- }
1078
- break;
1079
- case "swst":
1080
- dragLeft = disX - evnt2.clientX;
1081
- dragTop = disY - evnt2.clientY;
1082
- width = dragLeft + clientWidth;
1083
- height = dragTop + clientHeight;
1084
- if (offsetLeft - dragLeft > marginSize) {
1085
- if (width > dragMinWidth) {
1086
- boxElem.style.width = `${width < maxWidth ? width : maxWidth}px`;
1087
- boxElem.style.left = `${offsetLeft - dragLeft}px`;
1088
- }
1089
- }
1090
- if (offsetTop - dragTop > marginSize) {
1091
- if (height > dragMinHeight) {
1092
- boxElem.style.height = `${height < maxHeight ? height : maxHeight}px`;
1093
- boxElem.style.top = `${offsetTop - dragTop}px`;
1094
- }
1095
- }
1096
- break;
1097
- case "swlb":
1098
- dragLeft = disX - evnt2.clientX;
1099
- dragTop = evnt2.clientY - disY;
1100
- width = dragLeft + clientWidth;
1101
- height = dragTop + clientHeight;
1102
- if (offsetLeft - dragLeft > marginSize) {
1103
- if (width > dragMinWidth) {
1104
- boxElem.style.width = `${width < maxWidth ? width : maxWidth}px`;
1105
- boxElem.style.left = `${offsetLeft - dragLeft}px`;
1106
- }
1107
- }
1108
- if (offsetTop + height + marginSize < visibleHeight) {
1109
- if (height > dragMinHeight) {
1110
- boxElem.style.height = `${height < maxHeight ? height : maxHeight}px`;
1111
- }
1112
- }
1113
- break;
1114
- case "st":
1115
- dragTop = disY - evnt2.clientY;
1116
- height = clientHeight + dragTop;
1117
- if (offsetTop - dragTop > marginSize) {
1118
- if (height > dragMinHeight) {
1119
- boxElem.style.height = `${height < maxHeight ? height : maxHeight}px`;
1120
- boxElem.style.top = `${offsetTop - dragTop}px`;
1121
- }
1122
- }
1123
- break;
1124
- case "wr":
1125
- dragLeft = evnt2.clientX - disX;
1126
- width = dragLeft + clientWidth;
1127
- if (offsetLeft + width + marginSize < visibleWidth) {
1128
- if (width > dragMinWidth) {
1129
- boxElem.style.width = `${width < maxWidth ? width : maxWidth}px`;
1130
- }
1131
- }
1132
- break;
1133
- case "sest":
1134
- dragLeft = evnt2.clientX - disX;
1135
- dragTop = disY - evnt2.clientY;
1136
- width = dragLeft + clientWidth;
1137
- height = dragTop + clientHeight;
1138
- if (offsetLeft + width + marginSize < visibleWidth) {
1139
- if (width > dragMinWidth) {
1140
- boxElem.style.width = `${width < maxWidth ? width : maxWidth}px`;
1141
- }
1142
- }
1143
- if (offsetTop - dragTop > marginSize) {
1144
- if (height > dragMinHeight) {
1145
- boxElem.style.height = `${height < maxHeight ? height : maxHeight}px`;
1146
- boxElem.style.top = `${offsetTop - dragTop}px`;
1147
- }
1148
- }
1149
- break;
1150
- case "selb":
1151
- dragLeft = evnt2.clientX - disX;
1152
- dragTop = evnt2.clientY - disY;
1153
- width = dragLeft + clientWidth;
1154
- height = dragTop + clientHeight;
1155
- if (offsetLeft + width + marginSize < visibleWidth) {
1156
- if (width > dragMinWidth) {
1157
- boxElem.style.width = `${width < maxWidth ? width : maxWidth}px`;
1158
- }
1159
- }
1160
- if (offsetTop + height + marginSize < visibleHeight) {
1161
- if (height > dragMinHeight) {
1162
- boxElem.style.height = `${height < maxHeight ? height : maxHeight}px`;
1364
+ if (useHtml && !defaultSlot) {
1365
+ contVNs.push(
1366
+ isVScrollbar ? h(
1367
+ VxeScrollbarComponent,
1368
+ {
1369
+ key: "shc",
1370
+ class: "vxe-modal--scrollbar-content",
1371
+ ...scrollbarProps
1372
+ },
1373
+ {
1374
+ default() {
1375
+ return [
1376
+ h("div", {
1377
+ class: "vxe-modal--scrollbar-content-html",
1378
+ innerHTML: getFuncText(content)
1379
+ })
1380
+ ];
1381
+ }
1163
1382
  }
1164
- }
1165
- break;
1166
- case "sb":
1167
- dragTop = evnt2.clientY - disY;
1168
- height = dragTop + clientHeight;
1169
- if (offsetTop + height + marginSize < visibleHeight) {
1170
- if (height > dragMinHeight) {
1171
- boxElem.style.height = `${height < maxHeight ? height : maxHeight}px`;
1383
+ ) : h("div", {
1384
+ key: "hc",
1385
+ class: "vxe-modal--content",
1386
+ innerHTML: getFuncText(content)
1387
+ })
1388
+ );
1389
+ } else {
1390
+ contVNs.push(
1391
+ isVScrollbar ? h(
1392
+ VxeScrollbarComponent,
1393
+ {
1394
+ key: "sdc",
1395
+ class: "vxe-modal--scrollbar-content",
1396
+ ...scrollbarProps
1397
+ },
1398
+ {
1399
+ default: () => defaultSlot ? getSlotVNs(defaultSlot({ $modal: $xeModal })) : getFuncText(content)
1172
1400
  }
1173
- }
1174
- break;
1175
- }
1176
- boxElem.className = boxElem.className.replace(/\s?is--drag/, "") + " is--drag";
1177
- if (storage) {
1178
- savePosStorage();
1179
- }
1180
- dispatchEvent("resize", params, evnt2);
1181
- };
1182
- document.onmouseup = () => {
1183
- reactData.revertLocat = null;
1184
- document.onmousemove = null;
1185
- document.onmouseup = null;
1186
- setTimeout(() => {
1187
- boxElem.className = boxElem.className.replace(/\s?is--drag/, "");
1188
- }, 50);
1189
- };
1190
- };
1191
- const dispatchEvent = (type, params, evnt) => {
1192
- emit(type, createEvent(evnt, { $modal: $xeModal }, params));
1193
- };
1194
- const emitModel = (value) => {
1195
- emit("update:modelValue", value);
1196
- };
1197
- const modalMethods = {
1198
- dispatchEvent,
1199
- open: openModal,
1200
- close() {
1201
- return closeModal("close");
1202
- },
1203
- getBox,
1204
- getPosition,
1205
- setPosition,
1206
- isMinimized,
1207
- isMaximized,
1208
- zoom() {
1209
- return handleZoom();
1210
- },
1211
- minimize() {
1212
- const { visible } = reactData;
1213
- const isModal = computeIsModal.value;
1214
- if (!isModal || !visible) {
1215
- return Promise.resolve({
1216
- status: false
1217
- });
1218
- }
1219
- return handleMinimize();
1220
- },
1221
- maximize() {
1222
- const { visible } = reactData;
1223
- const isModal = computeIsModal.value;
1224
- if (!isModal || !visible) {
1225
- return Promise.resolve({
1226
- status: false
1227
- });
1228
- }
1229
- return handleMaximize();
1230
- },
1231
- revert() {
1232
- const { visible } = reactData;
1233
- const isModal = computeIsModal.value;
1234
- if (!isModal || !visible) {
1235
- return Promise.resolve({
1236
- status: false
1237
- });
1401
+ ) : h(
1402
+ "div",
1403
+ {
1404
+ key: "dc",
1405
+ class: "vxe-modal--content"
1406
+ },
1407
+ defaultSlot ? getSlotVNs(defaultSlot({ $modal: $xeModal })) : getFuncText(content)
1408
+ )
1409
+ );
1238
1410
  }
1239
- return handleRevert();
1240
- }
1241
- };
1242
- Object.assign($xeModal, modalMethods);
1243
- const renderTitles = () => {
1244
- const { slots: propSlots = {}, showClose, showZoom, showMaximize, showMinimize, title } = props;
1245
- const { zoomStatus } = reactData;
1246
- const titleSlot = slots.title || propSlots.title;
1247
- const cornerSlot = slots.corner || propSlots.corner;
1248
- const isMinimizeStatus = computeIsMinimizeStatus.value;
1249
- const isMaximizeStatus = computeIsMaximizeStatus.value;
1250
- return [
1251
- h(
1252
- "div",
1253
- {
1254
- class: "vxe-modal--header-title"
1255
- },
1256
- titleSlot ? getSlotVNs(
1257
- titleSlot({
1258
- $modal: $xeModal,
1259
- minimized: isMinimizeStatus,
1260
- maximized: isMaximizeStatus
1261
- })
1262
- ) : title ? getFuncText(title) : getI18n("vxe.alert.title")
1263
- ),
1264
- h(
1411
+ return h(
1265
1412
  "div",
1266
1413
  {
1267
- class: "vxe-modal--header-right"
1414
+ class: "vxe-modal--body"
1268
1415
  },
1269
1416
  [
1270
- cornerSlot && !isMinimizeStatus ? h(
1417
+ leftSlot ? h(
1271
1418
  "div",
1272
1419
  {
1273
- class: "vxe-modal--corner-wrapper"
1420
+ class: "vxe-modal--body-left"
1274
1421
  },
1275
- getSlotVNs(cornerSlot({ $modal: $xeModal }))
1422
+ getSlotVNs(leftSlot({ $modal: $xeModal }))
1276
1423
  ) : renderEmptyElement($xeModal),
1277
- (XEUtils.isBoolean(showMinimize) ? showMinimize : showZoom) ? h(
1424
+ h(
1278
1425
  "div",
1279
1426
  {
1280
- class: ["vxe-modal--zoom-btn", "trigger--btn"],
1281
- title: getI18n(`vxe.modal.zoom${zoomStatus === "minimize" ? "Out" : "Min"}`),
1282
- onClick: toggleZoomMinEvent
1427
+ class: "vxe-modal--body-default"
1283
1428
  },
1284
- [
1285
- h("i", {
1286
- class: zoomStatus === "minimize" ? getIcon().MODAL_ZOOM_REVERT : getIcon().MODAL_ZOOM_MIN
1287
- })
1288
- ]
1289
- ) : renderEmptyElement($xeModal),
1290
- (XEUtils.isBoolean(showMaximize) ? showMaximize : showZoom) && zoomStatus !== "minimize" ? h(
1429
+ contVNs
1430
+ ),
1431
+ rightSlot ? h(
1291
1432
  "div",
1292
1433
  {
1293
- class: ["vxe-modal--zoom-btn", "trigger--btn"],
1294
- title: getI18n(`vxe.modal.zoom${zoomStatus === "maximize" ? "Out" : "In"}`),
1295
- onClick: toggleZoomMaxEvent
1434
+ class: "vxe-modal--body-right"
1296
1435
  },
1297
- [
1298
- h("i", {
1299
- class: zoomStatus === "maximize" ? getIcon().MODAL_ZOOM_OUT : getIcon().MODAL_ZOOM_IN
1300
- })
1301
- ]
1436
+ getSlotVNs(rightSlot({ $modal: $xeModal }))
1302
1437
  ) : renderEmptyElement($xeModal),
1303
- showClose ? h(
1304
- "div",
1305
- {
1306
- class: ["vxe-modal--close-btn", "trigger--btn"],
1307
- title: getI18n("vxe.modal.close"),
1308
- onClick: closeEvent
1309
- },
1310
- [
1311
- h("i", {
1312
- class: getIcon().MODAL_CLOSE
1313
- })
1314
- ]
1315
- ) : renderEmptyElement($xeModal)
1438
+ isMsg ? renderEmptyElement($xeModal) : h(VxeLoadingComponent, {
1439
+ class: "vxe-modal--loading",
1440
+ modelValue: props.loading
1441
+ })
1316
1442
  ]
1317
- )
1318
- ];
1319
- };
1320
- const renderHeader = () => {
1321
- const { slots: propSlots = {}, showZoom, showMaximize, draggable } = props;
1322
- const headerSlot = slots.header || propSlots.header;
1323
- if (props.showHeader) {
1324
- const headerOns = {};
1325
- if (draggable) {
1326
- headerOns.onMousedown = mousedownEvent;
1443
+ );
1444
+ };
1445
+ const renderDefaultFooter = () => {
1446
+ const { slots: propSlots = {}, showCancelButton, showConfirmButton, type, loading } = props;
1447
+ const lfSlot = slots.leftfoot || propSlots.leftfoot;
1448
+ const rfSlot = slots.rightfoot || propSlots.rightfoot;
1449
+ const btnVNs = [];
1450
+ if (XEUtils.isBoolean(showCancelButton) ? showCancelButton : type === "confirm") {
1451
+ btnVNs.push(
1452
+ h(VxeButtonComponent, {
1453
+ key: 1,
1454
+ ref: refCancelBtn,
1455
+ content: props.cancelButtonText || getI18n("vxe.button.cancel"),
1456
+ onClick: cancelEvent
1457
+ })
1458
+ );
1327
1459
  }
1328
- if ((XEUtils.isBoolean(showMaximize) ? showMaximize : showZoom) && props.dblclickZoom && props.type === "modal") {
1329
- headerOns.onDblclick = toggleZoomMaxEvent;
1460
+ if (XEUtils.isBoolean(showConfirmButton) ? showConfirmButton : type === "confirm" || type === "alert") {
1461
+ btnVNs.push(
1462
+ h(VxeButtonComponent, {
1463
+ key: 2,
1464
+ ref: refConfirmBtn,
1465
+ loading,
1466
+ status: "primary",
1467
+ content: props.confirmButtonText || getI18n("vxe.button.confirm"),
1468
+ onClick: confirmEvent
1469
+ })
1470
+ );
1330
1471
  }
1331
1472
  return h(
1332
1473
  "div",
1333
1474
  {
1334
- ref: refHeaderElem,
1335
- class: [
1336
- "vxe-modal--header",
1337
- {
1338
- "is--ellipsis": props.showTitleOverflow
1339
- }
1340
- ],
1341
- ...headerOns
1475
+ class: "vxe-modal--footer-wrapper"
1342
1476
  },
1343
- headerSlot ? getSlotVNs(headerSlot({ $modal: $xeModal })) : renderTitles()
1344
- );
1345
- }
1346
- return renderEmptyElement($xeModal);
1347
- };
1348
- const renderBody = () => {
1349
- const { slots: propSlots = {}, status, message, iconStatus, useHtml } = props;
1350
- const content = props.content || message;
1351
- const isVScrollbar = computeIsVScrollbar.value;
1352
- const isMsg = computeIsMsg.value;
1353
- const scrollbarProps = computeScrollbarProps.value;
1354
- const defaultSlot = slots.default || propSlots.default;
1355
- const leftSlot = slots.left || propSlots.left;
1356
- const rightSlot = slots.right || propSlots.right;
1357
- const contVNs = [];
1358
- if (!isMsg && (status || iconStatus)) {
1359
- contVNs.push(
1360
- h(
1361
- "div",
1362
- {
1363
- class: "vxe-modal--status-wrapper"
1364
- },
1365
- [
1366
- h("i", {
1367
- class: ["vxe-modal--status-icon", iconStatus || getIcon()[`MODAL_${status}`.toLocaleUpperCase()]]
1368
- })
1369
- ]
1370
- )
1371
- );
1372
- }
1373
- if (useHtml && !defaultSlot) {
1374
- contVNs.push(
1375
- isVScrollbar ? h(
1376
- VxeScrollbarComponent,
1377
- {
1378
- key: "shc",
1379
- class: "vxe-modal--scrollbar-content",
1380
- ...scrollbarProps
1381
- },
1382
- {
1383
- default() {
1384
- return [
1385
- h("div", {
1386
- class: "vxe-modal--scrollbar-content-html",
1387
- innerHTML: getFuncText(content)
1388
- })
1389
- ];
1390
- }
1391
- }
1392
- ) : h("div", {
1393
- key: "hc",
1394
- class: "vxe-modal--content",
1395
- innerHTML: getFuncText(content)
1396
- })
1397
- );
1398
- } else {
1399
- contVNs.push(
1400
- isVScrollbar ? h(
1401
- VxeScrollbarComponent,
1402
- {
1403
- key: "sdc",
1404
- class: "vxe-modal--scrollbar-content",
1405
- ...scrollbarProps
1406
- },
1407
- {
1408
- default: () => defaultSlot ? getSlotVNs(defaultSlot({ $modal: $xeModal })) : getFuncText(content)
1409
- }
1410
- ) : h(
1411
- "div",
1412
- {
1413
- key: "dc",
1414
- class: "vxe-modal--content"
1415
- },
1416
- defaultSlot ? getSlotVNs(defaultSlot({ $modal: $xeModal })) : getFuncText(content)
1417
- )
1418
- );
1419
- }
1420
- return h(
1421
- "div",
1422
- {
1423
- class: "vxe-modal--body"
1424
- },
1425
- [
1426
- leftSlot ? h(
1427
- "div",
1428
- {
1429
- class: "vxe-modal--body-left"
1430
- },
1431
- getSlotVNs(leftSlot({ $modal: $xeModal }))
1432
- ) : renderEmptyElement($xeModal),
1433
- h(
1434
- "div",
1435
- {
1436
- class: "vxe-modal--body-default"
1437
- },
1438
- contVNs
1439
- ),
1440
- rightSlot ? h(
1441
- "div",
1442
- {
1443
- class: "vxe-modal--body-right"
1444
- },
1445
- getSlotVNs(rightSlot({ $modal: $xeModal }))
1446
- ) : renderEmptyElement($xeModal),
1447
- isMsg ? renderEmptyElement($xeModal) : h(VxeLoadingComponent, {
1448
- class: "vxe-modal--loading",
1449
- modelValue: props.loading
1450
- })
1451
- ]
1452
- );
1453
- };
1454
- const renderDefaultFooter = () => {
1455
- const { slots: propSlots = {}, showCancelButton, showConfirmButton, type, loading } = props;
1456
- const lfSlot = slots.leftfoot || propSlots.leftfoot;
1457
- const rfSlot = slots.rightfoot || propSlots.rightfoot;
1458
- const btnVNs = [];
1459
- if (XEUtils.isBoolean(showCancelButton) ? showCancelButton : type === "confirm") {
1460
- btnVNs.push(
1461
- h(VxeButtonComponent, {
1462
- key: 1,
1463
- ref: refCancelBtn,
1464
- content: props.cancelButtonText || getI18n("vxe.button.cancel"),
1465
- onClick: cancelEvent
1466
- })
1467
- );
1468
- }
1469
- if (XEUtils.isBoolean(showConfirmButton) ? showConfirmButton : type === "confirm" || type === "alert") {
1470
- btnVNs.push(
1471
- h(VxeButtonComponent, {
1472
- key: 2,
1473
- ref: refConfirmBtn,
1474
- loading,
1475
- status: "primary",
1476
- content: props.confirmButtonText || getI18n("vxe.button.confirm"),
1477
- onClick: confirmEvent
1478
- })
1477
+ [
1478
+ h(
1479
+ "div",
1480
+ {
1481
+ class: "vxe-modal--footer-left"
1482
+ },
1483
+ lfSlot ? getSlotVNs(lfSlot({ $modal: $xeModal })) : []
1484
+ ),
1485
+ h(
1486
+ "div",
1487
+ {
1488
+ class: "vxe-modal--footer-right"
1489
+ },
1490
+ rfSlot ? getSlotVNs(rfSlot({ $modal: $xeModal })) : btnVNs
1491
+ )
1492
+ ]
1479
1493
  );
1480
- }
1481
- return h(
1482
- "div",
1483
- {
1484
- class: "vxe-modal--footer-wrapper"
1485
- },
1486
- [
1487
- h(
1488
- "div",
1489
- {
1490
- class: "vxe-modal--footer-left"
1491
- },
1492
- lfSlot ? getSlotVNs(lfSlot({ $modal: $xeModal })) : []
1493
- ),
1494
- h(
1494
+ };
1495
+ const renderFooter = () => {
1496
+ const { slots: propSlots = {} } = props;
1497
+ const footerSlot = slots.footer || propSlots.footer;
1498
+ if (props.showFooter) {
1499
+ return h(
1495
1500
  "div",
1496
1501
  {
1497
- class: "vxe-modal--footer-right"
1502
+ class: "vxe-modal--footer"
1498
1503
  },
1499
- rfSlot ? getSlotVNs(rfSlot({ $modal: $xeModal })) : btnVNs
1500
- )
1501
- ]
1502
- );
1503
- };
1504
- const renderFooter = () => {
1505
- const { slots: propSlots = {} } = props;
1506
- const footerSlot = slots.footer || propSlots.footer;
1507
- if (props.showFooter) {
1504
+ footerSlot ? getSlotVNs(footerSlot({ $modal: $xeModal })) : [renderDefaultFooter()]
1505
+ );
1506
+ }
1507
+ return renderEmptyElement($xeModal);
1508
+ };
1509
+ const renderVN = () => {
1510
+ const { border, showTitleBackground, slots: propSlots = {}, className, type, animat, draggable, iconStatus, position, loading, destroyOnClose, status, lockScroll, padding, lockView, mask, resize, appendTo, isWithinAppendTo } = props;
1511
+ const { initialized, modalTop, contentVisible, visible, zoomStatus } = reactData;
1512
+ const asideSlot = slots.aside || propSlots.aside;
1513
+ const vSize = computeSize.value;
1514
+ const isMsg = computeIsMsg.value;
1515
+ const isMinimizeStatus = computeIsMinimizeStatus.value;
1516
+ const btnTransfer = computeBtnTransfer.value;
1517
+ const ons = {};
1518
+ if (isMsg) {
1519
+ ons.onMouseover = selfMouseoverEvent;
1520
+ ons.onMouseout = selfMouseoutEvent;
1521
+ }
1508
1522
  return h(
1509
- "div",
1523
+ Teleport,
1510
1524
  {
1511
- class: "vxe-modal--footer"
1525
+ to: getPopupContainer(appendTo),
1526
+ disabled: btnTransfer ? !initialized : true
1512
1527
  },
1513
- footerSlot ? getSlotVNs(footerSlot({ $modal: $xeModal })) : [renderDefaultFooter()]
1514
- );
1515
- }
1516
- return renderEmptyElement($xeModal);
1517
- };
1518
- const renderVN = () => {
1519
- const { border, showTitleBackground, slots: propSlots = {}, className, type, animat, draggable, iconStatus, position, loading, destroyOnClose, status, lockScroll, padding, lockView, mask, resize, appendTo, isWithinAppendTo } = props;
1520
- const { initialized, modalTop, contentVisible, visible, zoomStatus } = reactData;
1521
- const asideSlot = slots.aside || propSlots.aside;
1522
- const vSize = computeSize.value;
1523
- const isMsg = computeIsMsg.value;
1524
- const isMinimizeStatus = computeIsMinimizeStatus.value;
1525
- const btnTransfer = computeBtnTransfer.value;
1526
- const ons = {};
1527
- if (isMsg) {
1528
- ons.onMouseover = selfMouseoverEvent;
1529
- ons.onMouseout = selfMouseoutEvent;
1530
- }
1531
- return h(
1532
- Teleport,
1533
- {
1534
- to: getPopupContainer(appendTo),
1535
- disabled: btnTransfer ? !initialized : true
1536
- },
1537
- [
1538
- h(
1539
- "div",
1540
- {
1541
- ref: refElem,
1542
- class: [
1543
- "vxe-modal--wrapper",
1544
- `type--${type}`,
1545
- `zoom--${zoomStatus || "revert"}`,
1546
- position ? `pos--${position}` : "",
1547
- isWithinAppendTo ? "ctx--within" : "ctx--free",
1548
- className || "",
1549
- {
1550
- [`size--${vSize}`]: vSize,
1551
- [`status--${status}`]: status,
1552
- "is--padding": padding,
1553
- "is--border": border,
1554
- "is--title-bg": showTitleBackground,
1555
- "is--animat": animat,
1556
- "lock--scroll": lockScroll,
1557
- "lock--view": lockView,
1558
- "is--draggable": draggable,
1559
- "is--resize": resize,
1560
- "is--mask": mask,
1561
- "is--visible": contentVisible,
1562
- "is--active": visible,
1563
- "is--loading": loading
1564
- }
1565
- ],
1566
- style: {
1567
- zIndex: reactData.modalZindex,
1568
- top: modalTop ? `${modalTop}px` : null
1569
- },
1570
- onClick: selfClickEvent,
1571
- ...ons
1572
- },
1573
- [
1574
- h(
1575
- "div",
1576
- {
1577
- ref: refModalBox,
1578
- class: "vxe-modal--box",
1579
- onMousedown: boxMousedownEvent
1528
+ [
1529
+ h(
1530
+ "div",
1531
+ {
1532
+ ref: refElem,
1533
+ class: [
1534
+ "vxe-modal--wrapper",
1535
+ `type--${type}`,
1536
+ `zoom--${zoomStatus || "revert"}`,
1537
+ position ? `pos--${position}` : "",
1538
+ isWithinAppendTo ? "ctx--within" : "ctx--free",
1539
+ className || "",
1540
+ {
1541
+ [`size--${vSize}`]: vSize,
1542
+ [`status--${status}`]: status,
1543
+ "is--padding": padding,
1544
+ "is--border": border,
1545
+ "is--title-bg": showTitleBackground,
1546
+ "is--animat": animat,
1547
+ "lock--scroll": lockScroll,
1548
+ "lock--view": lockView,
1549
+ "is--draggable": draggable,
1550
+ "is--resize": resize,
1551
+ "is--mask": mask,
1552
+ "is--visible": contentVisible,
1553
+ "is--active": visible,
1554
+ "is--loading": loading
1555
+ }
1556
+ ],
1557
+ style: {
1558
+ zIndex: reactData.modalZindex,
1559
+ top: modalTop ? `${modalTop}px` : null
1580
1560
  },
1581
- [
1582
- (isMsg || asideSlot) && !isMinimizeStatus ? h(
1583
- "div",
1584
- {
1585
- class: "vxe-modal--aside"
1586
- },
1587
- asideSlot ? getSlotVNs(asideSlot({ $modal: $xeModal })) : [
1588
- status || iconStatus ? h(
1589
- "div",
1590
- {
1591
- class: "vxe-modal--status-wrapper"
1592
- },
1593
- [
1594
- h("i", {
1595
- class: ["vxe-modal--status-icon", iconStatus || getIcon()[`MODAL_${status}`.toLocaleUpperCase()]]
1561
+ onClick: selfClickEvent,
1562
+ ...ons
1563
+ },
1564
+ [
1565
+ h(
1566
+ "div",
1567
+ {
1568
+ ref: refModalBox,
1569
+ class: "vxe-modal--box",
1570
+ onMousedown: boxMousedownEvent
1571
+ },
1572
+ [
1573
+ (isMsg || asideSlot) && !isMinimizeStatus ? h(
1574
+ "div",
1575
+ {
1576
+ class: "vxe-modal--aside"
1577
+ },
1578
+ asideSlot ? getSlotVNs(asideSlot({ $modal: $xeModal })) : [
1579
+ status || iconStatus ? h(
1580
+ "div",
1581
+ {
1582
+ class: "vxe-modal--status-wrapper"
1583
+ },
1584
+ [
1585
+ h("i", {
1586
+ class: ["vxe-modal--status-icon", iconStatus || getIcon()[`MODAL_${status}`.toLocaleUpperCase()]]
1587
+ })
1588
+ ]
1589
+ ) : renderEmptyElement($xeModal)
1590
+ ]
1591
+ ) : renderEmptyElement($xeModal),
1592
+ h(
1593
+ "div",
1594
+ {
1595
+ class: "vxe-modal--container"
1596
+ },
1597
+ !reactData.initialized || destroyOnClose && !reactData.visible ? [] : [
1598
+ renderHeader(),
1599
+ renderBody(),
1600
+ renderFooter(),
1601
+ !isMsg && resize ? h(
1602
+ "span",
1603
+ {
1604
+ class: "vxe-modal--resize"
1605
+ },
1606
+ ["wl", "wr", "swst", "sest", "st", "swlb", "selb", "sb"].map((type2) => {
1607
+ return h("span", {
1608
+ class: `${type2}-resize`,
1609
+ "data-type": type2,
1610
+ onMousedown: dragEvent
1611
+ });
1596
1612
  })
1597
- ]
1598
- ) : renderEmptyElement($xeModal)
1599
- ]
1600
- ) : renderEmptyElement($xeModal),
1601
- h(
1602
- "div",
1603
- {
1604
- class: "vxe-modal--container"
1605
- },
1606
- !reactData.initialized || destroyOnClose && !reactData.visible ? [] : [
1607
- renderHeader(),
1608
- renderBody(),
1609
- renderFooter(),
1610
- !isMsg && resize ? h(
1611
- "span",
1612
- {
1613
- class: "vxe-modal--resize"
1614
- },
1615
- ["wl", "wr", "swst", "sest", "st", "swlb", "selb", "sb"].map((type2) => {
1616
- return h("span", {
1617
- class: `${type2}-resize`,
1618
- "data-type": type2,
1619
- onMousedown: dragEvent
1620
- });
1621
- })
1622
- ) : renderEmptyElement($xeModal)
1623
- ]
1624
- )
1625
- ]
1626
- )
1627
- ]
1628
- )
1629
- ]
1630
- );
1631
- };
1632
- $xeModal.renderVN = renderVN;
1633
- watch(() => props.width, recalculate);
1634
- watch(() => props.height, recalculate);
1635
- watch(
1636
- () => props.modelValue,
1637
- (value) => {
1638
- if (value) {
1639
- openModal();
1640
- } else {
1641
- closeModal("model");
1613
+ ) : renderEmptyElement($xeModal)
1614
+ ]
1615
+ )
1616
+ ]
1617
+ )
1618
+ ]
1619
+ )
1620
+ ]
1621
+ );
1622
+ };
1623
+ $xeModal.renderVN = renderVN;
1624
+ watch(() => props.width, recalculate);
1625
+ watch(() => props.height, recalculate);
1626
+ watch(
1627
+ () => props.modelValue,
1628
+ (value) => {
1629
+ if (value) {
1630
+ openModal();
1631
+ } else {
1632
+ closeModal("model");
1633
+ }
1642
1634
  }
1643
- }
1644
- );
1645
- onMounted(() => {
1646
- if (props.type === "modal" && props.showFooter && !(props.showConfirmButton || props.showCancelButton || slots.footer)) {
1647
- warnLog("vxe.modal.footPropErr");
1648
- }
1649
- reactData.initialized = !!props.preload;
1650
- nextTick(() => {
1651
- if (props.storage && !props.id) {
1652
- errLog("vxe.error.reqProp", ["id"]);
1635
+ );
1636
+ onMounted(() => {
1637
+ if (props.type === "modal" && props.showFooter && !(props.showConfirmButton || props.showCancelButton || slots.footer)) {
1638
+ warnLog("vxe.modal.footPropErr");
1653
1639
  }
1654
- if (props.modelValue) {
1655
- openModal();
1640
+ reactData.initialized = !!props.preload;
1641
+ nextTick(() => {
1642
+ if (props.storage && !props.id) {
1643
+ errLog("vxe.error.reqProp", ["id"]);
1644
+ }
1645
+ if (props.modelValue) {
1646
+ openModal();
1647
+ }
1648
+ recalculate();
1649
+ });
1650
+ if (props.escClosable) {
1651
+ globalEvents.on($xeModal, "keydown", handleGlobalKeydownEvent);
1656
1652
  }
1657
- recalculate();
1653
+ globalEvents.on($xeModal, "resize", handleGlobalResizeEvent);
1658
1654
  });
1659
- if (props.escClosable) {
1660
- globalEvents.on($xeModal, "keydown", handleGlobalKeydownEvent);
1661
- }
1662
- globalEvents.on($xeModal, "resize", handleGlobalResizeEvent);
1663
- });
1664
- onUnmounted(() => {
1665
- globalEvents.off($xeModal, "keydown");
1666
- globalEvents.off($xeModal, "resize");
1667
- removeMsgQueue();
1668
- removeActiveQueue();
1669
- removeBodyLockScroll();
1670
- XEUtils.assign(reactData, createReactData());
1671
- XEUtils.assign(internalData, createInternalData());
1672
- });
1673
- provide("$xeModal", $xeModal);
1674
- return $xeModal;
1675
- },
1676
- render() {
1677
- return this.renderVN();
1678
- }
1679
- });
1655
+ onUnmounted(() => {
1656
+ globalEvents.off($xeModal, "keydown");
1657
+ globalEvents.off($xeModal, "resize");
1658
+ removeMsgQueue();
1659
+ removeActiveQueue();
1660
+ removeBodyLockScroll();
1661
+ XEUtils.assign(reactData, createReactData());
1662
+ XEUtils.assign(internalData, createInternalData());
1663
+ });
1664
+ provide("$xeModal", $xeModal);
1665
+ return $xeModal;
1666
+ },
1667
+ render() {
1668
+ return this.renderVN();
1669
+ }
1670
+ })
1671
+ );
1680
1672
  export {
1681
1673
  modal_default as default
1682
1674
  };