vxe-pc-ui 3.0.5 → 3.0.7

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 (81) hide show
  1. package/es/drawer/src/drawer.js +5 -2
  2. package/es/drawer/style.css +0 -20
  3. package/es/drawer/style.min.css +1 -1
  4. package/es/icon/style.css +1 -1
  5. package/es/link/src/link.js +10 -0
  6. package/es/modal/src/modal.js +5 -2
  7. package/es/modal/style.css +0 -20
  8. package/es/modal/style.min.css +1 -1
  9. package/es/style.css +1 -1
  10. package/es/style.min.css +1 -1
  11. package/es/tabs/src/tabs.js +83 -16
  12. package/es/tabs/style.css +6 -1
  13. package/es/tabs/style.min.css +1 -1
  14. package/es/tag/src/tag.js +7 -0
  15. package/es/ui/index.js +3 -1
  16. package/es/ui/src/log.js +1 -1
  17. package/es/vxe-drawer/style.css +0 -20
  18. package/es/vxe-drawer/style.min.css +1 -1
  19. package/es/vxe-modal/style.css +0 -20
  20. package/es/vxe-modal/style.min.css +1 -1
  21. package/es/vxe-tabs/style.css +6 -1
  22. package/es/vxe-tabs/style.min.css +1 -1
  23. package/helper/vetur/attributes.json +1 -1
  24. package/helper/vetur/tags.json +1 -1
  25. package/lib/drawer/src/drawer.js +8 -2
  26. package/lib/drawer/src/drawer.min.js +1 -1
  27. package/lib/drawer/style/style.css +0 -20
  28. package/lib/drawer/style/style.min.css +1 -1
  29. package/lib/icon/style/style.css +1 -1
  30. package/lib/icon/style/style.min.css +1 -1
  31. package/lib/index.umd.js +136 -21
  32. package/lib/index.umd.min.js +1 -1
  33. package/lib/link/src/link.js +10 -0
  34. package/lib/link/src/link.min.js +1 -1
  35. package/lib/modal/src/modal.js +8 -2
  36. package/lib/modal/src/modal.min.js +1 -1
  37. package/lib/modal/style/style.css +0 -20
  38. package/lib/modal/style/style.min.css +1 -1
  39. package/lib/style.css +1 -1
  40. package/lib/style.min.css +1 -1
  41. package/lib/tabs/src/tabs.js +96 -15
  42. package/lib/tabs/src/tabs.min.js +1 -1
  43. package/lib/tabs/style/style.css +6 -1
  44. package/lib/tabs/style/style.min.css +1 -1
  45. package/lib/tag/src/tag.js +7 -0
  46. package/lib/tag/src/tag.min.js +1 -1
  47. package/lib/ui/index.js +3 -1
  48. package/lib/ui/index.min.js +1 -1
  49. package/lib/ui/src/log.js +1 -1
  50. package/lib/ui/src/log.min.js +1 -1
  51. package/lib/vxe-drawer/style/style.css +0 -20
  52. package/lib/vxe-drawer/style/style.min.css +1 -1
  53. package/lib/vxe-modal/style/style.css +0 -20
  54. package/lib/vxe-modal/style/style.min.css +1 -1
  55. package/lib/vxe-tabs/style/style.css +6 -1
  56. package/lib/vxe-tabs/style/style.min.css +1 -1
  57. package/package.json +1 -1
  58. package/packages/drawer/src/drawer.ts +5 -2
  59. package/packages/link/src/link.ts +12 -0
  60. package/packages/modal/src/modal.ts +5 -2
  61. package/packages/tabs/src/tabs.ts +90 -16
  62. package/packages/tag/src/tag.ts +9 -0
  63. package/packages/ui/index.ts +2 -0
  64. package/styles/components/drawer.scss +0 -18
  65. package/styles/components/modal.scss +0 -18
  66. package/styles/components/tabs.scss +5 -1
  67. package/types/components/tabs.d.ts +76 -2
  68. package/types/ui/global-icon.d.ts +2 -0
  69. package/types/ui/renderer.d.ts +1 -14
  70. /package/es/icon/style/{iconfont.1725977151258.ttf → iconfont.1726043455850.ttf} +0 -0
  71. /package/es/icon/style/{iconfont.1725977151258.woff → iconfont.1726043455850.woff} +0 -0
  72. /package/es/icon/style/{iconfont.1725977151258.woff2 → iconfont.1726043455850.woff2} +0 -0
  73. /package/es/{iconfont.1725977151258.ttf → iconfont.1726043455850.ttf} +0 -0
  74. /package/es/{iconfont.1725977151258.woff → iconfont.1726043455850.woff} +0 -0
  75. /package/es/{iconfont.1725977151258.woff2 → iconfont.1726043455850.woff2} +0 -0
  76. /package/lib/icon/style/{iconfont.1725977151258.ttf → iconfont.1726043455850.ttf} +0 -0
  77. /package/lib/icon/style/{iconfont.1725977151258.woff → iconfont.1726043455850.woff} +0 -0
  78. /package/lib/icon/style/{iconfont.1725977151258.woff2 → iconfont.1726043455850.woff2} +0 -0
  79. /package/lib/{iconfont.1725977151258.ttf → iconfont.1726043455850.ttf} +0 -0
  80. /package/lib/{iconfont.1725977151258.woff → iconfont.1726043455850.woff} +0 -0
  81. /package/lib/{iconfont.1725977151258.woff2 → iconfont.1726043455850.woff2} +0 -0
