zmdms-webui 1.5.0 → 1.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/README.md +14 -4
  2. package/dist/es/applayout/index.css +1 -1
  3. package/dist/es/config/ZtxkContext.d.ts +4 -0
  4. package/dist/es/enhanceselect/enhance-select.js +39 -0
  5. package/dist/es/enhanceselect/index.js +5 -0
  6. package/dist/es/enhanceselect/list-query.js +47 -0
  7. package/dist/es/enhanceselect/page-query.js +132 -0
  8. package/dist/es/node_modules/@tanstack/query-core/build/modern/focusManager.js +66 -0
  9. package/dist/es/node_modules/@tanstack/query-core/build/modern/infiniteQueryBehavior.js +118 -0
  10. package/dist/es/node_modules/@tanstack/query-core/build/modern/infiniteQueryObserver.js +66 -0
  11. package/dist/es/node_modules/@tanstack/query-core/build/modern/notifyManager.js +81 -0
  12. package/dist/es/node_modules/@tanstack/query-core/build/modern/onlineManager.js +56 -0
  13. package/dist/es/node_modules/@tanstack/query-core/build/modern/query.js +16 -0
  14. package/dist/es/node_modules/@tanstack/query-core/build/modern/queryObserver.js +453 -0
  15. package/dist/es/node_modules/@tanstack/query-core/build/modern/retryer.js +8 -0
  16. package/dist/es/node_modules/@tanstack/query-core/build/modern/subscribable.js +24 -0
  17. package/dist/es/node_modules/@tanstack/query-core/build/modern/thenable.js +34 -0
  18. package/dist/es/node_modules/@tanstack/query-core/build/modern/utils.js +126 -0
  19. package/dist/es/node_modules/@tanstack/react-query/build/modern/IsRestoringProvider.js +7 -0
  20. package/dist/es/node_modules/@tanstack/react-query/build/modern/QueryClientProvider.js +18 -0
  21. package/dist/es/node_modules/@tanstack/react-query/build/modern/QueryErrorResetBoundary.js +21 -0
  22. package/dist/es/node_modules/@tanstack/react-query/build/modern/errorBoundaryUtils.js +26 -0
  23. package/dist/es/node_modules/@tanstack/react-query/build/modern/suspense.js +17 -0
  24. package/dist/es/node_modules/@tanstack/react-query/build/modern/useBaseQuery.js +92 -0
  25. package/dist/es/node_modules/@tanstack/react-query/build/modern/useInfiniteQuery.js +12 -0
  26. package/dist/es/node_modules/@tanstack/react-query/build/modern/useQuery.js +8 -0
  27. package/dist/es/node_modules/@tanstack/react-query/build/modern/utils.js +11 -0
  28. package/dist/es/select/hooks.js +4 -0
  29. package/dist/index.dark.css +1 -1
  30. package/dist/index.default.css +1 -1
  31. package/package.json +9 -6
package/README.md CHANGED
@@ -18,7 +18,7 @@
18
18
  ```
19
19
  因为我们组件是基于antd的做的二次开发,由于antd的国际化配置是通过ConfigProvider这个context.provider。但是并没有暴露给用户获取。所以需要额外定义一个切换的context供组件获取
20
20
  import { ConfigProvider, ZtxkContext } from 'ztxk-webui'
21
-
21
+
22
22
  <ConfigProvider locale={locale}>
23
23
  <ZtxkContext.Provider value={ztxkConfig}>
24
24
  <App />
@@ -49,7 +49,7 @@
49
49
  };
50
50
  ```
51
51
 
52
- 2. 开发时 添加 less 支持 (less-loader 需要用 10.2.0 以下的版本)
52
+ 2. 开发时 添加 less 支持 (less-loader 需要用 10.2.0 以下的版本)(less已提供支持,这个可以忽略)
53
53
 
