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.
- package/README.md +14 -4
- package/dist/es/applayout/index.css +1 -1
- package/dist/es/config/ZtxkContext.d.ts +4 -0
- package/dist/es/enhanceselect/enhance-select.js +39 -0
- package/dist/es/enhanceselect/index.js +5 -0
- package/dist/es/enhanceselect/list-query.js +47 -0
- package/dist/es/enhanceselect/page-query.js +132 -0
- package/dist/es/node_modules/@tanstack/query-core/build/modern/focusManager.js +66 -0
- package/dist/es/node_modules/@tanstack/query-core/build/modern/infiniteQueryBehavior.js +118 -0
- package/dist/es/node_modules/@tanstack/query-core/build/modern/infiniteQueryObserver.js +66 -0
- package/dist/es/node_modules/@tanstack/query-core/build/modern/notifyManager.js +81 -0
- package/dist/es/node_modules/@tanstack/query-core/build/modern/onlineManager.js +56 -0
- package/dist/es/node_modules/@tanstack/query-core/build/modern/query.js +16 -0
- package/dist/es/node_modules/@tanstack/query-core/build/modern/queryObserver.js +453 -0
- package/dist/es/node_modules/@tanstack/query-core/build/modern/retryer.js +8 -0
- package/dist/es/node_modules/@tanstack/query-core/build/modern/subscribable.js +24 -0
- package/dist/es/node_modules/@tanstack/query-core/build/modern/thenable.js +34 -0
- package/dist/es/node_modules/@tanstack/query-core/build/modern/utils.js +126 -0
- package/dist/es/node_modules/@tanstack/react-query/build/modern/IsRestoringProvider.js +7 -0
- package/dist/es/node_modules/@tanstack/react-query/build/modern/QueryClientProvider.js +18 -0
- package/dist/es/node_modules/@tanstack/react-query/build/modern/QueryErrorResetBoundary.js +21 -0
- package/dist/es/node_modules/@tanstack/react-query/build/modern/errorBoundaryUtils.js +26 -0
- package/dist/es/node_modules/@tanstack/react-query/build/modern/suspense.js +17 -0
- package/dist/es/node_modules/@tanstack/react-query/build/modern/useBaseQuery.js +92 -0
- package/dist/es/node_modules/@tanstack/react-query/build/modern/useInfiniteQuery.js +12 -0
- package/dist/es/node_modules/@tanstack/react-query/build/modern/useQuery.js +8 -0
- package/dist/es/node_modules/@tanstack/react-query/build/modern/utils.js +11 -0
- package/dist/es/select/hooks.js +4 -0
- package/dist/index.dark.css +1 -1
- package/dist/index.default.css +1 -1
- 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}
|
|
@@ -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,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 };
|