zmdms-webui 3.4.6 → 3.4.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.
- package/dist/es/applayout/index.css +1 -1
- package/dist/es/canvastable/canvasTable.js +52 -19
- package/dist/es/canvastable/hooks/renderers/DataRowRenderer.js +28 -8
- package/dist/es/canvastable/hooks/renderers/FixedRowRenderer.js +18 -2
- package/dist/es/canvastable/hooks/useTableState.js +153 -159
- package/dist/es/table/hooks.js +98 -44
- package/dist/es/table/table.js +24 -4
- package/dist/es/table/useColumns.js +3 -2
- package/dist/index.dark.css +2 -2
- package/dist/index.default.css +2 -2
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
.zmdms-container{background-color:#e9ecf3}.zmdms-container .zmdms-sider{background-color:#5b76f6;background-repeat:no-repeat;background-size:100% auto;background-size:cover;z-index:102}.zmdms-container .zmdms-content{background-color:#e9ecf3}.zmdms-container .zmdms-content--header{align-items:center;background:#fff;display:flex;height:48px;justify-content:space-between;line-height:48px;padding:0 0 0 10px}.zmdms-container .zmdms-content--header .ant-tabs{flex:1;margin-top:8px;width:calc(100% - 350px)}.zmdms-container .zmdms-content--header .ant-tabs.zmdms-content--header-tabs{width:300px}.zmdms-container .zmdms-content--header .ant-tabs .ant-tabs-tab>div{padding:0}.zmdms-container .zmdms-content--header .ant-tabs .ant-tabs-tab a{color:#768696;display:inline-block;padding:0 20px}.zmdms-container .zmdms-content--header .ant-tabs .ant-tabs-tab.ant-tabs-tab-with-remove a{padding:0 10px 0 20px}.zmdms-container .zmdms-content--header .ant-tabs .ant-tabs-nav{margin-bottom:0}.zmdms-container .zmdms-content--content{height:calc(100vh - 48px);position:relative}.zmdms-container .zmdms-content--header-info{color:#000000a6;display:flex;height:48px;max-width:350px}.zmdms-container .zmdms-content--header-info .full-screen{cursor:pointer;text-align:center;width:36px}.zmdms-container .zmdms-content--header-info .user-operation{align-items:center;cursor:pointer;display:flex;padding:0 12px}.zmdms-container .zmdms-content--header-info .user-operation:hover{background-color:#f7f7f7}.zmdms-container .zmdms-content--header-info .user-operation>span:last-child{color:#000000a6;display:inline-block;margin-left:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:70px}.zmdms-menu{display:flex;flex-direction:column;height:100vh}.zmdms-menu .zmdms-logo{align-items:center;display:block;display:flex;height:48px;padding:9px 0 5px}.zmdms-menu .zmdms-logo.zmdms-logo--line{position:relative;z-index:1000}.zmdms-menu .zmdms-logo.zmdms-logo--line:after{background:#505cbe;content:"";height:29px;position:absolute;right:-.5px;width:1px}.zmdms-menu .zmdms-logo>img{display:block;margin:0 auto;width:78px}.zmdms-menu .zmdms-menu--search{background-color:#5b8af666;position:relative}.zmdms-menu .zmdms-menu--search>input{background-color:#5b8af666;border:none;color:#fff;font-size:13px;height:36px;line-height:36px}.zmdms-menu .zmdms-menu--search>input::placeholder{color:#fff;font-size:13px}.zmdms-menu .zmdms-menu--search .zmdms-menu--search__icon{align-items:center;color:#fff;cursor:pointer;display:flex;font-size:16px;height:30px;justify-content:center;position:absolute;right:0;top:3px;width:30px}.zmdms-menu .zmdms-menu--main{background:#0000;border-right:none;flex:1;overflow-x:hidden;overflow-y:auto}.zmdms-menu .zmdms-menu--main.zmdms-menu--main-hide-bg .ant-menu-item-selected{background:#1566d2!important}.zmdms-menu .zmdms-menu--main.zmdms-menu--main-item-line .ant-menu-item{height:auto!important;line-height:20px!important;min-height:36px}.zmdms-menu .zmdms-menu--main.zmdms-menu--main-item-line .ant-menu-item .ant-menu-title-content{word-wrap:break-word;display:inline-block;height:auto!important;text-overflow:unset!important;white-space:pre-wrap;width:100%}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu,.zmdms-menu .zmdms-menu--main>.ant-menu-submenu.ant-menu-submenu-open>.ant-menu-submenu-title{color:#fff}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu>.ant-menu-submenu-title{align-items:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background-color:#5b76f5;background-color:#5b8af666;color:#ffffffa6;display:flex;font-size:13px;height:36px;line-height:36px;margin:0;padding:0}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-submenu-arrow{color:#ffffffa6;right:6px}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-title-content{flex:none;width:88%}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu>.ant-menu-submenu-title:hover,.zmdms-menu .zmdms-menu--main>.ant-menu-submenu>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow{color:#fff}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu .ant-menu-sub.ant-menu-inline{background:#0000}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu .ant-menu-sub>.ant-menu-item{align-items:center;color:#ffffffa6;display:flex;font-size:13px;height:36px;line-height:36px;margin:0}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu .ant-menu-sub>.ant-menu-item a{color:inherit}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu .ant-menu-sub>.ant-menu-item:active{background:#0000}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu .ant-menu-sub>.ant-menu-item:hover{color:#fff}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu .ant-menu-sub>.ant-menu-item:not(:last-child){margin-bottom:0}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu .ant-menu-sub>.ant-menu-item.ant-menu-item-selected{background:#5b76f5;color:#fff;width:100%}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu .ant-menu-sub>.ant-menu-item.ant-menu-item-selected:after{border-right:none}.zmdms-menu .zmdms-menu--main::-webkit-scrollbar{height:4px;width:6px}.zmdms-menu .zmdms-menu--main::-webkit-scrollbar-track{background:#fff0;border-radius:4px}.zmdms-menu .zmdms-menu--main::-webkit-scrollbar-thumb{background:#5b76f6;border-radius:4px}.zmdms-menu .zmdms-menu--main::-webkit-scrollbar-thumb:hover{background:#5b76f6}.zmdms-menu .zmdms-menu--main>.ant-menu-item{align-items:center;color:#ffffffa6;display:flex;font-size:13px;height:36px;line-height:36px;margin:0}.zmdms-menu .zmdms-menu--main>.ant-menu-item a{color:inherit}.zmdms-menu .zmdms-menu--main>.ant-menu-item:active{background:#0000}.zmdms-menu .zmdms-menu--main>.ant-menu-item:hover{color:#fff}.zmdms-menu .zmdms-menu--main>.ant-menu-item:not(:last-child){margin-bottom:0}.zmdms-menu .zmdms-menu--main>.ant-menu-item.ant-menu-item-selected{background:#5b76f6;color:#fff;width:100%}.zmdms-menu .zmdms-menu--main>.ant-menu-item.ant-menu-item-selected:after{border-right:none}.zmdms-menu--sub{padding:0}.zmdms-menu--sub .ant-drawer-content{background:#0000;background-position:100%;background-repeat:no-repeat;background-size:cover;overflow:hidden}.zmdms-menu--sub .ant-drawer-content .ant-menu{background:#0000;color:#fff}.zmdms-menu--sub.ant-drawer-left>.ant-drawer-content-wrapper{left:-1px}.zmdms-menu--sub .ant-drawer-header{background:#0000;border-bottom:none;padding:0}.zmdms-menu--sub .ant-drawer-header .ant-drawer-header-title{align-items:center;color:#fff;display:flex;height:48px;justify-content:center}.zmdms-menu--sub .ant-drawer-header .ant-drawer-header-title .ant-drawer-title{align-items:center;color:#fff;display:flex;font-size:14px;justify-content:center}.zmdms-menu--sub .ant-drawer-header .ant-drawer-header-title .ant-drawer-title img{width:118px}.zmdms-menu--sub .ant-drawer-body{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#5b76f566;font-size:13px;overflow-x:hidden;padding:0}.zmdms-menu--sub .ant-drawer-body::-webkit-scrollbar{height:4px;width:6px}.zmdms-menu--sub .ant-drawer-body::-webkit-scrollbar-track{background:#fff0;border-radius:4px}.zmdms-menu--sub .ant-drawer-body::-webkit-scrollbar-thumb{background:#5b76f6;border-radius:4px}.zmdms-menu--sub .ant-drawer-body::-webkit-scrollbar-thumb:hover{background:#5b76f6}.zmdms-menu--sub .ant-drawer-body .ant-menu-submenu.ant-menu-submenu-inline{border-bottom:1px solid #8d9eff47;padding-bottom:0}.zmdms-menu--sub .ant-drawer-body .ant-menu-sub.ant-menu-inline{background:#0000;padding:0 10px}.zmdms-menu--sub .ant-drawer-body .ant-menu-item,.zmdms-menu--sub .ant-drawer-body .ant-menu-sub.ant-menu-inline>.ant-menu-item{align-items:center;border-radius:4px;color:#fff;display:flex;font-size:13px;height:30px;line-height:30px;margin:0}.zmdms-menu--sub .ant-drawer-body .ant-menu-item:not(:last-child),.zmdms-menu--sub .ant-drawer-body .ant-menu-sub.ant-menu-inline>.ant-menu-item:not(:last-child){margin-bottom:0}.zmdms-menu--sub .ant-drawer-body .ant-menu-item a,.zmdms-menu--sub .ant-drawer-body .ant-menu-sub.ant-menu-inline>.ant-menu-item a{color:#fff}.zmdms-menu--sub .ant-drawer-body .ant-menu-item:active,.zmdms-menu--sub .ant-drawer-body .ant-menu-sub.ant-menu-inline>.ant-menu-item:active{background:#0000}.zmdms-menu--sub .ant-drawer-body .ant-menu-item:last-child,.zmdms-menu--sub .ant-drawer-body .ant-menu-sub.ant-menu-inline>.ant-menu-item:last-child{margin-bottom:10px}.zmdms-menu--sub .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title,.zmdms-menu--sub .ant-drawer-body .ant-menu-submenu-title{color:#fff;font-size:13px;font-weight:700;height:30px;line-height:30px}.zmdms-menu--sub .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-title-content>a,.zmdms-menu--sub .ant-drawer-body .ant-menu-submenu-title .ant-menu-title-content>a{color:#fff}.zmdms-menu--sub .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-title-content>a:hover,.zmdms-menu--sub .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-title-content>a:hover .ant-menu-submenu-arrow,.zmdms-menu--sub .ant-drawer-body .ant-menu-submenu-title .ant-menu-title-content>a:hover,.zmdms-menu--sub .ant-drawer-body .ant-menu-submenu-title .ant-menu-title-content>a:hover .ant-menu-submenu-arrow{color:#5b76f6}.zmdms-menu--sub .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-title-content>a:active,.zmdms-menu--sub .ant-drawer-body .ant-menu-submenu-title .ant-menu-title-content>a:active{background:#0000}.zmdms-menu--sub .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-submenu-arrow,.zmdms-menu--sub .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title:hover,.zmdms-menu--sub .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow,.zmdms-menu--sub .ant-drawer-body .ant-menu-submenu-title .ant-menu-submenu-arrow,.zmdms-menu--sub .ant-drawer-body .ant-menu-submenu-title:hover,.zmdms-menu--sub .ant-drawer-body .ant-menu-submenu-title:hover .ant-menu-submenu-arrow{color:#fff}.zmdms-menu--sub .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title:active,.zmdms-menu--sub .ant-drawer-body .ant-menu-submenu-title:active{background:#0000}.zmdms-menu--sub .ant-drawer-body .ant-menu-root>.ant-menu-item-only-child{margin-top:2px}.zmdms-menu--sub .ant-drawer-body .ant-menu-root>.ant-menu-item-only-child .ant-menu-title-content{font-weight:700}.zmdms-menu--sub .ant-drawer-body .ant-menu-item-selected{background-color:#5b76f5!important;color:#fff}.zmdms-menu--sub .ant-drawer-body .ant-menu-item-selected:after{border-right:none}.zmdms-menu--sub .ant-drawer-footer{align-items:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#5b76f566;border-top:1px solid #5670ea;display:flex;height:40px;justify-content:center;line-height:40px;padding:3px 10px}.zmdms-menu--sub .ant-drawer-footer .zt-btn-link{color:#fff}.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-content,.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-content .ant-menu{background:#fff}.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-header{background:#fff;border-bottom:1px solid #ebf3fe}.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body{-webkit-backdrop-filter:none;backdrop-filter:none;background:#fff}.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body::-webkit-scrollbar{height:4px;width:6px}.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body::-webkit-scrollbar-track{background:#fff;border-radius:4px}.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body::-webkit-scrollbar-thumb{background:#8695a1;border-radius:4px}.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body::-webkit-scrollbar-thumb:hover{background:#727e88}.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-item,.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-item a,.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-sub.ant-menu-inline>.ant-menu-item,.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-sub.ant-menu-inline>.ant-menu-item a{color:#000000d9}.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-item a:hover,.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-sub.ant-menu-inline>.ant-menu-item a:hover{color:#5b76f6}.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title,.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-submenu-title{color:#000000a6;font-size:13px;font-weight:700;height:30px;line-height:30px}.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-title-content>a,.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-submenu-title .ant-menu-title-content>a{color:#fff}.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-title-content>a:hover,.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-title-content>a:hover .ant-menu-submenu-arrow,.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-submenu-title .ant-menu-title-content>a:hover,.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-submenu-title .ant-menu-title-content>a:hover .ant-menu-submenu-arrow{color:#5b76f6}.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-title-content>a:active,.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-submenu-title .ant-menu-title-content>a:active{background:#0000}.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-submenu-arrow,.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-submenu-title .ant-menu-submenu-arrow{color:#000000d9}.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title:hover,.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow,.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-submenu-title:hover,.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-submenu-title:hover .ant-menu-submenu-arrow{color:#5b76f6}.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title:active,.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-submenu-title:active{background:#0000}.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-item-selected{background-color:#e6f7ff!important;color:#4285f4!important}.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-footer{-webkit-backdrop-filter:none;backdrop-filter:none;background:none;border-top:1px solid #ebf3fe}.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-footer .zt-btn-link{color:#4285f4!important}.zmdms-menu--sub.zmdms-menu--sub-item-line .ant-menu-item{height:auto!important;line-height:20px!important;min-height:30px}.zmdms-menu--sub.zmdms-menu--sub-item-line .ant-menu-item .ant-menu-title-content{word-wrap:break-word;display:inline-block;height:auto!important;text-overflow:unset!important;white-space:pre-wrap;width:100%}.logout-spin{background-color:#ffffffb3;bottom:0;left:0;padding-top:100px;position:fixed;right:0;top:0;z-index:1000}
|
|
1
|
+
.zmdms-container{background-color:#e9ecf3}.zmdms-container .zmdms-sider{background-color:#5b76f6;background-repeat:no-repeat;background-size:100% auto;background-size:cover;z-index:102}.zmdms-container .zmdms-content{background-color:#e9ecf3}.zmdms-container .zmdms-content--header{align-items:center;background:#fff;display:flex;height:48px;justify-content:space-between;line-height:48px;padding:0 0 0 10px}.zmdms-container .zmdms-content--header .ant-tabs{flex:1;margin-top:8px;width:calc(100% - 350px)}.zmdms-container .zmdms-content--header .ant-tabs.zmdms-content--header-tabs{width:300px}.zmdms-container .zmdms-content--header .ant-tabs .ant-tabs-tab>div{padding:0}.zmdms-container .zmdms-content--header .ant-tabs .ant-tabs-tab a{color:#768696;display:inline-block;padding:0 20px}.zmdms-container .zmdms-content--header .ant-tabs .ant-tabs-tab.ant-tabs-tab-with-remove a{padding:0 10px 0 20px}.zmdms-container .zmdms-content--header .ant-tabs .ant-tabs-nav{margin-bottom:0}.zmdms-container .zmdms-content--content{height:calc(100vh - 48px);position:relative}.zmdms-container .zmdms-content--header-info{color:#000000a6;display:flex;height:48px;max-width:350px}.zmdms-container .zmdms-content--header-info .full-screen{cursor:pointer;text-align:center;width:36px}.zmdms-container .zmdms-content--header-info .user-operation{align-items:center;cursor:pointer;display:flex;padding:0 12px}.zmdms-container .zmdms-content--header-info .user-operation:hover{background-color:#f7f7f7}.zmdms-container .zmdms-content--header-info .user-operation>span:last-child{color:#000000a6;display:inline-block;margin-left:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:70px}.zmdms-menu{display:flex;flex-direction:column;height:100vh}.zmdms-menu .zmdms-logo{align-items:center;display:block;display:flex;height:48px;padding:9px 0 5px}.zmdms-menu .zmdms-logo.zmdms-logo--line{position:relative;z-index:1000}.zmdms-menu .zmdms-logo.zmdms-logo--line:after{background:#505cbe;content:"";height:29px;position:absolute;right:-.5px;width:1px}.zmdms-menu .zmdms-logo>img{display:block;margin:0 auto;width:78px}.zmdms-menu .zmdms-menu--search{background-color:#5b8af666;position:relative}.zmdms-menu .zmdms-menu--search>input{background-color:#5b8af666;border:none;color:#fff;font-size:13px;height:36px;line-height:36px}.zmdms-menu .zmdms-menu--search>input::placeholder{color:#fff;font-size:13px}.zmdms-menu .zmdms-menu--search .zmdms-menu--search__icon{align-items:center;color:#fff;cursor:pointer;display:flex;font-size:16px;height:30px;justify-content:center;position:absolute;right:0;top:3px;width:30px}.zmdms-menu .zmdms-menu--main{background:#0000;border-right:none;flex:1;overflow-x:hidden;overflow-y:auto}.zmdms-menu .zmdms-menu--main.zmdms-menu--main-hide-bg .ant-menu-item-selected{background:#1566d2!important}.zmdms-menu .zmdms-menu--main.zmdms-menu--main-item-line .ant-menu-item{height:auto!important;line-height:20px!important;min-height:36px}.zmdms-menu .zmdms-menu--main.zmdms-menu--main-item-line .ant-menu-item .ant-menu-title-content{word-wrap:break-word;display:inline-block;height:auto!important;text-overflow:unset!important;white-space:pre-wrap;width:100%}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu,.zmdms-menu .zmdms-menu--main>.ant-menu-submenu.ant-menu-submenu-open>.ant-menu-submenu-title{color:#fff}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu>.ant-menu-submenu-title{align-items:center;backdrop-filter:blur(4px);background-color:#5b76f5;background-color:#5b8af666;color:#ffffffa6;display:flex;font-size:13px;height:36px;line-height:36px;margin:0;padding:0}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-submenu-arrow{color:#ffffffa6;right:6px}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-title-content{flex:none;width:88%}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu>.ant-menu-submenu-title:hover,.zmdms-menu .zmdms-menu--main>.ant-menu-submenu>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow{color:#fff}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu .ant-menu-sub.ant-menu-inline{background:#0000}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu .ant-menu-sub>.ant-menu-item{align-items:center;color:#ffffffa6;display:flex;font-size:13px;height:36px;line-height:36px;margin:0}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu .ant-menu-sub>.ant-menu-item a{color:inherit}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu .ant-menu-sub>.ant-menu-item:active{background:#0000}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu .ant-menu-sub>.ant-menu-item:hover{color:#fff}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu .ant-menu-sub>.ant-menu-item:not(:last-child){margin-bottom:0}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu .ant-menu-sub>.ant-menu-item.ant-menu-item-selected{background:#5b76f5;color:#fff;width:100%}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu .ant-menu-sub>.ant-menu-item.ant-menu-item-selected:after{border-right:none}.zmdms-menu .zmdms-menu--main::-webkit-scrollbar{height:4px;width:6px}.zmdms-menu .zmdms-menu--main::-webkit-scrollbar-track{background:#fff0;border-radius:4px}.zmdms-menu .zmdms-menu--main::-webkit-scrollbar-thumb{background:#5b76f6;border-radius:4px}.zmdms-menu .zmdms-menu--main::-webkit-scrollbar-thumb:hover{background:#5b76f6}.zmdms-menu .zmdms-menu--main>.ant-menu-item{align-items:center;color:#ffffffa6;display:flex;font-size:13px;height:36px;line-height:36px;margin:0}.zmdms-menu .zmdms-menu--main>.ant-menu-item a{color:inherit}.zmdms-menu .zmdms-menu--main>.ant-menu-item:active{background:#0000}.zmdms-menu .zmdms-menu--main>.ant-menu-item:hover{color:#fff}.zmdms-menu .zmdms-menu--main>.ant-menu-item:not(:last-child){margin-bottom:0}.zmdms-menu .zmdms-menu--main>.ant-menu-item.ant-menu-item-selected{background:#5b76f6;color:#fff;width:100%}.zmdms-menu .zmdms-menu--main>.ant-menu-item.ant-menu-item-selected:after{border-right:none}.zmdms-menu--sub{padding:0}.zmdms-menu--sub .ant-drawer-content{background:#0000;background-position:100%;background-repeat:no-repeat;background-size:cover;overflow:hidden}.zmdms-menu--sub .ant-drawer-content .ant-menu{background:#0000;color:#fff}.zmdms-menu--sub.ant-drawer-left>.ant-drawer-content-wrapper{left:-1px}.zmdms-menu--sub .ant-drawer-header{background:#0000;border-bottom:none;padding:0}.zmdms-menu--sub .ant-drawer-header .ant-drawer-header-title{align-items:center;color:#fff;display:flex;height:48px;justify-content:center}.zmdms-menu--sub .ant-drawer-header .ant-drawer-header-title .ant-drawer-title{align-items:center;color:#fff;display:flex;font-size:14px;justify-content:center}.zmdms-menu--sub .ant-drawer-header .ant-drawer-header-title .ant-drawer-title img{width:118px}.zmdms-menu--sub .ant-drawer-body{backdrop-filter:blur(2px);background:#5b76f566;font-size:13px;overflow-x:hidden;padding:0}.zmdms-menu--sub .ant-drawer-body::-webkit-scrollbar{height:4px;width:6px}.zmdms-menu--sub .ant-drawer-body::-webkit-scrollbar-track{background:#fff0;border-radius:4px}.zmdms-menu--sub .ant-drawer-body::-webkit-scrollbar-thumb{background:#5b76f6;border-radius:4px}.zmdms-menu--sub .ant-drawer-body::-webkit-scrollbar-thumb:hover{background:#5b76f6}.zmdms-menu--sub .ant-drawer-body .ant-menu-submenu.ant-menu-submenu-inline{border-bottom:1px solid #8d9eff47;padding-bottom:0}.zmdms-menu--sub .ant-drawer-body .ant-menu-sub.ant-menu-inline{background:#0000;padding:0 10px}.zmdms-menu--sub .ant-drawer-body .ant-menu-item,.zmdms-menu--sub .ant-drawer-body .ant-menu-sub.ant-menu-inline>.ant-menu-item{align-items:center;border-radius:4px;color:#fff;display:flex;font-size:13px;height:30px;line-height:30px;margin:0}.zmdms-menu--sub .ant-drawer-body .ant-menu-item:not(:last-child),.zmdms-menu--sub .ant-drawer-body .ant-menu-sub.ant-menu-inline>.ant-menu-item:not(:last-child){margin-bottom:0}.zmdms-menu--sub .ant-drawer-body .ant-menu-item a,.zmdms-menu--sub .ant-drawer-body .ant-menu-sub.ant-menu-inline>.ant-menu-item a{color:#fff}.zmdms-menu--sub .ant-drawer-body .ant-menu-item:active,.zmdms-menu--sub .ant-drawer-body .ant-menu-sub.ant-menu-inline>.ant-menu-item:active{background:#0000}.zmdms-menu--sub .ant-drawer-body .ant-menu-item:last-child,.zmdms-menu--sub .ant-drawer-body .ant-menu-sub.ant-menu-inline>.ant-menu-item:last-child{margin-bottom:10px}.zmdms-menu--sub .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title,.zmdms-menu--sub .ant-drawer-body .ant-menu-submenu-title{color:#fff;font-size:13px;font-weight:700;height:30px;line-height:30px}.zmdms-menu--sub .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-title-content>a,.zmdms-menu--sub .ant-drawer-body .ant-menu-submenu-title .ant-menu-title-content>a{color:#fff}.zmdms-menu--sub .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-title-content>a:hover,.zmdms-menu--sub .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-title-content>a:hover .ant-menu-submenu-arrow,.zmdms-menu--sub .ant-drawer-body .ant-menu-submenu-title .ant-menu-title-content>a:hover,.zmdms-menu--sub .ant-drawer-body .ant-menu-submenu-title .ant-menu-title-content>a:hover .ant-menu-submenu-arrow{color:#5b76f6}.zmdms-menu--sub .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-title-content>a:active,.zmdms-menu--sub .ant-drawer-body .ant-menu-submenu-title .ant-menu-title-content>a:active{background:#0000}.zmdms-menu--sub .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-submenu-arrow,.zmdms-menu--sub .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title:hover,.zmdms-menu--sub .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow,.zmdms-menu--sub .ant-drawer-body .ant-menu-submenu-title .ant-menu-submenu-arrow,.zmdms-menu--sub .ant-drawer-body .ant-menu-submenu-title:hover,.zmdms-menu--sub .ant-drawer-body .ant-menu-submenu-title:hover .ant-menu-submenu-arrow{color:#fff}.zmdms-menu--sub .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title:active,.zmdms-menu--sub .ant-drawer-body .ant-menu-submenu-title:active{background:#0000}.zmdms-menu--sub .ant-drawer-body .ant-menu-root>.ant-menu-item-only-child{margin-top:2px}.zmdms-menu--sub .ant-drawer-body .ant-menu-root>.ant-menu-item-only-child .ant-menu-title-content{font-weight:700}.zmdms-menu--sub .ant-drawer-body .ant-menu-item-selected{background-color:#5b76f5!important;color:#fff}.zmdms-menu--sub .ant-drawer-body .ant-menu-item-selected:after{border-right:none}.zmdms-menu--sub .ant-drawer-footer{align-items:center;backdrop-filter:blur(2px);background:#5b76f566;border-top:1px solid #5670ea;display:flex;height:40px;justify-content:center;line-height:40px;padding:3px 10px}.zmdms-menu--sub .ant-drawer-footer .zt-btn-link{color:#fff}.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-content,.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-content .ant-menu{background:#fff}.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-header{background:#fff;border-bottom:1px solid #ebf3fe}.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body{backdrop-filter:none;background:#fff}.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body::-webkit-scrollbar{height:4px;width:6px}.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body::-webkit-scrollbar-track{background:#fff;border-radius:4px}.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body::-webkit-scrollbar-thumb{background:#8695a1;border-radius:4px}.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body::-webkit-scrollbar-thumb:hover{background:#727e88}.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-item,.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-item a,.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-sub.ant-menu-inline>.ant-menu-item,.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-sub.ant-menu-inline>.ant-menu-item a{color:#000000d9}.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-item a:hover,.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-sub.ant-menu-inline>.ant-menu-item a:hover{color:#5b76f6}.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title,.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-submenu-title{color:#000000a6;font-size:13px;font-weight:700;height:30px;line-height:30px}.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-title-content>a,.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-submenu-title .ant-menu-title-content>a{color:#fff}.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-title-content>a:hover,.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-title-content>a:hover .ant-menu-submenu-arrow,.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-submenu-title .ant-menu-title-content>a:hover,.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-submenu-title .ant-menu-title-content>a:hover .ant-menu-submenu-arrow{color:#5b76f6}.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-title-content>a:active,.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-submenu-title .ant-menu-title-content>a:active{background:#0000}.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-submenu-arrow,.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-submenu-title .ant-menu-submenu-arrow{color:#000000d9}.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title:hover,.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow,.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-submenu-title:hover,.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-submenu-title:hover .ant-menu-submenu-arrow{color:#5b76f6}.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title:active,.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-submenu-title:active{background:#0000}.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-body .ant-menu-item-selected{background-color:#e6f7ff!important;color:#4285f4!important}.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-footer{backdrop-filter:none;background:none;border-top:1px solid #ebf3fe}.zmdms-menu--sub.zmdms-menu--sub-hide-bg .ant-drawer-footer .zt-btn-link{color:#4285f4!important}.zmdms-menu--sub.zmdms-menu--sub-item-line .ant-menu-item{height:auto!important;line-height:20px!important;min-height:30px}.zmdms-menu--sub.zmdms-menu--sub-item-line .ant-menu-item .ant-menu-title-content{word-wrap:break-word;display:inline-block;height:auto!important;text-overflow:unset!important;white-space:pre-wrap;width:100%}.logout-spin{background-color:#ffffffb3;bottom:0;left:0;padding-top:100px;position:fixed;right:0;top:0;z-index:1000}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __assign } from '../_virtual/_tslib.js';
|
|
1
|
+
import { __spreadArray, __assign } from '../_virtual/_tslib.js';
|
|
2
2
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
3
3
|
import { useRef, useState, useCallback, useMemo, useEffect, useImperativeHandle } from 'react';
|
|
4
4
|
import { Spin } from 'antd';
|
|
@@ -11,7 +11,7 @@ import CanvasTableMenu from './components/CanvasTableMenu.js';
|
|
|
11
11
|
import './components/ColumnDynamic.js';
|
|
12
12
|
import HeaderOverlay from './components/HeaderOverlay.js';
|
|
13
13
|
import { useContextMenu as Fe } from '../node_modules/react-contexify/dist/index.js';
|
|
14
|
-
import { useTableState } from './hooks/useTableState.js';
|
|
14
|
+
import { useTableState, processData, generateAutoFilters } from './hooks/useTableState.js';
|
|
15
15
|
import { useTableSelection } from './hooks/useTableSelection.js';
|
|
16
16
|
import { useExpandable } from './hooks/useExpandable.js';
|
|
17
17
|
import { useTableRender } from './hooks/useTableRender.js';
|
|
@@ -32,9 +32,9 @@ import { SCROLLBAR_SIZE } from './utils/constants.js';
|
|
|
32
32
|
import { calculateTotalHeight, calculateColumnRenderInfos, calculateTotalWidth } from './utils/tableCalculations.js';
|
|
33
33
|
import 'zmdms-utils';
|
|
34
34
|
import 'dayjs';
|
|
35
|
-
import { TABLE_DYNAMIC_KEY } from '../table/constant.js';
|
|
35
|
+
import { IS_SUMMARY, TABLE_DYNAMIC_KEY } from '../table/constant.js';
|
|
36
36
|
import { useDynamicListByColumns } from '../table/useDynamicListByColumns.js';
|
|
37
|
-
import { useAutoMerge } from '../table/hooks.js';
|
|
37
|
+
import { useAutoMerge, recalcMergeRowSpans } from '../table/hooks.js';
|
|
38
38
|
import { useExcelExport } from '../table/excel.js';
|
|
39
39
|
import { getTableColumns } from '../table/utils.js';
|
|
40
40
|
import DynamicSetting from '../dynamicsetting/dynamicSetting.js';
|
|
@@ -96,7 +96,7 @@ function CanvasTable(props) {
|
|
|
96
96
|
rowSelection: rowSelection,
|
|
97
97
|
onFilterChange: onFilterChange,
|
|
98
98
|
isAutoMerge: isAutoMerge,
|
|
99
|
-
}), state = _0.state, setState = _0.setState,
|
|
99
|
+
}), state = _0.state, setState = _0.setState, handleFilterChange = _0.handleFilterChange, closeFilterPopover = _0.closeFilterPopover;
|
|
100
100
|
// 树形展开管理
|
|
101
101
|
var _1 = useExpandable({
|
|
102
102
|
dataSource: dataSource,
|
|
@@ -108,7 +108,7 @@ function CanvasTable(props) {
|
|
|
108
108
|
? { field: state.sortField, order: state.sortOrder }
|
|
109
109
|
: undefined;
|
|
110
110
|
}, [state.sortOrder, state.sortField]);
|
|
111
|
-
var _2 = useAutoMerge(
|
|
111
|
+
var _2 = useAutoMerge(dataSource, processedColumnsOld, {
|
|
112
112
|
isAutoMerge: isAutoMerge,
|
|
113
113
|
isDimensionDynamic: isDimensionDynamic,
|
|
114
114
|
isDimensionMergeChildren: isDimensionMergeChildren,
|
|
@@ -122,17 +122,50 @@ function CanvasTable(props) {
|
|
|
122
122
|
}
|
|
123
123
|
return newDataSource;
|
|
124
124
|
}, [hasExpandable, flattenedData, newDataSource]);
|
|
125
|
-
//
|
|
125
|
+
// 生成合计行和最终数据源(基于全量数据,合计值不随筛选变化)
|
|
126
126
|
var _3 = useSummaryRow({
|
|
127
127
|
columns: processedColumns,
|
|
128
128
|
dataSource: expandedDataSource,
|
|
129
|
-
}), finalDataSource = _3.finalDataSource,
|
|
129
|
+
}), finalDataSource = _3.finalDataSource, hasSummaryRowConfig = _3.hasSummaryRow;
|
|
130
|
+
// 基于含合计行的全量数据筛选
|
|
131
|
+
// 末尾合计行(总计)始终保留在最后,不参与筛选
|
|
132
|
+
var processedDataSource = useMemo(function () {
|
|
133
|
+
// 分离末尾合计行(始终保留,不参与筛选)
|
|
134
|
+
var lastRow = finalDataSource[finalDataSource.length - 1];
|
|
135
|
+
var summaryRow = hasSummaryRowConfig && (lastRow === null || lastRow === void 0 ? void 0 : lastRow[IS_SUMMARY]) ? lastRow : null;
|
|
136
|
+
var dataToFilter = summaryRow
|
|
137
|
+
? finalDataSource.slice(0, -1)
|
|
138
|
+
: finalDataSource;
|
|
139
|
+
// 筛选(不含末尾合计行)
|
|
140
|
+
var result = processData(dataToFilter, state.filters, processedColumns, state.sortField, state.sortOrder, isAutoMerge);
|
|
141
|
+
// 仅在筛选后行数减少时重新计算合并 rowSpan(筛选前保持原始逻辑)
|
|
142
|
+
if (isAutoMerge && result.length < dataToFilter.length) {
|
|
143
|
+
result = recalcMergeRowSpans(result);
|
|
144
|
+
}
|
|
145
|
+
// 末尾合计行始终追加到末尾
|
|
146
|
+
if (summaryRow) {
|
|
147
|
+
result = __spreadArray(__spreadArray([], result, true), [summaryRow], false);
|
|
148
|
+
}
|
|
149
|
+
return result;
|
|
150
|
+
}, [
|
|
151
|
+
finalDataSource,
|
|
152
|
+
state.filters,
|
|
153
|
+
processedColumns,
|
|
154
|
+
state.sortField,
|
|
155
|
+
state.sortOrder,
|
|
156
|
+
isAutoMerge,
|
|
157
|
+
hasSummaryRowConfig,
|
|
158
|
+
]);
|
|
159
|
+
// 是否存在末尾合计行(始终保留)
|
|
160
|
+
var hasSummaryRow = hasSummaryRowConfig;
|
|
161
|
+
// 基于含合计行的全量数据源生成筛选候选值
|
|
162
|
+
var autoGeneratedFilters = useMemo(function () { return generateAutoFilters(finalDataSource, processedColumns); }, [finalDataSource, processedColumns]);
|
|
130
163
|
// 用于存储计算后的表头高度(用于自动高度的精确计算)
|
|
131
164
|
var _4 = useState(undefined), preciseHeaderHeight = _4[0], setPreciseHeaderHeight = _4[1];
|
|
132
165
|
// 用于存储是否需要横向滚动条(用于自动高度的精确计算)
|
|
133
166
|
var _5 = useState(false), needHorizontalScrollbar = _5[0], setNeedHorizontalScrollbar = _5[1];
|
|
134
167
|
// 自动高度计算(需要在容器尺寸计算之前)
|
|
135
|
-
var autoHeight = useCanvasTableAutoHeight(isAutoScrollY, autoScrollYMarginBottom, canvasTableId,
|
|
168
|
+
var autoHeight = useCanvasTableAutoHeight(isAutoScrollY, autoScrollYMarginBottom, canvasTableId, processedDataSource.length, // 数据行数(用于 content 模式)
|
|
136
169
|
headerHeight, // 表头基础高度(用于 content 模式的初始计算)
|
|
137
170
|
rowHeight, // 行高(用于 content 模式)
|
|
138
171
|
preciseHeaderHeight, // 计算后的表头高度(用于 content 模式的精确计算)
|
|
@@ -152,7 +185,7 @@ function CanvasTable(props) {
|
|
|
152
185
|
var columnRenderInfos = useMemo(function () {
|
|
153
186
|
// 计算原始总高度
|
|
154
187
|
var tempTotalHeight = calculateTotalHeight(headerHeight, // 使用基础表头高度做粗略判断
|
|
155
|
-
|
|
188
|
+
processedDataSource.length, rowHeight);
|
|
156
189
|
// 判断是否需要垂直滚动条
|
|
157
190
|
var needVerticalScrollbar = tempTotalHeight > containerHeight;
|
|
158
191
|
// 第二步:计算实际可用宽度(如果需要垂直滚动条,减去滚动条宽度)
|
|
@@ -166,7 +199,7 @@ function CanvasTable(props) {
|
|
|
166
199
|
containerWidth,
|
|
167
200
|
containerHeight,
|
|
168
201
|
headerHeight,
|
|
169
|
-
|
|
202
|
+
processedDataSource.length,
|
|
170
203
|
rowHeight,
|
|
171
204
|
manuallyResizedColumnKeys,
|
|
172
205
|
]);
|
|
@@ -186,7 +219,7 @@ function CanvasTable(props) {
|
|
|
186
219
|
}, [isAutoScrollY, calculatedHeaderHeight, preciseHeaderHeight]);
|
|
187
220
|
// 计算合并单元格信息
|
|
188
221
|
var mergeCellMap = useMergeCells({
|
|
189
|
-
dataSource:
|
|
222
|
+
dataSource: processedDataSource,
|
|
190
223
|
columns: processedColumns,
|
|
191
224
|
isIndexMerge: isIndexMerge,
|
|
192
225
|
isSelectionMerge: isSelectionMerge,
|
|
@@ -194,8 +227,8 @@ function CanvasTable(props) {
|
|
|
194
227
|
// 计算总宽度和总高度
|
|
195
228
|
var totalWidth = useMemo(function () { return calculateTotalWidth(columnRenderInfos); }, [columnRenderInfos]);
|
|
196
229
|
var totalHeight = useMemo(function () {
|
|
197
|
-
return calculateTotalHeight(calculatedHeaderHeight,
|
|
198
|
-
}, [calculatedHeaderHeight,
|
|
230
|
+
return calculateTotalHeight(calculatedHeaderHeight, processedDataSource.length, rowHeight);
|
|
231
|
+
}, [calculatedHeaderHeight, processedDataSource.length, rowHeight]);
|
|
199
232
|
// 计算滚动条指标
|
|
200
233
|
var _6 = useScrollbarMetrics({
|
|
201
234
|
containerWidth: containerWidth,
|
|
@@ -326,7 +359,7 @@ function CanvasTable(props) {
|
|
|
326
359
|
// 复制到剪贴板
|
|
327
360
|
var _10 = useCopyToClipboard({
|
|
328
361
|
cellSelection: state.cellSelection,
|
|
329
|
-
processedDataSource:
|
|
362
|
+
processedDataSource: processedDataSource,
|
|
330
363
|
columns: processedColumns,
|
|
331
364
|
containerRef: containerRef,
|
|
332
365
|
}), getSelectedCellsText = _10.getSelectedCellsText, copyToClipboard = _10.copyToClipboard;
|
|
@@ -354,7 +387,7 @@ function CanvasTable(props) {
|
|
|
354
387
|
setState: setState,
|
|
355
388
|
scrollState: scrollState,
|
|
356
389
|
setScrollState: setScrollState,
|
|
357
|
-
processedDataSource:
|
|
390
|
+
processedDataSource: processedDataSource,
|
|
358
391
|
columnRenderInfos: columnRenderInfos,
|
|
359
392
|
columns: processedColumns,
|
|
360
393
|
expandable: expandable,
|
|
@@ -401,13 +434,13 @@ function CanvasTable(props) {
|
|
|
401
434
|
summaryFixed: summaryFixed,
|
|
402
435
|
}), handleCanvasMouseDown = _11.handleCanvasMouseDown, handleCanvasMouseMove = _11.handleCanvasMouseMove, handleCanvasMouseUp = _11.handleCanvasMouseUp, handleCanvasMouseLeave = _11.handleCanvasMouseLeave, handleCanvasContextMenu = _11.handleCanvasContextMenu;
|
|
403
436
|
// 渲染表格
|
|
404
|
-
useTableRender(__assign(__assign({ canvasRef: canvasRef, processedDataSource:
|
|
437
|
+
useTableRender(__assign(__assign({ canvasRef: canvasRef, processedDataSource: processedDataSource, columnRenderInfos: columnRenderInfos, columns: processedColumns, // 传递原始columns用于渲染多级表头
|
|
405
438
|
state: state, scrollState: scrollState, rowSelection: rowSelection, containerWidth: containerWidth, containerHeight: containerHeight, headerHeight: calculatedHeaderHeight, baseHeaderHeight: headerHeight, // 传入原始基础高度用于计算每层高度
|
|
406
439
|
rowHeight: rowHeight, bordered: bordered, striped: striped, headerAlign: headerAlign }, scrollbarMetrics), { getRowKey: getRowKey, resizeState: resizeState, getColumnWidth: getColumnWidth, RESIZE_HANDLE_WIDTH: RESIZE_HANDLE_WIDTH, mergeCellMap: mergeCellMap, hasSummaryRow: hasSummaryRow, fixedRowsCount: fixedRowsCount, fixedRowsConfig: fixedRowsConfig, summaryFixed: summaryFixed, expandable: expandable, flattenedData: flattenedData }));
|
|
407
440
|
// 单元格覆盖层
|
|
408
441
|
var cellOverlays = useTableCellOverlay({
|
|
409
442
|
canvasRef: canvasRef,
|
|
410
|
-
processedDataSource:
|
|
443
|
+
processedDataSource: processedDataSource,
|
|
411
444
|
columnRenderInfos: columnRenderInfos,
|
|
412
445
|
scrollState: scrollState,
|
|
413
446
|
containerWidth: containerWidth,
|
|
@@ -570,7 +603,7 @@ function CanvasTable(props) {
|
|
|
570
603
|
WebkitFontSmoothing: "antialiased",
|
|
571
604
|
MozOsxFontSmoothing: "grayscale",
|
|
572
605
|
textRendering: "optimizeLegibility",
|
|
573
|
-
} }), dynamicKey ? (jsx(DynamicSetting, { parentDynamicKey: TABLE_DYNAMIC_KEY, dynamicKey: dynamicKey, defaultList: defaultDynamicList, onCurrentListChange: onCurrentListChange, ref: dynamicSettingRef, hiddenOperationIcon: true, isMore: true, isFixed: true, isDimensionDynamic: isDimensionDynamic })) : null, jsx(EmptyPlaceholder, { visible:
|
|
606
|
+
} }), dynamicKey ? (jsx(DynamicSetting, { parentDynamicKey: TABLE_DYNAMIC_KEY, dynamicKey: dynamicKey, defaultList: defaultDynamicList, onCurrentListChange: onCurrentListChange, ref: dynamicSettingRef, hiddenOperationIcon: true, isMore: true, isFixed: true, isDimensionDynamic: isDimensionDynamic })) : null, jsx(EmptyPlaceholder, { visible: processedDataSource.length === 0, text: emptyText, headerHeight: calculatedHeaderHeight }), jsx(HeaderOverlay, { overlays: headerOverlays }), jsx(CellOverlay, { overlays: cellOverlays }), filterPopoverElement, jsx(Tooltip, { visible: state.tooltip.visible, content: state.tooltip.content, position: state.tooltip.position }), jsx(BadgePopover, { visible: state.badgePopover.visible, content: state.badgePopover.content, position: state.badgePopover.position, popoverRef: badgePopoverRef }), menuId ? (jsx(CanvasTableMenu, { menuId: menuId, containerRef: containerRef, isFullscreenHandle: isFullscreenHandle, tableMenuRef: tableMenuRef, onCopy: handleCopy, onExport: function () {
|
|
574
607
|
return exportExcel((exportExcelConfig === null || exportExcelConfig === void 0 ? void 0 : exportExcelConfig.fileName) || "表格数据.xlsx", exportExcelConfig);
|
|
575
608
|
} })) : null] })) })));
|
|
576
609
|
}
|
|
@@ -169,7 +169,7 @@ var DataRowRenderer = /** @class */ (function () {
|
|
|
169
169
|
}
|
|
170
170
|
else if (column.key === "__index__") {
|
|
171
171
|
// 处理序号列
|
|
172
|
-
this.renderIndexCell(rowIndex, drawX, y, width, cellHeight);
|
|
172
|
+
this.renderIndexCell(rowIndex, colIndex, drawX, y, width, cellHeight);
|
|
173
173
|
}
|
|
174
174
|
else {
|
|
175
175
|
this.renderDataCell(column, colIndex, rowIndex, record, drawX, y, width, cellHeight, isSummaryRow);
|
|
@@ -178,15 +178,35 @@ var DataRowRenderer = /** @class */ (function () {
|
|
|
178
178
|
/**
|
|
179
179
|
* 渲染序号单元格
|
|
180
180
|
*/
|
|
181
|
-
DataRowRenderer.prototype.renderIndexCell = function (rowIndex, drawX, y, width, cellHeight) {
|
|
181
|
+
DataRowRenderer.prototype.renderIndexCell = function (rowIndex, colIndex, drawX, y, width, cellHeight) {
|
|
182
182
|
if (!this.context)
|
|
183
183
|
return;
|
|
184
|
-
var _a = this.context, ctx = _a.ctx, flattenedData = _a.flattenedData, expandable = _a.expandable;
|
|
185
|
-
var indexText
|
|
186
|
-
if (flattenedData && flattenedData[rowIndex]) {
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
184
|
+
var _a = this.context, ctx = _a.ctx, flattenedData = _a.flattenedData, expandable = _a.expandable, mergeCellMap = _a.mergeCellMap, processedDataSource = _a.processedDataSource;
|
|
185
|
+
var indexText;
|
|
186
|
+
if (expandable && flattenedData && flattenedData[rowIndex]) {
|
|
187
|
+
// 展开行场景:使用 indexInParent 作为显示序号
|
|
188
|
+
indexText = String(flattenedData[rowIndex].indexInParent);
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
var currentRecord = processedDataSource === null || processedDataSource === void 0 ? void 0 : processedDataSource[rowIndex];
|
|
192
|
+
if (currentRecord && currentRecord[IS_SUMMARY]) {
|
|
193
|
+
// 合计行不显示序号
|
|
194
|
+
indexText = "";
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
// 计算逻辑序号:跳过被合并的行和合计行
|
|
198
|
+
var logicIndex = 0;
|
|
199
|
+
for (var i = 0; i <= rowIndex; i++) {
|
|
200
|
+
var record = processedDataSource === null || processedDataSource === void 0 ? void 0 : processedDataSource[i];
|
|
201
|
+
if (record && record[IS_SUMMARY])
|
|
202
|
+
continue;
|
|
203
|
+
var info = mergeCellMap === null || mergeCellMap === void 0 ? void 0 : mergeCellMap.get("".concat(i, "-").concat(colIndex));
|
|
204
|
+
if (info === null || info === void 0 ? void 0 : info.skip)
|
|
205
|
+
continue;
|
|
206
|
+
logicIndex++;
|
|
207
|
+
}
|
|
208
|
+
indexText = String(logicIndex);
|
|
209
|
+
}
|
|
190
210
|
}
|
|
191
211
|
// 检查是否需要在序号列中渲染展开图标
|
|
192
212
|
var expandIconWidth = 0;
|
|
@@ -3,6 +3,7 @@ import { drawCheckbox, truncateText } from '../../utils/canvasDrawHelpers.js';
|
|
|
3
3
|
import { formatCellValue } from '../../utils/formatHelpers.js';
|
|
4
4
|
import '../../../_virtual/_tslib.js';
|
|
5
5
|
import { setTextAlign, calculateTextX } from '../../utils/renderHelpers.js';
|
|
6
|
+
import { IS_SUMMARY } from '../../../table/constant.js';
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
* 固定行渲染器
|
|
@@ -85,7 +86,7 @@ var FixedRowRenderer = /** @class */ (function () {
|
|
|
85
86
|
if (onlyFixed === void 0) { onlyFixed = false; }
|
|
86
87
|
if (!this.context)
|
|
87
88
|
return;
|
|
88
|
-
var _a = this.context, ctx = _a.ctx, processedDataSource = _a.processedDataSource, columnRenderInfos = _a.columnRenderInfos, rowHeight = _a.rowHeight, scrollState = _a.scrollState, state = _a.state, getRowKey = _a.getRowKey, displayWidth = _a.displayWidth, fixedRowsConfig = _a.fixedRowsConfig, striped = _a.striped, getColumnWidth = _a.getColumnWidth;
|
|
89
|
+
var _a = this.context, ctx = _a.ctx, processedDataSource = _a.processedDataSource, columnRenderInfos = _a.columnRenderInfos, rowHeight = _a.rowHeight, scrollState = _a.scrollState, state = _a.state, getRowKey = _a.getRowKey, displayWidth = _a.displayWidth, fixedRowsConfig = _a.fixedRowsConfig, striped = _a.striped, getColumnWidth = _a.getColumnWidth, mergeCellMap = _a.mergeCellMap;
|
|
89
90
|
var record = processedDataSource[rowIndex];
|
|
90
91
|
if (!record)
|
|
91
92
|
return;
|
|
@@ -129,7 +130,22 @@ var FixedRowRenderer = /** @class */ (function () {
|
|
|
129
130
|
// 处理序号�?
|
|
130
131
|
if (column.key === "__index__") {
|
|
131
132
|
if (position !== "summary") {
|
|
132
|
-
var
|
|
133
|
+
var currentRecord = processedDataSource[rowIndex];
|
|
134
|
+
if (currentRecord && currentRecord[IS_SUMMARY]) {
|
|
135
|
+
return; // 合计行不显示序号
|
|
136
|
+
}
|
|
137
|
+
// 计算逻辑序号:跳过被合并的行和合计行
|
|
138
|
+
var logicIndex = 0;
|
|
139
|
+
for (var i = 0; i <= rowIndex; i++) {
|
|
140
|
+
var record_1 = processedDataSource[i];
|
|
141
|
+
if (record_1 && record_1[IS_SUMMARY])
|
|
142
|
+
continue;
|
|
143
|
+
var info_1 = mergeCellMap === null || mergeCellMap === void 0 ? void 0 : mergeCellMap.get("".concat(i, "-").concat(colIndex));
|
|
144
|
+
if (info_1 === null || info_1 === void 0 ? void 0 : info_1.skip)
|
|
145
|
+
continue;
|
|
146
|
+
logicIndex++;
|
|
147
|
+
}
|
|
148
|
+
var indexText = String(logicIndex);
|
|
133
149
|
ctx.fillStyle = COLORS.text;
|
|
134
150
|
ctx.font = "".concat(FONT_WEIGHT, " ").concat(FONT_SIZE, "px ").concat(FONT_FAMILY);
|
|
135
151
|
ctx.textBaseline = "middle";
|