54
54
  ```
55
55
  // 进入 react-scripts/config/webpack.config.js
@@ -95,9 +95,9 @@
95
95
  2. You might be breaking the Rules of Hooks
96
96
  3. You might have more than one copy of React in the same app
97
97
  See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.
98
-
98
+
99
99
  需要切换到ui库下面,将react link到开发项目的node modules下
100
-
100
+
101
101
  cd zmdms-webui
102
102
  npm link ..\zmdms-webmain\node_modules\react
103
103
  ```
@@ -126,3 +126,13 @@
126
126
 
127
127
  /* 会被删除 */
128
128
  ```
129
+
130
+
131
+
132
+ # 待办事项
133
+
134
+ ## 列表页面组件
135
+
136
+ ## 下拉框增强组件
137
+
138
+ - 支持传入接口直接请求
@@ -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 .ant-tabs-tab{padding:0!important}.zmdms-container .zmdms-content--header .ant-tabs .ant-tabs-tab a{color:#768696;display:inline-block;padding:0 5px 0 10px}.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-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-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 .ant-tabs-tab>div{padding:0}.zmdms-container .zmdms-content--header .ant-tabs .ant-tabs-tab a{color:#768696;display:inline-block;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-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-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}
@@ -7,6 +7,10 @@ interface IZtxkConfig {
7
7
  locale: "zh-cn" | "en";
8
8
  apiBaseUrl: string;
9
9
  fileBaseUrl: string;
10
+ /**
11
+ * 接口请求方法
12
+ */
13
+ request?: any;
10
14
  }
11
15
  declare const ZtxkContext: React__default.Context<IZtxkConfig>;
12
16
 
@@ -0,0 +1,39 @@
1
+ import { __rest, __assign } from '../_virtual/_tslib.js';
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import { memo, forwardRef } from 'react';
4
+ import MemoListQuery from './list-query.js';
5
+ import MemoPageQuery from './page-query.js';
6
+ import MemoSelect from '../select/select.js';
7
+ import ButtonCom from '../button/button.js';
8
+
9
+ /**
10
+ * 增强的Select组件
11
+ * 增强的功能:携带请求能力。如果你的下拉框数据,需要组件内部通过接口来获取,可以使用这个组件。
12
+ * 注意:如果你的下拉框数据,不需要通过接口来获取,可以使用普通的Select组件。
13
+ */
14
+ var EnhanceSelect = function (props, ref) {
15
+ var isPage = props.isPage, resetProps = __rest(props, ["isPage"]);
16
+ return !isPage ? (jsx(MemoListQuery, __assign({}, props, { customRender: function (_a) {
17
+ var list = _a.list, isLoading = _a.isLoading, refetch = _a.refetch, isEnabled = _a.isEnabled;
18
+ return (jsx(MemoSelect, __assign({ placeholder: "\u8BF7\u9009\u62E9", list: list, loading: isLoading, dropdownButton: jsx(ButtonCom, __assign({ onClick: function () {
19
+ if (!isEnabled()) {
20
+ return;
21
+ }
22
+ refetch();
23
+ } }, { children: "\u5237\u65B0\u6570\u636E" })), ref: ref }, resetProps)));
24
+ } }))) : (jsx(MemoPageQuery, __assign({}, props, { customRender: function (_a) {
25
+ var list = _a.list, isLoading = _a.isLoading, hasNextPage = _a.hasNextPage, fetchNextPage = _a.fetchNextPage, onSearchHandle = _a.onSearchHandle, onBlurHandle = _a.onBlurHandle, onClearHandle = _a.onClearHandle;
26
+ return (jsx(MemoSelect, __assign({ placeholder: "\u8BF7\u9009\u62E9", list: list, loading: isLoading, ref: ref, isRemoteSearch: true }, resetProps, { onPopupScroll: function (e) {
27
+ var target = e.target;
28
+ if (target.scrollTop + target.offsetHeight >=
29
+ target.scrollHeight - 100) {
30
+ if (hasNextPage && !isLoading) {
31
+ fetchNextPage();
32
+ }
33
+ }
34
+ }, onSearch: onSearchHandle, onClear: onClearHandle, onBlur: onBlurHandle })));
35
+ } })));
36
+ };
37
+ var MemoEnhanceSelect = memo(forwardRef(EnhanceSelect));
38
+
39
+ export { MemoEnhanceSelect as default };
@@ -0,0 +1,5 @@
1
+ import MemoEnhanceSelect from './enhance-select.js';
2
+
3
+
4
+
5
+ export { MemoEnhanceSelect as default };
@@ -0,0 +1,47 @@
1
+ import { __awaiter, __generator } from '../_virtual/_tslib.js';
2
+ import { jsx, Fragment } from 'react/jsx-runtime';
3
+ import { memo } from 'react';
4
+ import '../config/ZtxkContext.js';
5
+ import useBaseContext from '../config/useBaseContext.js';
6
+ import { useQuery } from '../node_modules/@tanstack/react-query/build/modern/useQuery.js';
7
+
8
+ /**
9
+ * 不分页的查询逻辑
10
+ */
11
+ var ListQuery = function (props) {
12
+ var _a;
13
+ var requestProps = props.request, url = props.url, params = props.params, _b = props.method, method = _b === void 0 ? "get" : _b, _c = props.timeout, timeout = _c === void 0 ? 120000 : _c, customRender = props.customRender, _d = props.isCache, isCache = _d === void 0 ? true : _d, transformData = props.transformData, mustQueryKeys = props.mustQueryKeys;
14
+ var request = useBaseContext().request;
15
+ var isEnabled = function () {
16
+ if (typeof mustQueryKeys === "string") {
17
+ return params[mustQueryKeys] != null;
18
+ }
19
+ if (Array.isArray(mustQueryKeys)) {
20
+ return mustQueryKeys.every(function (key) { return params[key] != null; });
21
+ }
22
+ return true;
23
+ };
24
+ // 数据请求方法(通常由业务封装),新项目可以从ZtxkContext中传入业务定义的请求方法,也可以组件单独传入
25
+ var requestHandle = requestProps || request;
26
+ var _e = useQuery({
27
+ queryKey: [url, params],
28
+ queryFn: function () { return __awaiter(void 0, void 0, void 0, function () {
29
+ var res;
30
+ return __generator(this, function (_a) {
31
+ switch (_a.label) {
32
+ case 0: return [4 /*yield*/, requestHandle({ url: url, params: params, method: method, timeout: timeout })];
33
+ case 1:
34
+ res = _a.sent();
35
+ return [2 /*return*/, res]; // 返回获取到的数据
36
+ }
37
+ });
38
+ }); },
39
+ staleTime: isCache ? Infinity : 0,
40
+ enabled: isEnabled(),
41
+ }), data = _e.data, isLoading = _e.isLoading, refetch = _e.refetch;
42
+ var list = transformData ? transformData(data) : (_a = data === null || data === void 0 ? void 0 : data.data) === null || _a === void 0 ? void 0 : _a.data;
43
+ return jsx(Fragment, { children: customRender === null || customRender === void 0 ? void 0 : customRender({ list: list, isLoading: isLoading, refetch: refetch, isEnabled: isEnabled }) });
44
+ };
45
+ var MemoListQuery = memo(ListQuery);
46
+
47
+ export { MemoListQuery as default };
@@ -0,0 +1,132 @@
1
+ import { __assign, __awaiter, __generator } from '../_virtual/_tslib.js';
2
+ import { jsx, Fragment } from 'react/jsx-runtime';
3
+ import { memo, useState, useRef } from 'react';
4
+ import '../config/ZtxkContext.js';
5
+ import useBaseContext from '../config/useBaseContext.js';
6
+ import { useInfiniteQuery } from '../node_modules/@tanstack/react-query/build/modern/useInfiniteQuery.js';
7
+
8
+ /**
9
+ * 不分页的查询逻辑
10
+ */
11
+ var PageQuery = function (props) {
12
+ var _a, _b;
13
+ var requestProps = props.request, url = props.url, params = props.params, _c = props.method, method = _c === void 0 ? "get" : _c, _d = props.timeout, timeout = _d === void 0 ? 120000 : _d, customRender = props.customRender, transformData = props.transformData, onClear = props.onClear, onBlur = props.onBlur, firstLoadDataKey = props.firstLoadDataKey, remoteSearchKey = props.remoteSearchKey, _e = props.pageSize, pageSize = _e === void 0 ? 10 : _e;
14
+ var request = useBaseContext().request;
15
+ // 输入的值
16
+ var _f = useSearchValue({
17
+ onClear: onClear,
18
+ onBlur: onBlur,
19
+ }), firsrtRef = _f.firsrtRef, searchValue = _f.searchValue, onSearchHandle = _f.onSearchHandle, onBlurHandle = _f.onBlurHandle, onClearHandle = _f.onClearHandle;
20
+ // 数据请求方法(通常由业务封装),新项目可以从ZtxkContext中传入业务定义的请求方法,也可以组件单独传入
21
+ var requestHandle = requestProps || request;
22
+ // 首次回显时,使用的查询接口参数key
23
+ var firstSearchKey = firstLoadDataKey || props.dataKey || "id";
24
+ // 远程搜索时,使用的key
25
+ var remoteSearchUseKey = remoteSearchKey || props.titleKey || "name";
26
+ var transformParams = firsrtRef.current && props.value
27
+ ? // 对于分页接口,首次回显的时候,需要把value作为参数传递进去。已查到该条数据
28
+ __assign((_a = {}, _a[firstSearchKey] = Array.isArray(props.value)
29
+ ? props.value.join(",")
30
+ : props.value, _a[remoteSearchUseKey] = searchValue, _a), params) : __assign((_b = {}, _b[remoteSearchUseKey] = searchValue, _b), params);
31
+ var _g = useInfiniteQuery({
32
+ queryKey: [url, transformParams],
33
+ queryFn: function (_a) {
34
+ var pageParam = _a.pageParam;
35
+ return __awaiter(void 0, void 0, void 0, function () {
36
+ var res;
37
+ return __generator(this, function (_b) {
38
+ switch (_b.label) {
39
+ case 0: return [4 /*yield*/, requestHandle({
40
+ url: url,
41
+ params: __assign(__assign(__assign({}, transformParams), pageParam), { size: pageSize }),
42
+ method: method,
43
+ timeout: timeout,
44
+ })];
45
+ case 1:
46
+ res = _b.sent();
47
+ if (firsrtRef.current && props.value) {
48
+ // 首次回显时,需要把value作为参数传递进去。已查到该条数据
49
+ firsrtRef.current = false;
50
+ }
51
+ return [2 /*return*/, res];
52
+ }
53
+ });
54
+ });
55
+ },
56
+ initialPageParam: { current: 1 },
57
+ getNextPageParam: function (lastPage, pages) {
58
+ var _a;
59
+ var pageData = transformData
60
+ ? transformData(lastPage)
61
+ : (_a = lastPage === null || lastPage === void 0 ? void 0 : lastPage.data) === null || _a === void 0 ? void 0 : _a.data;
62
+ var current = pageData.current, size = pageData.size, total = pageData.total, records = pageData.records;
63
+ var currentLen = (current - 1) * size + (records === null || records === void 0 ? void 0 : records.length) || 0;
64
+ // 如果总条数 大于 当前条数
65
+ if (total > currentLen) {
66
+ return { current: current + 1 };
67
+ }
68
+ else {
69
+ // 请求终止
70
+ return undefined;
71
+ }
72
+ },
73
+ }), data = _g.data, refetch = _g.refetch, isLoading = _g.isLoading, fetchNextPage = _g.fetchNextPage, hasNextPage = _g.hasNextPage, isFetchingNextPage = _g.isFetchingNextPage;
74
+ var getPageData = function (data) {
75
+ var _a;
76
+ var list = [];
77
+ (_a = data === null || data === void 0 ? void 0 : data.pages) === null || _a === void 0 ? void 0 : _a.forEach(function (item) {
78
+ var _a;
79
+ var pageData = transformData ? transformData(item) : (_a = item === null || item === void 0 ? void 0 : item.data) === null || _a === void 0 ? void 0 : _a.data;
80
+ var records = pageData.records;
81
+ if (Array.isArray(records)) {
82
+ list.push.apply(list, records);
83
+ }
84
+ });
85
+ return list;
86
+ };
87
+ // 数据
88
+ var list = getPageData(data);
89
+ return (jsx(Fragment, { children: customRender === null || customRender === void 0 ? void 0 : customRender({
90
+ list: list,
91
+ isLoading: isLoading || isFetchingNextPage,
92
+ refetch: refetch,
93
+ fetchNextPage: fetchNextPage,
94
+ hasNextPage: hasNextPage,
95
+ onSearchHandle: onSearchHandle,
96
+ onBlurHandle: onBlurHandle,
97
+ onClearHandle: onClearHandle,
98
+ }) }));
99
+ };
100
+ var MemoPageQuery = memo(PageQuery);
101
+ /**
102
+ * 搜索时,失去焦点,清空输入的值
103
+ */
104
+ function useSearchValue(props) {
105
+ var onSearch = props.onSearch, onBlur = props.onBlur, onClear = props.onClear;
106
+ var _a = useState(), searchValue = _a[0], setSearchValue = _a[1];
107
+ var firsrtRef = useRef(true);
108
+ // 搜索触发查询
109
+ var onSearchHandle = function (value) {
110
+ firsrtRef.current = false;
111
+ onSearch && onSearch(value);
112
+ setSearchValue(value);
113
+ };
114
+ // filter
115
+ var onBlurHandle = function (e) {
116
+ onBlur && onBlur(e);
117
+ };
118
+ var onClearHandle = function () {
119
+ firsrtRef.current = false;
120
+ onClear && onClear();
121
+ };
122
+ return {
123
+ searchValue: searchValue,
124
+ firsrtRef: firsrtRef,
125
+ setSearchValue: setSearchValue,
126
+ onSearchHandle: onSearchHandle,
127
+ onBlurHandle: onBlurHandle,
128
+ onClearHandle: onClearHandle,
129
+ };
130
+ }
131
+
132
+ export { MemoPageQuery as default, useSearchValue };
@@ -0,0 +1,66 @@
1
+ import { Subscribable } from './subscribable.js';
2
+ import { isServer } from './utils.js';
3
+
4
+ // src/focusManager.ts
5
+ var FocusManager = class extends Subscribable {
6
+ #focused;
7
+ #cleanup;
8
+ #setup;
9
+ constructor() {
10
+ super();
11
+ this.#setup = (onFocus) => {
12
+ if (!isServer && window.addEventListener) {
13
+ const listener = () => onFocus();
14
+ window.addEventListener("visibilitychange", listener, false);
15
+ return () => {
16
+ window.removeEventListener("visibilitychange", listener);
17
+ };
18
+ }
19
+ return;
20
+ };
21
+ }
22
+ onSubscribe() {
23
+ if (!this.#cleanup) {
24
+ this.setEventListener(this.#setup);
25
+ }
26
+ }
27
+ onUnsubscribe() {
28
+ if (!this.hasListeners()) {
29
+ this.#cleanup?.();
30
+ this.#cleanup = void 0;
31
+ }
32
+ }
33
+ setEventListener(setup) {
34
+ this.#setup = setup;
35
+ this.#cleanup?.();
36
+ this.#cleanup = setup((focused) => {
37
+ if (typeof focused === "boolean") {
38
+ this.setFocused(focused);
39
+ } else {
40
+ this.onFocus();
41
+ }
42
+ });
43
+ }
44
+ setFocused(focused) {
45
+ const changed = this.#focused !== focused;
46
+ if (changed) {
47
+ this.#focused = focused;
48
+ this.onFocus();
49
+ }
50
+ }
51
+ onFocus() {
52
+ const isFocused = this.isFocused();
53
+ this.listeners.forEach((listener) => {
54
+ listener(isFocused);
55
+ });
56
+ }
57
+ isFocused() {
58
+ if (typeof this.#focused === "boolean") {
59
+ return this.#focused;
60
+ }
61
+ return globalThis.document?.visibilityState !== "hidden";
62
+ }
63
+ };
64
+ var focusManager = new FocusManager();
65
+
66
+ export { FocusManager, focusManager };
@@ -0,0 +1,118 @@
1
+ import { ensureQueryFn, addToStart, addToEnd } from './utils.js';
2
+
3
+ // src/infiniteQueryBehavior.ts
4
+ function infiniteQueryBehavior(pages) {
5
+ return {
6
+ onFetch: (context, query) => {
7
+ const options = context.options;
8
+ const direction = context.fetchOptions?.meta?.fetchMore?.direction;
9
+ const oldPages = context.state.data?.pages || [];
10
+ const oldPageParams = context.state.data?.pageParams || [];
11
+ let result = { pages: [], pageParams: [] };
12
+ let currentPage = 0;
13
+ const fetchFn = async () => {
14
+ let cancelled = false;
15
+ const addSignalProperty = (object) => {
16
+ Object.defineProperty(object, "signal", {
17
+ enumerable: true,
18
+ get: () => {
19
+ if (context.signal.aborted) {
20
+ cancelled = true;
21
+ } else {
22
+ context.signal.addEventListener("abort", () => {
23
+ cancelled = true;
24
+ });
25
+ }
26
+ return context.signal;
27
+ }
28
+ });
29
+ };
30
+ const queryFn = ensureQueryFn(context.options, context.fetchOptions);
31
+ const fetchPage = async (data, param, previous) => {
32
+ if (cancelled) {
33
+ return Promise.reject();
34
+ }
35
+ if (param == null && data.pages.length) {
36
+ return Promise.resolve(data);
37
+ }
38
+ const queryFnContext = {
39
+ client: context.client,
40
+ queryKey: context.queryKey,
41
+ pageParam: param,
42
+ direction: previous ? "backward" : "forward",
43
+ meta: context.options.meta
44
+ };
45
+ addSignalProperty(queryFnContext);
46
+ const page = await queryFn(
47
+ queryFnContext
48
+ );
49
+ const { maxPages } = context.options;
50
+ const addTo = previous ? addToStart : addToEnd;
51
+ return {
52
+ pages: addTo(data.pages, page, maxPages),
53
+ pageParams: addTo(data.pageParams, param, maxPages)
54
+ };
55
+ };
56
+ if (direction && oldPages.length) {
57
+ const previous = direction === "backward";
58
+ const pageParamFn = previous ? getPreviousPageParam : getNextPageParam;
59
+ const oldData = {
60
+ pages: oldPages,
61
+ pageParams: oldPageParams
62
+ };
63
+ const param = pageParamFn(options, oldData);
64
+ result = await fetchPage(oldData, param, previous);
65
+ } else {
66
+ const remainingPages = pages ?? oldPages.length;
67
+ do {
68
+ const param = currentPage === 0 ? oldPageParams[0] ?? options.initialPageParam : getNextPageParam(options, result);
69
+ if (currentPage > 0 && param == null) {
70
+ break;
71
+ }
72
+ result = await fetchPage(result, param);
73
+ currentPage++;
74
+ } while (currentPage < remainingPages);
75
+ }
76
+ return result;
77
+ };
78
+ if (context.options.persister) {
79
+ context.fetchFn = () => {
80
+ return context.options.persister?.(
81
+ fetchFn,
82
+ {
83
+ client: context.client,
84
+ queryKey: context.queryKey,
85
+ meta: context.options.meta,
86
+ signal: context.signal
87
+ },
88
+ query
89
+ );
90
+ };
91
+ } else {
92
+ context.fetchFn = fetchFn;
93
+ }
94
+ }
95
+ };
96
+ }
97
+ function getNextPageParam(options, { pages, pageParams }) {
98
+ const lastIndex = pages.length - 1;
99
+ return pages.length > 0 ? options.getNextPageParam(
100
+ pages[lastIndex],
101
+ pages,
102
+ pageParams[lastIndex],
103
+ pageParams
104
+ ) : void 0;
105
+ }
106
+ function getPreviousPageParam(options, { pages, pageParams }) {
107
+ return pages.length > 0 ? options.getPreviousPageParam?.(pages[0], pages, pageParams[0], pageParams) : void 0;
108
+ }
109
+ function hasNextPage(options, data) {
110
+ if (!data) return false;
111
+ return getNextPageParam(options, data) != null;
112
+ }
113
+ function hasPreviousPage(options, data) {
114
+ if (!data || !options.getPreviousPageParam) return false;
115
+ return getPreviousPageParam(options, data) != null;
116
+ }
117
+
118
+ export { hasNextPage, hasPreviousPage, infiniteQueryBehavior };
@@ -0,0 +1,66 @@
1
+ import { QueryObserver } from './queryObserver.js';
2
+ import { infiniteQueryBehavior, hasNextPage, hasPreviousPage } from './infiniteQueryBehavior.js';
3
+
4
+ // src/infiniteQueryObserver.ts
5
+ var InfiniteQueryObserver = class extends QueryObserver {
6
+ constructor(client, options) {
7
+ super(client, options);
8
+ }
9
+ bindMethods() {
10
+ super.bindMethods();
11
+ this.fetchNextPage = this.fetchNextPage.bind(this);
12
+ this.fetchPreviousPage = this.fetchPreviousPage.bind(this);
13
+ }
14
+ setOptions(options) {
15
+ super.setOptions({
16
+ ...options,
17
+ behavior: infiniteQueryBehavior()
18
+ });
19
+ }
20
+ getOptimisticResult(options) {
21
+ options.behavior = infiniteQueryBehavior();
22
+ return super.getOptimisticResult(options);
23
+ }
24
+ fetchNextPage(options) {
25
+ return this.fetch({
26
+ ...options,
27
+ meta: {
28
+ fetchMore: { direction: "forward" }
29
+ }
30
+ });
31
+ }
32
+ fetchPreviousPage(options) {
33
+ return this.fetch({
34
+ ...options,
35
+ meta: {
36
+ fetchMore: { direction: "backward" }
37
+ }
38
+ });
39
+ }
40
+ createResult(query, options) {
41
+ const { state } = query;
42
+ const parentResult = super.createResult(query, options);
43
+ const { isFetching, isRefetching, isError, isRefetchError } = parentResult;
44
+ const fetchDirection = state.fetchMeta?.fetchMore?.direction;
45
+ const isFetchNextPageError = isError && fetchDirection === "forward";
46
+ const isFetchingNextPage = isFetching && fetchDirection === "forward";
47
+ const isFetchPreviousPageError = isError && fetchDirection === "backward";
48
+ const isFetchingPreviousPage = isFetching && fetchDirection === "backward";
49
+ const result = {
50
+ ...parentResult,
51
+ fetchNextPage: this.fetchNextPage,
52
+ fetchPreviousPage: this.fetchPreviousPage,
53
+ hasNextPage: hasNextPage(options, state.data),
54
+ hasPreviousPage: hasPreviousPage(options, state.data),
55
+ isFetchNextPageError,
56
+ isFetchingNextPage,
57
+ isFetchPreviousPageError,
58
+ isFetchingPreviousPage,
59
+ isRefetchError: isRefetchError && !isFetchNextPageError && !isFetchPreviousPageError,
60
+ isRefetching: isRefetching && !isFetchingNextPage && !isFetchingPreviousPage
61
+ };
62
+ return result;
63
+ }
64
+ };
65
+
66
+ export { InfiniteQueryObserver };