@@ -1 +1 @@
1
- .vxe-tabs{display:flex;flex-direction:column;color:var(--vxe-ui-font-color);font-family:var(--vxe-ui-font-family)}.vxe-tabs.is--padding .vxe-tabs-pane--item{padding:var(--vxe-ui-layout-padding-default)}.vxe-tabs.trigger--default .vxe-tabs-header--item{cursor:pointer}.vxe-tabs.trigger--default .vxe-tabs-header--item:hover .vxe-tabs-header--item-name{color:var(--vxe-ui-font-primary-color)}.vxe-tabs-header{display:flex;flex-direction:row}.vxe-tabs-header--bar{position:relative;display:flex;flex-direction:row;align-items:center;justify-content:center;flex-shrink:0;width:2em;border:1px solid var(--vxe-ui-input-border-color);cursor:pointer}.vxe-tabs-header--bar::after{content:"";position:absolute;top:0;width:1px;height:100%;background-color:var(--vxe-ui-input-border-color);z-index:3}.vxe-tabs-header--bar:focus{color:var(--vxe-ui-font-darken-color)}.vxe-tabs-header--bar:hover{color:var(--vxe-ui-font-primary-lighten-color);background-color:var(--vxe-ui-font-tinge-color)}.vxe-tabs-header--bar:active{color:var(--vxe-ui-font-primary-darken-color)}.vxe-tabs-header--left-bar{border-right:0;box-shadow:8px 0 10px -5px var(--vxe-ui-tabs-bar-scrolling-box-shadow-color)}.vxe-tabs-header--left-bar::after{right:-1px}.vxe-tabs-header--right-bar{border-left:0;box-shadow:-8px 0 10px -5px var(--vxe-ui-tabs-bar-scrolling-box-shadow-color)}.vxe-tabs-header--right-bar::after{left:-1px}.vxe-tabs-header--extra{display:flex;flex-direction:row;align-items:center;justify-content:center;flex-shrink:0;border-bottom:1px solid var(--vxe-ui-input-border-color)}.vxe-tabs-header--wrapper{position:relative;flex-grow:1}.vxe-tabs-header--wrapper::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background-color:var(--vxe-ui-input-border-color);z-index:0}.vxe-tabs-header--item-wrapper{position:relative;display:flex;flex-direction:row;overflow-y:hidden;overflow-x:auto;outline:0}.vxe-tabs-header--item{position:relative;flex-shrink:0;padding:0 .5em}.vxe-tabs-header--item.is--active{color:var(--vxe-ui-font-primary-color)}.vxe-tabs-header--item.align--left{text-align:left}.vxe-tabs-header--item.align--center{text-align:center}.vxe-tabs-header--item.align--right{text-align:right}.vxe-tabs-header--item-inner{display:flex;flex-direction:row;align-items:center}.vxe-tabs-header--item-content{flex-grow:1}.vxe-tabs-header--item-icon{padding:0 .6em}.vxe-tabs-header--item-icon+.vxe-tabs-header--item-name{padding-left:0}.vxe-tabs-header--item-name{padding:0 .6em}.vxe-tabs-header--close-btn{font-size:.8em;border-radius:50%;width:1.5em;height:1.5em;line-height:1.5em;text-align:center}.vxe-tabs-header--close-btn:hover{color:var(--vxe-ui-font-color);background:var(--vxe-ui-tabs-close-hover-background-color)}.vxe-tabs-header--close-btn:active{color:var(--vxe-ui-font-primary-color)}.vxe-tabs-header--close-btn>i{font-size:1em}.vxe-tabs-header--item-inner{transition:color .1s ease-in-out}.vxe-tabs-pane{flex-grow:1;overflow:hidden}.vxe-tabs-pane--item{display:none;height:100%;overflow:auto;outline:0}.vxe-tabs-pane--item.is--visible{display:block}.vxe-tabs-header--active-line{display:none}.vxe-tabs-header--active-line.type--default{display:block;position:absolute;bottom:0;left:0;height:2px;width:4px;background-color:var(--vxe-ui-font-primary-color);z-index:2;transition:all .3s ease-in-out}.vxe-tabs-header--active-line.type--card{display:block;position:absolute;top:0;left:0;width:4px;border:1px solid var(--vxe-ui-font-primary-color);pointer-events:none;z-index:1;box-shadow:0 0 8px rgba(0,0,0,.1);transition:color,left .3s ease-in-out}.vxe-tabs-header--active-line.type--border-card{display:block;position:absolute;top:0;left:0;width:4px;border-left:1px solid var(--vxe-ui-input-border-color);border-right:1px solid var(--vxe-ui-input-border-color);pointer-events:none;z-index:1}.vxe-tabs--border-card,.vxe-tabs--card,.vxe-tabs--default,.vxe-tabs--round-card{border-radius:var(--vxe-ui-base-border-radius) var(--vxe-ui-base-border-radius) 0 0;background-color:var(--vxe-ui-layout-background-color)}.vxe-tabs--default .vxe-tabs-header--item-inner{border-bottom:2px solid transparent}.vxe-tabs--card .vxe-tabs-header--bar{border-top:0}.vxe-tabs--card .vxe-tabs-header--left-bar{border-left:0}.vxe-tabs--card .vxe-tabs-header--right-bar{border-right:0}.vxe-tabs--card .vxe-tabs-header{border-radius:var(--vxe-ui-base-border-radius) var(--vxe-ui-base-border-radius) 0 0;border-top:1px solid var(--vxe-ui-input-border-color);border-left:1px solid var(--vxe-ui-input-border-color);border-right:1px solid var(--vxe-ui-input-border-color)}.vxe-tabs--card .vxe-tabs-header .vxe-tabs-header--wrapper{border-radius:var(--vxe-ui-base-border-radius) var(--vxe-ui-base-border-radius) 0 0}.vxe-tabs--card .vxe-tabs-header--item{border-left:1px solid var(--vxe-ui-input-border-color)}.vxe-tabs--card .vxe-tabs-header--item:first-child{border-left:0}.vxe-tabs--card .vxe-tabs-header--item:last-child{border-right:1px solid var(--vxe-ui-input-border-color)}.vxe-tabs--border-card .vxe-tabs-header--item-wrapper{z-index:2}.vxe-tabs--border-card .vxe-tabs-header--bar{border-top:0}.vxe-tabs--border-card .vxe-tabs-header--left-bar{border-left:0}.vxe-tabs--border-card .vxe-tabs-header--right-bar{border-right:0}.vxe-tabs--border-card.is--height .vxe-tabs-pane--item,.vxe-tabs--border-card.is--padding .vxe-tabs-pane--item{border-bottom:1px solid var(--vxe-ui-input-border-color);border-left:1px solid var(--vxe-ui-input-border-color);border-right:1px solid var(--vxe-ui-input-border-color)}.vxe-tabs--border-card .vxe-tabs-pane--item.has--content{border-bottom:1px solid var(--vxe-ui-input-border-color);border-left:1px solid var(--vxe-ui-input-border-color);border-right:1px solid var(--vxe-ui-input-border-color)}.vxe-tabs--border-card .vxe-tabs-header{border-top:1px solid var(--vxe-ui-input-border-color);border-left:1px solid var(--vxe-ui-input-border-color);border-right:1px solid var(--vxe-ui-input-border-color);background-color:var(--vxe-ui-tabs-card-header-background-color)}.vxe-tabs--border-card .vxe-tabs-header .vxe-tabs-header--wrapper{border-radius:var(--vxe-ui-base-border-radius) var(--vxe-ui-base-border-radius) 0 0}.vxe-tabs--border-card .vxe-tabs-header--item.is--active{background-color:var(--vxe-ui-layout-background-color)}.vxe-tabs--round-card .vxe-tabs-header--item-wrapper{z-index:2}.vxe-tabs--round-card .vxe-tabs-header--item{position:relative;z-index:2;margin:0 2px;border-top:1px solid var(--vxe-ui-input-border-color);border-left:1px solid var(--vxe-ui-input-border-color);border-right:1px solid var(--vxe-ui-input-border-color);border-radius:var(--vxe-ui-base-border-radius) var(--vxe-ui-base-border-radius) 0 0;background-color:rgba(0,0,0,.02);transition:color .3s ease-in-out}.vxe-tabs--round-card .vxe-tabs-header--item.is--active{background-color:var(--vxe-ui-layout-background-color)}.vxe-tabs--round-card .vxe-tabs-header--item:first-child{margin-left:0}.vxe-tabs--round-card .vxe-tabs-header--item:last-child{margin-right:0}.vxe-tabs--round-card.is--height .vxe-tabs-pane--item,.vxe-tabs--round-card.is--padding .vxe-tabs-pane--item{border-bottom:1px solid var(--vxe-ui-input-border-color);border-left:1px solid var(--vxe-ui-input-border-color);border-right:1px solid var(--vxe-ui-input-border-color)}.vxe-tabs--round-card .vxe-tabs-pane--item.has--content{border-bottom:1px solid var(--vxe-ui-input-border-color);border-left:1px solid var(--vxe-ui-input-border-color);border-right:1px solid var(--vxe-ui-input-border-color)}.vxe-tabs--round-card .vxe-tabs-pane{background-color:var(--vxe-ui-layout-background-color)}.vxe-tabs .vxe-tabs-header--wrapper{height:var(--vxe-ui-tabs-header-height-default);overflow:hidden}.vxe-tabs .vxe-tabs-header--item-inner{height:var(--vxe-ui-tabs-header-height-default)}.vxe-tabs .vxe-tabs-header--active-line.type--card{height:calc(var(--vxe-ui-tabs-header-height-default) - 1px)}.vxe-tabs .vxe-tabs-header--active-line.type--border-card{height:calc(var(--vxe-ui-tabs-header-height-default) + 1px);line-height:calc(var(--vxe-ui-tabs-header-height-default) + 1px)}
1
+ .vxe-tabs{display:flex;flex-direction:column;color:var(--vxe-ui-font-color);font-family:var(--vxe-ui-font-family)}.vxe-tabs.is--padding .vxe-tabs-pane--item{padding:var(--vxe-ui-layout-padding-default)}.vxe-tabs.trigger--default .vxe-tabs-header--item{cursor:pointer}.vxe-tabs.trigger--default .vxe-tabs-header--item:hover .vxe-tabs-header--item-name{color:var(--vxe-ui-font-primary-color)}.vxe-tabs-header{display:flex;flex-direction:row}.vxe-tabs-header--bar{position:relative;display:flex;flex-direction:row;align-items:center;justify-content:center;flex-shrink:0;width:2em;border:1px solid var(--vxe-ui-input-border-color);cursor:pointer}.vxe-tabs-header--bar::after{content:"";position:absolute;top:0;width:1px;height:100%;background-color:var(--vxe-ui-input-border-color);z-index:3}.vxe-tabs-header--bar:focus{color:var(--vxe-ui-font-darken-color)}.vxe-tabs-header--bar:hover{color:var(--vxe-ui-font-primary-lighten-color);background-color:var(--vxe-ui-font-tinge-color)}.vxe-tabs-header--bar:active{color:var(--vxe-ui-font-primary-darken-color)}.vxe-tabs-header--left-bar{border-right:0;box-shadow:8px 0 10px -5px var(--vxe-ui-tabs-bar-scrolling-box-shadow-color)}.vxe-tabs-header--left-bar::after{right:-1px}.vxe-tabs-header--right-bar{border-left:0;box-shadow:-8px 0 10px -5px var(--vxe-ui-tabs-bar-scrolling-box-shadow-color)}.vxe-tabs-header--right-bar::after{left:-1px}.vxe-tabs-header--extra{display:flex;flex-direction:row;align-items:center;justify-content:center;flex-shrink:0;border-bottom:1px solid var(--vxe-ui-input-border-color)}.vxe-tabs-header--wrapper{position:relative;flex-grow:1}.vxe-tabs-header--wrapper::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background-color:var(--vxe-ui-input-border-color);z-index:0}.vxe-tabs-header--item-wrapper{position:relative;display:flex;flex-direction:row;overflow-y:hidden;overflow-x:auto;outline:0}.vxe-tabs-header--item{position:relative;flex-shrink:0;padding:0 .5em}.vxe-tabs-header--item.is--active .vxe-tabs-header--item-content{color:var(--vxe-ui-font-primary-color)}.vxe-tabs-header--item.align--left{text-align:left}.vxe-tabs-header--item.align--center{text-align:center}.vxe-tabs-header--item.align--right{text-align:right}.vxe-tabs-header--item-inner{display:flex;flex-direction:row;align-items:center}.vxe-tabs-header--item-content{flex-grow:1}.vxe-tabs-header--item-icon{padding:0 .6em}.vxe-tabs-header--item-icon+.vxe-tabs-header--item-name{padding-left:0}.vxe-tabs-header--item-name{padding:0 .6em}.vxe-tabs-header--close-btn,.vxe-tabs-header--refresh-btn{font-size:.8em;border-radius:50%;width:1.5em;height:1.5em;margin:0 .2em;line-height:1.5em;text-align:center}.vxe-tabs-header--close-btn:hover,.vxe-tabs-header--refresh-btn:hover{color:var(--vxe-ui-font-color);background:var(--vxe-ui-tabs-close-hover-background-color)}.vxe-tabs-header--close-btn:active,.vxe-tabs-header--refresh-btn:active{color:var(--vxe-ui-font-primary-color)}.vxe-tabs-header--close-btn>i,.vxe-tabs-header--refresh-btn>i{font-size:1em}.vxe-tabs-header--item-inner{transition:color .1s ease-in-out}.vxe-tabs-pane{flex-grow:1;overflow:hidden}.vxe-tabs-pane--item{display:none;height:100%;overflow:auto;outline:0}.vxe-tabs-pane--item.is--visible{display:block}.vxe-tabs-header--active-line{display:none}.vxe-tabs-header--active-line.type--default{display:block;position:absolute;bottom:0;left:0;height:2px;width:4px;background-color:var(--vxe-ui-font-primary-color);z-index:2;transition:all .3s ease-in-out}.vxe-tabs-header--active-line.type--card{display:block;position:absolute;top:0;left:0;width:4px;border:1px solid var(--vxe-ui-font-primary-color);pointer-events:none;z-index:1;box-shadow:0 0 8px rgba(0,0,0,.1);transition:color,left .3s ease-in-out}.vxe-tabs-header--active-line.type--border-card{display:block;position:absolute;top:0;left:0;width:4px;border-left:1px solid var(--vxe-ui-input-border-color);border-right:1px solid var(--vxe-ui-input-border-color);pointer-events:none;z-index:1}.vxe-tabs--border-card,.vxe-tabs--card,.vxe-tabs--default,.vxe-tabs--round-card{border-radius:var(--vxe-ui-base-border-radius) var(--vxe-ui-base-border-radius) 0 0;background-color:var(--vxe-ui-layout-background-color)}.vxe-tabs--default .vxe-tabs-header--item-inner{border-bottom:2px solid transparent}.vxe-tabs--card .vxe-tabs-header--bar{border-top:0}.vxe-tabs--card .vxe-tabs-header--left-bar{border-left:0}.vxe-tabs--card .vxe-tabs-header--right-bar{border-right:0}.vxe-tabs--card .vxe-tabs-header{border-radius:var(--vxe-ui-base-border-radius) var(--vxe-ui-base-border-radius) 0 0;border-top:1px solid var(--vxe-ui-input-border-color);border-left:1px solid var(--vxe-ui-input-border-color);border-right:1px solid var(--vxe-ui-input-border-color)}.vxe-tabs--card .vxe-tabs-header .vxe-tabs-header--wrapper{border-radius:var(--vxe-ui-base-border-radius) var(--vxe-ui-base-border-radius) 0 0}.vxe-tabs--card .vxe-tabs-header--item{border-left:1px solid var(--vxe-ui-input-border-color)}.vxe-tabs--card .vxe-tabs-header--item:first-child{border-left:0}.vxe-tabs--card .vxe-tabs-header--item:last-child{border-right:1px solid var(--vxe-ui-input-border-color)}.vxe-tabs--border-card .vxe-tabs-header--item-wrapper{z-index:2}.vxe-tabs--border-card .vxe-tabs-header--bar{border-top:0}.vxe-tabs--border-card .vxe-tabs-header--left-bar{border-left:0}.vxe-tabs--border-card .vxe-tabs-header--right-bar{border-right:0}.vxe-tabs--border-card.is--height .vxe-tabs-pane--item,.vxe-tabs--border-card.is--padding .vxe-tabs-pane--item{border-bottom:1px solid var(--vxe-ui-input-border-color);border-left:1px solid var(--vxe-ui-input-border-color);border-right:1px solid var(--vxe-ui-input-border-color)}.vxe-tabs--border-card .vxe-tabs-pane--item.has--content{border-bottom:1px solid var(--vxe-ui-input-border-color);border-left:1px solid var(--vxe-ui-input-border-color);border-right:1px solid var(--vxe-ui-input-border-color)}.vxe-tabs--border-card .vxe-tabs-header{border-top:1px solid var(--vxe-ui-input-border-color);border-left:1px solid var(--vxe-ui-input-border-color);border-right:1px solid var(--vxe-ui-input-border-color);background-color:var(--vxe-ui-tabs-card-header-background-color)}.vxe-tabs--border-card .vxe-tabs-header .vxe-tabs-header--wrapper{border-radius:var(--vxe-ui-base-border-radius) var(--vxe-ui-base-border-radius) 0 0}.vxe-tabs--border-card .vxe-tabs-header--item.is--active{background-color:var(--vxe-ui-layout-background-color)}.vxe-tabs--round-card .vxe-tabs-header--item-wrapper{z-index:2}.vxe-tabs--round-card .vxe-tabs-header--item{position:relative;z-index:2;margin:0 2px;border-top:1px solid var(--vxe-ui-input-border-color);border-left:1px solid var(--vxe-ui-input-border-color);border-right:1px solid var(--vxe-ui-input-border-color);border-radius:var(--vxe-ui-base-border-radius) var(--vxe-ui-base-border-radius) 0 0;background-color:rgba(0,0,0,.02);transition:color .3s ease-in-out}.vxe-tabs--round-card .vxe-tabs-header--item.is--active{background-color:var(--vxe-ui-layout-background-color)}.vxe-tabs--round-card .vxe-tabs-header--item:first-child{margin-left:0}.vxe-tabs--round-card .vxe-tabs-header--item:last-child{margin-right:0}.vxe-tabs--round-card.is--height .vxe-tabs-pane--item,.vxe-tabs--round-card.is--padding .vxe-tabs-pane--item{border-bottom:1px solid var(--vxe-ui-input-border-color);border-left:1px solid var(--vxe-ui-input-border-color);border-right:1px solid var(--vxe-ui-input-border-color)}.vxe-tabs--round-card .vxe-tabs-pane--item.has--content{border-bottom:1px solid var(--vxe-ui-input-border-color);border-left:1px solid var(--vxe-ui-input-border-color);border-right:1px solid var(--vxe-ui-input-border-color)}.vxe-tabs--round-card .vxe-tabs-pane{background-color:var(--vxe-ui-layout-background-color)}.vxe-tabs .vxe-tabs-header--wrapper{height:var(--vxe-ui-tabs-header-height-default);overflow:hidden}.vxe-tabs .vxe-tabs-header--item-inner{height:var(--vxe-ui-tabs-header-height-default)}.vxe-tabs .vxe-tabs-header--active-line.type--card{height:calc(var(--vxe-ui-tabs-header-height-default) - 1px)}.vxe-tabs .vxe-tabs-header--active-line.type--border-card{height:calc(var(--vxe-ui-tabs-header-height-default) + 1px);line-height:calc(var(--vxe-ui-tabs-header-height-default) + 1px)}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vxe-pc-ui",
3
- "version": "3.0.5",
3
+ "version": "3.0.7",
4
4
  "description": "A vue based PC component library",
