vxe-pc-ui 3.0.4 → 3.0.6
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.
- package/es/drawer/style.css +0 -20
- package/es/drawer/style.min.css +1 -1
- package/es/icon/style.css +1 -1
- package/es/modal/style.css +0 -20
- package/es/modal/style.min.css +1 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/tabs/src/tabs.js +83 -16
- package/es/tabs/style.css +6 -1
- package/es/tabs/style.min.css +1 -1
- package/es/ui/index.js +3 -1
- package/es/ui/src/log.js +1 -1
- package/es/vxe-drawer/style.css +0 -20
- package/es/vxe-drawer/style.min.css +1 -1
- package/es/vxe-modal/style.css +0 -20
- package/es/vxe-modal/style.min.css +1 -1
- package/es/vxe-tabs/style.css +6 -1
- package/es/vxe-tabs/style.min.css +1 -1
- package/lib/drawer/style/style.css +0 -20
- package/lib/drawer/style/style.min.css +1 -1
- package/lib/icon/style/style.css +1 -1
- package/lib/icon/style/style.min.css +1 -1
- package/lib/index.umd.js +158 -50
- package/lib/index.umd.min.js +1 -1
- package/lib/modal/style/style.css +0 -20
- package/lib/modal/style/style.min.css +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/tabs/src/tabs.js +96 -15
- package/lib/tabs/src/tabs.min.js +1 -1
- package/lib/tabs/style/style.css +6 -1
- package/lib/tabs/style/style.min.css +1 -1
- package/lib/ui/index.js +3 -1
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/lib/vxe-drawer/style/style.css +0 -20
- package/lib/vxe-drawer/style/style.min.css +1 -1
- package/lib/vxe-modal/style/style.css +0 -20
- package/lib/vxe-modal/style/style.min.css +1 -1
- package/lib/vxe-tabs/style/style.css +6 -1
- package/lib/vxe-tabs/style/style.min.css +1 -1
- package/package.json +2 -2
- package/packages/tabs/src/tabs.ts +90 -16
- package/packages/ui/index.ts +2 -0
- package/styles/components/drawer.scss +0 -18
- package/styles/components/modal.scss +0 -18
- package/styles/components/tabs.scss +5 -1
- package/types/components/table.d.ts +4 -1
- package/types/components/tabs.d.ts +76 -2
- package/types/ui/global-icon.d.ts +2 -0
- /package/es/icon/style/{iconfont.1725973675342.ttf → iconfont.1726028460484.ttf} +0 -0
- /package/es/icon/style/{iconfont.1725973675342.woff → iconfont.1726028460484.woff} +0 -0
- /package/es/icon/style/{iconfont.1725973675342.woff2 → iconfont.1726028460484.woff2} +0 -0
- /package/es/{iconfont.1725973675342.ttf → iconfont.1726028460484.ttf} +0 -0
- /package/es/{iconfont.1725973675342.woff → iconfont.1726028460484.woff} +0 -0
- /package/es/{iconfont.1725973675342.woff2 → iconfont.1726028460484.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1725973675342.ttf → iconfont.1726028460484.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1725973675342.woff → iconfont.1726028460484.woff} +0 -0
- /package/lib/icon/style/{iconfont.1725973675342.woff2 → iconfont.1726028460484.woff2} +0 -0
- /package/lib/{iconfont.1725973675342.ttf → iconfont.1726028460484.ttf} +0 -0
- /package/lib/{iconfont.1725973675342.woff → iconfont.1726028460484.woff} +0 -0
- /package/lib/{iconfont.1725973675342.woff2 → iconfont.1726028460484.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.
|
|
3
|
+
"version": "3.0.6",
|
|
4
4
|
"description": "A vue based PC component library",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"update": "npm install --legacy-peer-deps",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"style": "lib/style.css",
|
|
26
26
|
"typings": "types/index.d.ts",
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@vxe-ui/core": "^3.0.
|
|
28
|
+
"@vxe-ui/core": "^3.0.4"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@typescript-eslint/eslint-plugin": "^6.21.0",
|
|
@@ -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 {
|
|
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
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
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
|
|
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':
|
|
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
|
-
|
|
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: {
|
package/packages/ui/index.ts
CHANGED
|
@@ -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
|
-
|
|
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 {
|
|
@@ -102,6 +102,9 @@ export namespace VxeTablePropTypes {
|
|
|
102
102
|
$table: VxeTableConstructor<D> & VxeTablePrivateMethods<D>
|
|
103
103
|
$rowIndex: number
|
|
104
104
|
column: VxeTableDefines.ColumnInfo<D>
|
|
105
|
+
columnIndex: number
|
|
106
|
+
$columnIndex: number
|
|
107
|
+
_columnIndex: number
|
|
105
108
|
fixed: VxeColumnPropTypes.Fixed
|
|
106
109
|
type: string
|
|
107
110
|
}) => void | null | string | { [key: string]: boolean | null | undefined })
|
|
@@ -929,7 +932,7 @@ export namespace VxeTablePropTypes {
|
|
|
929
932
|
columnIndex: number
|
|
930
933
|
$table: VxeTableConstructor<D> & VxeTablePrivateMethods<D>
|
|
931
934
|
$grid: VxeGridConstructor<D> | null | undefined
|
|
932
|
-
}):
|
|
935
|
+
}): void
|
|
933
936
|
}
|
|
934
937
|
export interface KeyboardOpts<D = any> extends KeyboardConfig<D> { }
|
|
935
938
|
|
|
@@ -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
|
|
45
|
-
|
|
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 {
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|