vxe-pc-ui 4.1.21 → 4.1.23
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 -19
- package/es/drawer/style.min.css +1 -1
- package/es/icon/style.css +1 -1
- package/es/modal/style.css +0 -19
- 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 +75 -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 -19
- package/es/vxe-drawer/style.min.css +1 -1
- package/es/vxe-modal/style.css +0 -19
- 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 -19
- 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 +154 -50
- package/lib/index.umd.min.js +1 -1
- package/lib/modal/style/style.css +0 -19
- 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 +95 -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 -19
- package/lib/vxe-drawer/style/style.min.css +1 -1
- package/lib/vxe-modal/style/style.css +0 -19
- 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 +82 -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-module/validator.d.ts +2 -3
- package/types/components/table.d.ts +4 -1
- package/types/components/tabs.d.ts +74 -0
- package/types/ui/global-icon.d.ts +2 -0
- /package/es/icon/style/{iconfont.1725941866604.ttf → iconfont.1726025998391.ttf} +0 -0
- /package/es/icon/style/{iconfont.1725941866604.woff → iconfont.1726025998391.woff} +0 -0
- /package/es/icon/style/{iconfont.1725941866604.woff2 → iconfont.1726025998391.woff2} +0 -0
- /package/es/{iconfont.1725941866604.ttf → iconfont.1726025998391.ttf} +0 -0
- /package/es/{iconfont.1725941866604.woff → iconfont.1726025998391.woff} +0 -0
- /package/es/{iconfont.1725941866604.woff2 → iconfont.1726025998391.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1725941866604.ttf → iconfont.1726025998391.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1725941866604.woff → iconfont.1726025998391.woff} +0 -0
- /package/lib/icon/style/{iconfont.1725941866604.woff2 → iconfont.1726025998391.woff2} +0 -0
- /package/lib/{iconfont.1725941866604.ttf → iconfont.1726025998391.ttf} +0 -0
- /package/lib/{iconfont.1725941866604.woff → iconfont.1726025998391.woff} +0 -0
- /package/lib/{iconfont.1725941866604.woff2 → iconfont.1726025998391.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": "4.1.
|
|
3
|
+
"version": "4.1.23",
|
|
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": "^4.0.
|
|
28
|
+
"@vxe-ui/core": "^4.0.10"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@typescript-eslint/eslint-plugin": "^6.21.0",
|
|
@@ -2,7 +2,8 @@ import { defineComponent, ref, h, reactive, inject, PropType, provide, computed,
|
|
|
2
2
|
import { createEvent, getConfig, getIcon, globalEvents, permission } from '../../ui'
|
|
3
3
|
import { getSlotVNs } from '../../ui/src/vn'
|
|
4
4
|
import { toCssUnit } from '../..//ui/src/dom'
|
|
5
|
-
import {
|
|
5
|
+
import { isEnableConf } from '../..//ui/src/utils'
|
|
6
|
+
import { warnLog, errLog } from '../../ui/src/log'
|
|
6
7
|
import XEUtils from 'xe-utils'
|
|
7
8
|
|
|
8
9
|
import type { VxeTabsPropTypes, VxeTabPaneProps, VxeTabsEmits, TabsInternalData, TabsReactData, TabsPrivateRef, VxeTabsPrivateComputed, VxeTabsConstructor, VxeTabsPrivateMethods, VxeTabPaneDefines, ValueOf, TabsMethods, TabsPrivateMethods } from '../../../types'
|
|
@@ -24,6 +25,9 @@ export default defineComponent({
|
|
|
24
25
|
},
|
|
25
26
|
trigger: String as PropType<VxeTabsPropTypes.Trigger>,
|
|
26
27
|
beforeChangeMethod: Function as PropType<VxeTabsPropTypes.BeforeChangeMethod>,
|
|
28
|
+
closeConfig: Object as PropType<VxeTabsPropTypes.CloseConfig>,
|
|
29
|
+
refreshConfig: Object as PropType<VxeTabsPropTypes.RefreshConfig>,
|
|
30
|
+
// 已废弃
|
|
27
31
|
beforeCloseMethod: Function as PropType<VxeTabsPropTypes.BeforeCloseMethod>
|
|
28
32
|
},
|
|
29
33
|
emits: [
|
|
@@ -52,7 +56,8 @@ export default defineComponent({
|
|
|
52
56
|
lintLeft: 0,
|
|
53
57
|
lintWidth: 0,
|
|
54
58
|
isTabOver: false,
|
|
55
|
-
resizeFlag: 1
|
|
59
|
+
resizeFlag: 1,
|
|
60
|
+
cacheTabMaps: {}
|
|
56
61
|
})
|
|
57
62
|
|
|
58
63
|
const internalData: TabsInternalData = {
|
|
@@ -63,6 +68,14 @@ export default defineComponent({
|
|
|
63
68
|
refElem
|
|
64
69
|
}
|
|
65
70
|
|
|
71
|
+
const computeCloseOpts = computed(() => {
|
|
72
|
+
return Object.assign({}, getConfig().tabs.closeConfig, props.closeConfig)
|
|
73
|
+
})
|
|
74
|
+
|
|
75
|
+
const computeRefreshOpts = computed(() => {
|
|
76
|
+
return Object.assign({}, getConfig().tabs.refreshConfig, props.refreshConfig)
|
|
77
|
+
})
|
|
78
|
+
|
|
66
79
|
const computeTabOptions = computed(() => {
|
|
67
80
|
const { options } = props
|
|
68
81
|
return (options || []).filter((item) => handleFilterTab(item))
|
|
@@ -161,15 +174,24 @@ export default defineComponent({
|
|
|
161
174
|
|
|
162
175
|
const initDefaultName = (list?: VxeTabsPropTypes.Options | VxeTabPaneDefines.TabConfig[]) => {
|
|
163
176
|
let activeName: VxeTabsPropTypes.ModelValue = null
|
|
177
|
+
const nameMaps: Record<string, {
|
|
178
|
+
loading: boolean
|
|
179
|
+
}> = {}
|
|
164
180
|
if (list && list.length) {
|
|
165
181
|
let validVal = false
|
|
166
182
|
activeName = props.modelValue
|
|
167
183
|
list.forEach((item) => {
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
184
|
+
const { name, preload } = item || {}
|
|
185
|
+
if (name) {
|
|
186
|
+
nameMaps[name] = {
|
|
187
|
+
loading: false
|
|
188
|
+
}
|
|
189
|
+
if (activeName === name) {
|
|
190
|
+
validVal = true
|
|
191
|
+
}
|
|
192
|
+
if (preload) {
|
|
193
|
+
addInitName(name, null)
|
|
194
|
+
}
|
|
173
195
|
}
|
|
174
196
|
})
|
|
175
197
|
if (!validVal) {
|
|
@@ -179,6 +201,7 @@ export default defineComponent({
|
|
|
179
201
|
}
|
|
180
202
|
}
|
|
181
203
|
reactData.activeName = activeName
|
|
204
|
+
reactData.cacheTabMaps = nameMaps
|
|
182
205
|
}
|
|
183
206
|
|
|
184
207
|
const clickEvent = (evnt: KeyboardEvent, item: VxeTabPaneProps | VxeTabPaneDefines.TabConfig) => {
|
|
@@ -196,10 +219,31 @@ export default defineComponent({
|
|
|
196
219
|
dispatchEvent('tab-click', { name }, evnt)
|
|
197
220
|
addInitName(name, evnt)
|
|
198
221
|
if (name !== activeName) {
|
|
199
|
-
if (!beforeMethod || beforeMethod({ $tabs: $xeTabs, name, oldName: activeName, newName: name })) {
|
|
200
|
-
dispatchEvent('change', { value, name, oldName: activeName, newName: name }, evnt)
|
|
222
|
+
if (!beforeMethod || beforeMethod({ $tabs: $xeTabs, name, oldName: activeName, newName: name, option: item })) {
|
|
223
|
+
dispatchEvent('change', { value, name, oldName: activeName, newName: name, option: item }, evnt)
|
|
201
224
|
} else {
|
|
202
|
-
dispatchEvent('tab-change-fail', { value, name, oldName: activeName, newName: name }, evnt)
|
|
225
|
+
dispatchEvent('tab-change-fail', { value, name, oldName: activeName, newName: name, option: item }, evnt)
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
const handleRefreshTabEvent = (evnt: KeyboardEvent, item: VxeTabPaneDefines.TabConfig | VxeTabPaneProps) => {
|
|
231
|
+
evnt.stopPropagation()
|
|
232
|
+
const { activeName, cacheTabMaps } = reactData
|
|
233
|
+
const { name } = item
|
|
234
|
+
const refreshOpts = computeRefreshOpts.value
|
|
235
|
+
const { queryMethod } = refreshOpts
|
|
236
|
+
const cacheItem = name ? cacheTabMaps[name] : null
|
|
237
|
+
if (cacheItem) {
|
|
238
|
+
if (queryMethod) {
|
|
239
|
+
cacheItem.loading = true
|
|
240
|
+
Promise.resolve(
|
|
241
|
+
queryMethod({ $tabs: $xeTabs, value: activeName, name, option: item })
|
|
242
|
+
).finally(() => {
|
|
243
|
+
cacheItem.loading = false
|
|
244
|
+
})
|
|
245
|
+
} else {
|
|
246
|
+
errLog('vxe.error.notFunc', ['refresh-config.queryMethod'])
|
|
203
247
|
}
|
|
204
248
|
}
|
|
205
249
|
}
|
|
@@ -207,7 +251,8 @@ export default defineComponent({
|
|
|
207
251
|
const handleCloseTabEvent = (evnt: KeyboardEvent, item: VxeTabPaneDefines.TabConfig | VxeTabPaneProps, index: number, list: VxeTabsPropTypes.Options | VxeTabPaneDefines.TabConfig[]) => {
|
|
208
252
|
evnt.stopPropagation()
|
|
209
253
|
const { activeName } = reactData
|
|
210
|
-
const
|
|
254
|
+
const closeOpts = computeCloseOpts.value
|
|
255
|
+
const beforeMethod = closeOpts.beforeMethod || props.beforeCloseMethod || getConfig().tabs.beforeCloseMethod
|
|
211
256
|
const { name } = item
|
|
212
257
|
const value = activeName
|
|
213
258
|
let nextName = value
|
|
@@ -215,7 +260,7 @@ export default defineComponent({
|
|
|
215
260
|
const nextItem = index < list.length - 1 ? list[index + 1] : list[index - 1]
|
|
216
261
|
nextName = nextItem ? nextItem.name : null
|
|
217
262
|
}
|
|
218
|
-
if (!beforeMethod || beforeMethod({ $tabs: $xeTabs, value, name, nextName })) {
|
|
263
|
+
if (!beforeMethod || beforeMethod({ $tabs: $xeTabs, value, name, nextName, option: item })) {
|
|
219
264
|
dispatchEvent('tab-close', { value, name, nextName }, evnt)
|
|
220
265
|
} else {
|
|
221
266
|
dispatchEvent('tab-close-fail', { value, name, nextName }, evnt)
|
|
@@ -360,9 +405,14 @@ export default defineComponent({
|
|
|
360
405
|
Object.assign($xeTabs, tabsMethods, tabsPrivateMethods)
|
|
361
406
|
|
|
362
407
|
const renderTabHeader = (tabList: VxeTabsPropTypes.Options | VxeTabPaneDefines.TabConfig[]) => {
|
|
363
|
-
const { type, titleWidth: allTitleWidth, titleAlign: allTitleAlign, showClose } = props
|
|
364
|
-
const { activeName, lintLeft, lintWidth, isTabOver } = reactData
|
|
408
|
+
const { type, titleWidth: allTitleWidth, titleAlign: allTitleAlign, showClose, closeConfig, refreshConfig } = props
|
|
409
|
+
const { activeName, lintLeft, lintWidth, isTabOver, cacheTabMaps } = reactData
|
|
365
410
|
const extraSlot = slots.extra
|
|
411
|
+
const closeOpts = computeCloseOpts.value
|
|
412
|
+
const closeVisibleMethod = closeOpts.visibleMethod
|
|
413
|
+
const refreshOpts = computeRefreshOpts.value
|
|
414
|
+
const refreshVisibleMethod = refreshOpts.visibleMethod
|
|
415
|
+
|
|
366
416
|
return h('div', {
|
|
367
417
|
class: 'vxe-tabs-header'
|
|
368
418
|
}, [
|
|
@@ -387,10 +437,14 @@ export default defineComponent({
|
|
|
387
437
|
const tabSlot = slots ? slots.tab : null
|
|
388
438
|
const itemWidth = titleWidth || allTitleWidth
|
|
389
439
|
const itemAlign = titleAlign || allTitleAlign
|
|
440
|
+
const params = { $tabs: $xeTabs, value: activeName, name, option: item }
|
|
441
|
+
const isActive = activeName === name
|
|
442
|
+
const cacheItem = name ? cacheTabMaps[name] : null
|
|
443
|
+
const isLoading = cacheItem ? cacheItem.loading : false
|
|
390
444
|
return h('div', {
|
|
391
445
|
key: `${name}`,
|
|
392
446
|
class: ['vxe-tabs-header--item', itemAlign ? `align--${itemAlign}` : '', {
|
|
393
|
-
'is--active':
|
|
447
|
+
'is--active': isActive
|
|
394
448
|
}],
|
|
395
449
|
style: itemWidth
|
|
396
450
|
? {
|
|
@@ -420,7 +474,19 @@ export default defineComponent({
|
|
|
420
474
|
class: 'vxe-tabs-header--item-name'
|
|
421
475
|
}, tabSlot ? callSlot(tabSlot, { name, title }) : `${title}`)
|
|
422
476
|
]),
|
|
423
|
-
|
|
477
|
+
(isEnableConf(refreshConfig) || refreshOpts.enabled) && (refreshVisibleMethod ? refreshVisibleMethod(params) : isActive)
|
|
478
|
+
? h('div', {
|
|
479
|
+
class: 'vxe-tabs-header--refresh-btn',
|
|
480
|
+
onClick (evnt: KeyboardEvent) {
|
|
481
|
+
handleRefreshTabEvent(evnt, item)
|
|
482
|
+
}
|
|
483
|
+
}, [
|
|
484
|
+
h('i', {
|
|
485
|
+
class: isLoading ? getIcon().TABS_TAB_REFRESH_LOADING : getIcon().TABS_TAB_REFRESH
|
|
486
|
+
})
|
|
487
|
+
])
|
|
488
|
+
: createCommentVNode(),
|
|
489
|
+
(showClose || (isEnableConf(closeConfig) || closeOpts.enabled)) && (!closeVisibleMethod || closeVisibleMethod(params))
|
|
424
490
|
? h('div', {
|
|
425
491
|
class: 'vxe-tabs-header--close-btn',
|
|
426
492
|
onClick (evnt: KeyboardEvent) {
|
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 {
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { VxeTableDefines
|
|
2
|
-
import { VxeGridConstructor } from '../grid'
|
|
1
|
+
import { VxeTableDefines } from '../table'
|
|
3
2
|
import { VxeColumnPropTypes } from '../column'
|
|
4
3
|
|
|
5
|
-
/* eslint-disable no-use-before-define */
|
|
4
|
+
/* eslint-disable @typescript-eslint/no-unused-vars,no-use-before-define */
|
|
6
5
|
|
|
7
6
|
export interface TableValidatorMethods<D = any> {
|
|
8
7
|
/**
|
|
@@ -126,6 +126,9 @@ export namespace VxeTablePropTypes {
|
|
|
126
126
|
$table: VxeTableConstructor<D> & VxeTablePrivateMethods<D>
|
|
127
127
|
$rowIndex: number
|
|
128
128
|
column: VxeTableDefines.ColumnInfo<D>
|
|
129
|
+
columnIndex: number
|
|
130
|
+
$columnIndex: number
|
|
131
|
+
_columnIndex: number
|
|
129
132
|
fixed: VxeColumnPropTypes.Fixed
|
|
130
133
|
type: string
|
|
131
134
|
}) => void | null | string | { [key: string]: boolean | null | undefined })
|
|
@@ -953,7 +956,7 @@ export namespace VxeTablePropTypes {
|
|
|
953
956
|
columnIndex: number
|
|
954
957
|
$table: VxeTableConstructor<D> & VxeTablePrivateMethods<D>
|
|
955
958
|
$grid: VxeGridConstructor<D> | null | undefined
|
|
956
|
-
}):
|
|
959
|
+
}): void
|
|
957
960
|
}
|
|
958
961
|
export interface KeyboardOpts<D = any> extends KeyboardConfig<D> { }
|
|
959
962
|
|
|
@@ -39,13 +39,71 @@ export namespace VxeTabsPropTypes {
|
|
|
39
39
|
name: VxeTabsPropTypes.ModelValue
|
|
40
40
|
oldName: VxeTabsPropTypes.ModelValue
|
|
41
41
|
newName: VxeTabsPropTypes.ModelValue
|
|
42
|
+
option: Omit<VxeTabPaneProps, 'slots'>
|
|
42
43
|
}) => boolean
|
|
44
|
+
/**
|
|
45
|
+
* 请使用 closeConfig.beforeMethod
|
|
46
|
+
* @deprecated
|
|
47
|
+
*/
|
|
43
48
|
export type BeforeCloseMethod = (params: {
|
|
44
49
|
$tabs: VxeTabsConstructor
|
|
45
50
|
value: VxeTabsPropTypes.ModelValue
|
|
46
51
|
name: VxeTabsPropTypes.ModelValue
|
|
47
52
|
nextName: VxeTabsPropTypes.ModelValue | null
|
|
53
|
+
option: Omit<VxeTabPaneProps, 'slots'>
|
|
48
54
|
}) => boolean
|
|
55
|
+
export interface CloseConfig {
|
|
56
|
+
/**
|
|
57
|
+
* 是否启用
|
|
58
|
+
*/
|
|
59
|
+
enabled?: boolean
|
|
60
|
+
/**
|
|
61
|
+
* 页签关闭方法,该方法的返回值用来决定当前页签是否允许关闭
|
|
62
|
+
* @returns boolean
|
|
63
|
+
*/
|
|
64
|
+
beforeMethod?: (params: {
|
|
65
|
+
$tabs: VxeTabsConstructor
|
|
66
|
+
value: VxeTabsPropTypes.ModelValue
|
|
67
|
+
name: VxeTabsPropTypes.ModelValue
|
|
68
|
+
nextName: VxeTabsPropTypes.ModelValue | null
|
|
69
|
+
option: Omit<VxeTabPaneProps, 'slots'>
|
|
70
|
+
}) => boolean
|
|
71
|
+
/**
|
|
72
|
+
* 显示关闭按钮方法,该方法的返回值用来决定当前页签的关闭按钮是否显示
|
|
73
|
+
* @returns boolean
|
|
74
|
+
*/
|
|
75
|
+
visibleMethod?: (params: {
|
|
76
|
+
$tabs: VxeTabsConstructor
|
|
77
|
+
value: VxeTabsPropTypes.ModelValue
|
|
78
|
+
name: VxeTabsPropTypes.ModelValue
|
|
79
|
+
option: Omit<VxeTabPaneProps, 'slots'>
|
|
80
|
+
}) => boolean
|
|
81
|
+
}
|
|
82
|
+
export interface RefreshConfig {
|
|
83
|
+
/**
|
|
84
|
+
* 是否启用
|
|
85
|
+
*/
|
|
86
|
+
enabled?: boolean
|
|
87
|
+
/**
|
|
88
|
+
* 查询方法
|
|
89
|
+
*/
|
|
90
|
+
queryMethod?: (params: {
|
|
91
|
+
$tabs: VxeTabsConstructor
|
|
92
|
+
value: VxeTabsPropTypes.ModelValue
|
|
93
|
+
name: VxeTabsPropTypes.ModelValue
|
|
94
|
+
option: Omit<VxeTabPaneProps, 'slots'>
|
|
95
|
+
}) => Promise<any> | void
|
|
96
|
+
/**
|
|
97
|
+
* 显示刷新按钮方法,该方法的返回值用来决定当前页签的刷新按钮是否显示
|
|
98
|
+
* @returns boolean
|
|
99
|
+
*/
|
|
100
|
+
visibleMethod?: (params: {
|
|
101
|
+
$tabs: VxeTabsConstructor
|
|
102
|
+
value: VxeTabsPropTypes.ModelValue
|
|
103
|
+
name: VxeTabsPropTypes.ModelValue
|
|
104
|
+
option: Omit<VxeTabPaneProps, 'slots'>
|
|
105
|
+
}) => boolean
|
|
106
|
+
}
|
|
49
107
|
}
|
|
50
108
|
|
|
51
109
|
export type VxeTabsProps = {
|
|
@@ -60,6 +118,19 @@ export type VxeTabsProps = {
|
|
|
60
118
|
padding?: VxeTabsPropTypes.Padding
|
|
61
119
|
trigger?: VxeTabsPropTypes.Trigger
|
|
62
120
|
beforeChangeMethod?: VxeTabsPropTypes.BeforeChangeMethod
|
|
121
|
+
/**
|
|
122
|
+
* 关闭配置项
|
|
123
|
+
*/
|
|
124
|
+
closeConfig?: VxeTabsPropTypes.CloseConfig
|
|
125
|
+
/**
|
|
126
|
+
* 刷新配置项
|
|
127
|
+
*/
|
|
128
|
+
refreshConfig?: VxeTabsPropTypes.RefreshConfig
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* 请使用 closeConfig.beforeMethod
|
|
132
|
+
* @deprecated
|
|
133
|
+
*/
|
|
63
134
|
beforeCloseMethod?: VxeTabsPropTypes.BeforeCloseMethod
|
|
64
135
|
}
|
|
65
136
|
|
|
@@ -75,6 +146,9 @@ export interface TabsReactData {
|
|
|
75
146
|
lintWidth: number
|
|
76
147
|
isTabOver: boolean
|
|
77
148
|
resizeFlag: number
|
|
149
|
+
cacheTabMaps: Record<string, {
|
|
150
|
+
loading: boolean
|
|
151
|
+
}>
|
|
78
152
|
}
|
|
79
153
|
|
|
80
154
|
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
|