5
5
  "scripts": {
6
6
  "update": "npm install --legacy-peer-deps",
@@ -285,7 +285,9 @@ export default defineVxeComponent({
285
285
  if (lastDrawer) {
286
286
  setTimeout(() => {
287
287
  if (lastDrawer === $xeDrawer && lastDrawer.escClosable) {
288
- $xeDrawer.closeDrawer('exit')
288
+ const type = 'exit'
289
+ $xeDrawer.dispatchEvent('close', { type }, evnt)
290
+ $xeDrawer.closeDrawer(type)
289
291
  }
290
292
  }, 10)
291
293
  }
@@ -400,7 +402,7 @@ export default defineVxeComponent({
400
402
  const props = $xeDrawer
401
403
  const slots = $xeDrawer.$scopedSlots
402
404
 
403
- const { slots: propSlots = {}, showCancelButton, showConfirmButton } = props
405
+ const { slots: propSlots = {}, showCancelButton, showConfirmButton, loading } = props
404
406
  const lfSlot = slots.leftfoot || propSlots.leftfoot
405
407
  const rfSlot = slots.rightfoot || propSlots.rightfoot
406
408
  const btnVNs = []
@@ -425,6 +427,7 @@ export default defineVxeComponent({
425
427
  ref: 'refConfirmBtn',
426
428
  props: {
427
429
  status: 'primary',
430
+ loading: loading,
428
431
  content: props.confirmButtonText || getI18n('vxe.button.confirm')
429
432
  },
430
433
  on: {
@@ -55,6 +55,12 @@ export default defineVxeComponent({
55
55
  const $xeLink = this
56
56
  $xeLink.$emit(type, createEvent(evnt, { $link: $xeLink }, params))
57
57
  },
58
+ clickEvent (evnt: MouseEvent) {
59
+ const $xeLink = this
60
+
61
+ $xeLink.dispatchEvent('click', {}, evnt)
62
+ },
63
+
58
64
  //
59
65
  // Render
60
66
  //
@@ -107,6 +113,9 @@ export default defineVxeComponent({
107
113
  title,
108
114
  target,
109
115
  to: routerLink
116
+ },
117
+ on: {
118
+ click: $xeLink.clickEvent
110
119
  }
111
120
  }, $xeLink.renderContent(h))
112
121
  }
@@ -121,6 +130,9 @@ export default defineVxeComponent({
121
130
  href,
122
131
  target,
123
132
  title
133
+ },
134
+ on: {
135
+ click: $xeLink.clickEvent
124
136
  }
125
137
  }, $xeLink.renderContent(h))
126
138
  }
@@ -864,7 +864,9 @@ export default defineVxeComponent({
864
864
  if (lastModal) {
865
865
  setTimeout(() => {
866
866
  if (lastModal === $xeModal && lastModal.escClosable) {
867
- $xeModal.closeModal('exit')
867
+ const type = 'exit'
868
+ $xeModal.dispatchEvent('close', { type }, evnt)
869
+ $xeModal.closeModal(type)
868
870
  }
869
871
  }, 10)
870
872
  }
@@ -1325,7 +1327,7 @@ export default defineVxeComponent({
1325
1327
  const props = $xeModal
1326
1328
  const slots = $xeModal.$scopedSlots
1327
1329
 
1328
- const { slots: propSlots = {}, showCancelButton, showConfirmButton, type } = props
1330
+ const { slots: propSlots = {}, showCancelButton, showConfirmButton, type, loading } = props
1329
1331
  const lfSlot = slots.leftfoot || propSlots.leftfoot
1330
1332
  const rfSlot = slots.rightfoot || propSlots.rightfoot
1331
1333
  const btnVNs = []
@@ -1350,6 +1352,7 @@ export default defineVxeComponent({
1350
1352
  ref: 'refConfirmBtn',
1351
1353
  props: {
1352
1354
  status: 'primary',
1355
+ loading: loading,
1353
1356
  content: props.confirmButtonText || getI18n('vxe.button.confirm')
1354
1357
  },
1355
1358
  on: {
@@ -4,7 +4,8 @@ import XEUtils from 'xe-utils'
4
4
  import { createEvent, getConfig, getIcon, globalEvents, permission, renderEmptyElement } from '../../ui'
5
5
  import { getSlotVNs } from '../../ui/src/vn'
6
6
  import { toCssUnit } from '../..//ui/src/dom'
7
- import { warnLog } from '../../ui/src/log'
7
+ import { isEnableConf } from '../..//ui/src/utils'
8
+ import { warnLog, errLog } from '../../ui/src/log'
8
9
 
9
10
  import type { VxeTabsPropTypes, VxeTabPaneProps, VxeTabsEmits, TabsInternalData, TabsReactData, VxeComponentSizeType, VxeTabsConstructor, VxeTabsPrivateMethods, VxeTabPaneDefines, ValueOf } from '../../../types'
10
11
 
@@ -25,6 +26,9 @@ export default defineVxeComponent({
25
26
  },
26
27
  trigger: String as PropType<VxeTabsPropTypes.Trigger>,
27
28
  beforeChangeMethod: Function as PropType<VxeTabsPropTypes.BeforeChangeMethod>,
29
+ closeConfig: Object as PropType<VxeTabsPropTypes.CloseConfig>,
30
+ refreshConfig: Object as PropType<VxeTabsPropTypes.RefreshConfig>,
31
+ // 已废弃
28
32
  beforeCloseMethod: Function as PropType<VxeTabsPropTypes.BeforeCloseMethod>
29
33
  },
30
34
  inject: {
@@ -48,7 +52,8 @@ export default defineVxeComponent({
48
52
  lintLeft: 0,
49
53
  lintWidth: 0,
50
54
  isTabOver: false,
51
- resizeFlag: 1
55
+ resizeFlag: 1,
56
+ cacheTabMaps: {}
52
57
  }
53
58
  const internalData: TabsInternalData = {
54
59
  slTimeout: undefined
@@ -70,6 +75,18 @@ export default defineVxeComponent({
70
75
 
71
76
  return $xeParentTabs ? $xeParentTabs.reactData.resizeFlag : null
72
77
  },
78
+ computeCloseOpts () {
79
+ const $xeTabs = this
80
+ const props = $xeTabs
81
+
82
+ return Object.assign({}, getConfig().tabs.closeConfig, props.closeConfig)
83
+ },
84
+ computeRefreshOpts () {
85
+ const $xeTabs = this
86
+ const props = $xeTabs
87
+
88
+ return Object.assign({}, getConfig().tabs.refreshConfig, props.refreshConfig)
89
+ },
73
90
  computeTabOptions (this: any) {
74
91
  const $xeTabs = this
75
92
  const props = $xeTabs
@@ -206,15 +223,24 @@ export default defineVxeComponent({
206
223
  const reactData = $xeTabs.reactData
207
224
 
208
225
  let activeName: VxeTabsPropTypes.ModelValue = null
226
+ const nameMaps: Record<string, {
227
+ loading: boolean
228
+ }> = {}
209
229
  if (list && list.length) {
210
230
  let validVal = false
211
231
  activeName = props.value
212
232
  list.forEach((item) => {
213
- if (activeName === item.name) {
214
- validVal = true
215
- }
216
- if (item && item.preload) {
217
- $xeTabs.addInitName(item.name, null)
233
+ const { name, preload } = item || {}
234
+ if (name) {
235
+ nameMaps[name] = {
236
+ loading: false
237
+ }
238
+ if (activeName === name) {
239
+ validVal = true
240
+ }
241
+ if (preload) {
242
+ $xeTabs.addInitName(name, null)
243
+ }
218
244
  }
219
245
  })
220
246
  if (!validVal) {
@@ -224,6 +250,7 @@ export default defineVxeComponent({
224
250
  }
225
251
  }
226
252
  reactData.activeName = activeName
253
+ reactData.cacheTabMaps = nameMaps
227
254
  },
228
255
  clickEvent (evnt: KeyboardEvent, item: VxeTabPaneProps | VxeTabPaneDefines.TabConfig) {
229
256
  const $xeTabs = this
@@ -244,10 +271,33 @@ export default defineVxeComponent({
244
271
  $xeTabs.dispatchEvent('tab-click', { name }, evnt)
245
272
  $xeTabs.addInitName(name, evnt)
246
273
  if (name !== activeName) {
247
- if (!beforeMethod || beforeMethod({ $tabs: $xeTabs, name, oldName: activeName, newName: name })) {
248
- $xeTabs.dispatchEvent('change', { value, name, oldName: activeName, newName: name }, evnt)
274
+ if (!beforeMethod || beforeMethod({ $tabs: $xeTabs, name, oldName: activeName, newName: name, option: item })) {
275
+ $xeTabs.dispatchEvent('change', { value, name, oldName: activeName, newName: name, option: item }, evnt)
249
276
  } else {
250
- $xeTabs.dispatchEvent('tab-change-fail', { value, name, oldName: activeName, newName: name }, evnt)
277
+ $xeTabs.dispatchEvent('tab-change-fail', { value, name, oldName: activeName, newName: name, option: item }, evnt)
278
+ }
279
+ }
280
+ },
281
+ handleRefreshTabEvent (evnt: KeyboardEvent, item: VxeTabPaneDefines.TabConfig | VxeTabPaneProps) {
282
+ const $xeTabs = this
283
+ const reactData = $xeTabs.reactData
284
+
285
+ evnt.stopPropagation()
286
+ const { activeName, cacheTabMaps } = reactData
287
+ const { name } = item
288
+ const refreshOpts = $xeTabs.computeRefreshOpts
289
+ const { queryMethod } = refreshOpts
290
+ const cacheItem = name ? cacheTabMaps[name] : null
291
+ if (cacheItem) {
292
+ if (queryMethod) {
293
+ cacheItem.loading = true
294
+ Promise.resolve(
295
+ queryMethod({ $tabs: $xeTabs, value: activeName, name, option: item })
296
+ ).finally(() => {
297
+ cacheItem.loading = false
298
+ })
299
+ } else {
300
+ errLog('vxe.error.notFunc', ['refresh-config.queryMethod'])
251
301
  }
252
302
  }
253
303
  },
@@ -258,7 +308,8 @@ export default defineVxeComponent({
258
308
 
259
309
  evnt.stopPropagation()
260
310
  const { activeName } = reactData
261
- const beforeMethod = props.beforeCloseMethod || getConfig().tabs.beforeCloseMethod
311
+ const closeOpts = $xeTabs.computeCloseOpts
312
+ const beforeMethod = closeOpts.beforeMethod || props.beforeCloseMethod || getConfig().tabs.beforeCloseMethod
262
313
  const { name } = item
263
314
  const value = activeName
264
315
  let nextName = value
@@ -266,7 +317,7 @@ export default defineVxeComponent({
266
317
  const nextItem = index < list.length - 1 ? list[index + 1] : list[index - 1]
267
318
  nextName = nextItem ? nextItem.name : null
268
319
  }
269
- if (!beforeMethod || beforeMethod({ $tabs: $xeTabs, value, name, nextName })) {
320
+ if (!beforeMethod || beforeMethod({ $tabs: $xeTabs, value, name, nextName, option: item })) {
270
321
  $xeTabs.dispatchEvent('tab-close', { value, name, nextName }, evnt)
271
322
  } else {
272
323
  $xeTabs.dispatchEvent('tab-close-fail', { value, name, nextName }, evnt)
@@ -399,9 +450,14 @@ export default defineVxeComponent({
399
450
  const slots = $xeTabs.$scopedSlots
400
451
  const reactData = $xeTabs.reactData
401
452
 
402
- const { type, titleWidth: allTitleWidth, titleAlign: allTitleAlign, showClose } = props
403
- const { activeName, lintLeft, lintWidth, isTabOver } = reactData
453
+ const { type, titleWidth: allTitleWidth, titleAlign: allTitleAlign, showClose, closeConfig, refreshConfig } = props
454
+ const { activeName, lintLeft, lintWidth, isTabOver, cacheTabMaps } = reactData
404
455
  const extraSlot = slots.extra
456
+ const closeOpts = $xeTabs.computeCloseOpts
457
+ const closeVisibleMethod = closeOpts.visibleMethod
458
+ const refreshOpts = $xeTabs.computeRefreshOpts
459
+ const refreshVisibleMethod = refreshOpts.visibleMethod
460
+
405
461
  return h('div', {
406
462
  class: 'vxe-tabs-header'
407
463
  }, [
@@ -428,10 +484,14 @@ export default defineVxeComponent({
428
484
  const tabSlot = slots ? slots.tab : null
429
485
  const itemWidth = titleWidth || allTitleWidth
430
486
  const itemAlign = titleAlign || allTitleAlign
487
+ const params = { $tabs: $xeTabs, value: activeName, name, option: item }
488
+ const isActive = activeName === name
489
+ const cacheItem = name ? cacheTabMaps[name] : null
490
+ const isLoading = cacheItem ? cacheItem.loading : false
431
491
  return h('div', {
432
492
  key: `${name}`,
433
493
  class: ['vxe-tabs-header--item', itemAlign ? `align--${itemAlign}` : '', {
434
- 'is--active': activeName === name
494
+ 'is--active': isActive
435
495
  }],
436
496
  style: itemWidth
437
497
  ? {
@@ -463,7 +523,21 @@ export default defineVxeComponent({
463
523
  class: 'vxe-tabs-header--item-name'
464
524
  }, tabSlot ? $xeTabs.callSlot(tabSlot, { name, title }) : `${title}`)
465
525
  ]),
466
- showClose
526
+ (isEnableConf(refreshConfig) || refreshOpts.enabled) && (refreshVisibleMethod ? refreshVisibleMethod(params) : isActive)
527
+ ? h('div', {
528
+ class: 'vxe-tabs-header--refresh-btn',
529
+ on: {
530
+ click (evnt: KeyboardEvent) {
531
+ $xeTabs.handleRefreshTabEvent(evnt, item)
532
+ }
533
+ }
534
+ }, [
535
+ h('i', {
536
+ class: isLoading ? getIcon().TABS_TAB_REFRESH_LOADING : getIcon().TABS_TAB_REFRESH
537
+ })
538
+ ])
539
+ : renderEmptyElement($xeTabs),
540
+ (showClose || (isEnableConf(closeConfig) || closeOpts.enabled)) && (!closeVisibleMethod || closeVisibleMethod(params))
467
541
  ? h('div', {
468
542
  class: 'vxe-tabs-header--close-btn',
469
543
  on: {
@@ -44,6 +44,12 @@ export default defineVxeComponent({
44
44
  const $xeTag = this
45
45
  $xeTag.$emit(type, createEvent(evnt, { $tag: $xeTag }, params))
46
46
  },
47
+ clickEvent (evnt: MouseEvent) {
48
+ const $xeTag = this
49
+
50
+ $xeTag.dispatchEvent('click', {}, evnt)
51
+ },
52
+
47
53
  //
48
54
  // Render
49
55
  //
@@ -86,6 +92,9 @@ export default defineVxeComponent({
86
92
  }],
87
93
  attrs: {
88
94
  title
95
+ },
96
+ on: {
97
+ click: $xeTag.clickEvent
89
98
  }
90
99
  }, $xeTag.renderContent(h))
91
100
  }
@@ -431,6 +431,8 @@ setIcon({
431
431
  TABS_TAB_BUTTON_LEFT: iconPrefix + 'arrow-left',
432
432
  TABS_TAB_BUTTON_RIGHT: iconPrefix + 'arrow-right',
433
433
  TABS_TAB_CLOSE: iconPrefix + 'close',
434
+ TABS_TAB_REFRESH: iconPrefix + 'refresh',
435
+ TABS_TAB_REFRESH_LOADING: iconPrefix + 'refresh roll',
434
436
 
435
437
  // text
436
438
  TEXT_COPY: iconPrefix + 'copy',
@@ -44,24 +44,6 @@
44
44
  opacity: 1;
45
45
  }
46
46
  }
47
- &.is--loading {
48
- .vxe-drawer--header,
49
- .vxe-drawer--footer {
50
- position: relative;
51
- border-bottom-color: var(--vxe-ui-loading-background-color);
52
- &:before {
53
- content: "";
54
- position: absolute;
55
- top: 0;
56
- left: 0;
57
- width: 100%;
58
- height: 100%;
59
- z-index: 1;
60
- user-select: none;
61
- background-color: var(--vxe-ui-loading-background-color);
62
- }
63
- }
64
- }
65
47
  &:not(.lock--view) {
66
48
  pointer-events: none;
67
49
  }
@@ -238,24 +238,6 @@ html[data-vxe-lock-scroll] {
238
238
  visibility: visible;
239
239
  }
240
240
  }
241
- &.is--loading {
242
- .vxe-modal--header,
243
- .vxe-modal--footer {
244
- position: relative;
245
- border-bottom-color: var(--vxe-ui-loading-background-color);
246
- &:before {
247
- content: "";
248
- position: absolute;
249
- top: 0;
250
- left: 0;
251
- width: 100%;
252
- height: 100%;
253
- z-index: 1;
254
- user-select: none;
255
- background-color: var(--vxe-ui-loading-background-color);
256
- }
257
- }
258
- }
259
241
  &:not(.lock--view) {
260
242
  pointer-events: none;
261
243
  }
@@ -106,7 +106,9 @@
106
106
  flex-shrink: 0;
107
107
  padding: 0 0.5em;
108
108
  &.is--active {
109
- color: var(--vxe-ui-font-primary-color);
109
+ .vxe-tabs-header--item-content {
110
+ color: var(--vxe-ui-font-primary-color);
111
+ }
110
112
  }
111
113
  &.align--left {
112
114
  text-align: left;
@@ -135,11 +137,13 @@
135
137
  .vxe-tabs-header--item-name {
136
138
  padding: 0 0.6em;
137
139
  }
140
+ .vxe-tabs-header--refresh-btn,
138
141
  .vxe-tabs-header--close-btn {
139
142
  font-size: 0.8em;
140
143
  border-radius: 50%;
141
144
  width: 1.5em;
142
145
  height: 1.5em;
146
+ margin: 0 0.2em;
143
147
  line-height: 1.5em;
144
148
  text-align: center;
145
149
  &:hover {
@@ -32,17 +32,75 @@ export namespace VxeTabsPropTypes {
32
32
  name: VxeTabsPropTypes.ModelValue
33
33
  oldName: VxeTabsPropTypes.ModelValue
34
34
  newName: VxeTabsPropTypes.ModelValue
35
+ option: Omit<VxeTabPaneProps, 'slots'>
35
36
  }) => boolean
37
+ /**
38
+ * 请使用 closeConfig.beforeMethod
39
+ * @deprecated
40
+ */
36
41
  export type BeforeCloseMethod = (params: {
37
42
  $tabs: VxeTabsConstructor
38
43
  value: VxeTabsPropTypes.ModelValue
39
44
  name: VxeTabsPropTypes.ModelValue
40
45
  nextName: VxeTabsPropTypes.ModelValue | null
46
+ option: Omit<VxeTabPaneProps, 'slots'>
41
47
  }) => boolean
48
+ export interface CloseConfig {
49
+ /**
50
+ * 是否启用
51
+ */
52
+ enabled?: boolean
53
+ /**
54
+ * 页签关闭之前方法,该方法的返回值用来决定当前页签是否允许关闭
55
+ * @returns boolean
56
+ */
57
+ beforeMethod?: (params: {
58
+ $tabs: VxeTabsConstructor
59
+ value: VxeTabsPropTypes.ModelValue
60
+ name: VxeTabsPropTypes.ModelValue
61
+ nextName: VxeTabsPropTypes.ModelValue | null
62
+ option: Omit<VxeTabPaneProps, 'slots'>
63
+ }) => boolean
64
+ /**
65
+ * 显示关闭按钮方法,该方法的返回值用来决定当前页签的关闭按钮是否显示
66
+ * @returns boolean
67
+ */
68
+ visibleMethod?: (params: {
69
+ $tabs: VxeTabsConstructor
70
+ value: VxeTabsPropTypes.ModelValue
71
+ name: VxeTabsPropTypes.ModelValue
72
+ option: Omit<VxeTabPaneProps, 'slots'>
73
+ }) => boolean
74
+ }
75
+ export interface RefreshConfig {
76
+ /**
77
+ * 是否启用
78
+ */
79
+ enabled?: boolean
80
+ /**
81
+ * 查询方法
82
+ */
83
+ queryMethod?: (params: {
84
+ $tabs: VxeTabsConstructor
85
+ value: VxeTabsPropTypes.ModelValue
86
+ name: VxeTabsPropTypes.ModelValue
87
+ option: Omit<VxeTabPaneProps, 'slots'>
88
+ }) => Promise<any> | void
89
+ /**
90
+ * 显示刷新按钮方法,该方法的返回值用来决定当前页签的刷新按钮是否显示
91
+ * @returns boolean
92
+ */
93
+ visibleMethod?: (params: {
94
+ $tabs: VxeTabsConstructor
95
+ value: VxeTabsPropTypes.ModelValue
96
+ name: VxeTabsPropTypes.ModelValue
97
+ option: Omit<VxeTabPaneProps, 'slots'>
98
+ }) => boolean
99
+ }
42
100
  }
43
101
 
44
- export interface VxeTabsProps {
45
- value?: VxeTabsPropTypes.ModelValue
102
+ export type VxeTabsProps = {
103
+ modelValue?: VxeTabsPropTypes.ModelValue
46
104
  options?: VxeTabsPropTypes.Options
47
105
  destroyOnClose?: VxeTabsPropTypes.DestroyOnClose
48
106
  height?: VxeTabsPropTypes.Height
@@ -53,6 +111,19 @@ export interface VxeTabsProps {
53
111
  padding?: VxeTabsPropTypes.Padding
54
112
  trigger?: VxeTabsPropTypes.Trigger
55
113
  beforeChangeMethod?: VxeTabsPropTypes.BeforeChangeMethod
114
+ /**
115
+ * 关闭配置项
116
+ */
117
+ closeConfig?: VxeTabsPropTypes.CloseConfig
118
+ /**
119
+ * 刷新配置项
120
+ */
121
+ refreshConfig?: VxeTabsPropTypes.RefreshConfig
122
+
123
+ /**
124
+ * 请使用 closeConfig.beforeMethod
125
+ * @deprecated
126
+ */
56
127
  beforeCloseMethod?: VxeTabsPropTypes.BeforeCloseMethod
57
128
  }
58
129
 
@@ -68,6 +139,9 @@ export interface TabsReactData {
68
139
  lintWidth: number
69
140
  isTabOver: boolean
70
141
  resizeFlag: number
142
+ cacheTabMaps: Record<string, {
143
+ loading: boolean
144
+ }>
71
145
  }
72
146
 
73
147
  export interface TabsInternalData {
@@ -191,6 +191,8 @@ declare module '@vxe-ui/core' {
191
191
  TABS_TAB_BUTTON_LEFT?: string
192
192
  TABS_TAB_BUTTON_RIGHT?: string
193
193
  TABS_TAB_CLOSE?: string
194
+ TABS_TAB_REFRESH?: string
195
+ TABS_TAB_REFRESH_LOADING?: string
194
196
 
195
197
  // text
196
198
  TEXT_COPY?: string
@@ -367,20 +367,7 @@ declare module '@vxe-ui/core' {
367
367
  * @deprecated
368
368
  */
369
369
  export interface RenderEditParams<D = any> extends RenderTableEditParams<D> {}
370
- export interface RenderTableEditParams<D = any> {
371
- $table: VxeTableConstructor<D> & VxeTablePrivateMethods<D>
372
- $grid: VxeGridConstructor<D> | null
373
- column: VxeTableDefines.ColumnInfo<D>
374
- columnIndex: number
375
- $columnIndex: number
376
- rowid: string
377
- row: D
378
- rowIndex: number
379
- $rowIndex: number
380
- isHidden: boolean
381
- fixed: VxeColumnPropTypes.Fixed
382
- type: string
383
- }
370
+ export interface RenderTableEditParams<D = any> extends VxeTableDefines.CellRenderBodyParams<D> {}
384
371
 
385
372
  /**
386
373
  * @deprecated