react-toolkits 0.0.1
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/.eslintignore +2 -0
- package/.eslintrc.js +4 -0
- package/.turbo/turbo-build.log +20 -0
- package/CHANGELOG.md +10 -0
- package/dist/512_orange_nobackground-L6MFCL6M.png +0 -0
- package/dist/index.css +230 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.mts +191 -0
- package/dist/index.esm.js +3152 -0
- package/dist/index.esm.js.map +1 -0
- package/package.json +63 -0
- package/postcss.config.js +9 -0
- package/src/assets/512_orange_nobackground.png +0 -0
- package/src/components/DynamicTags/index.tsx +160 -0
- package/src/components/FilterForm/index.tsx +62 -0
- package/src/components/FormModal/hooks.tsx +48 -0
- package/src/components/FormModal/index.tsx +138 -0
- package/src/components/Highlight/index.tsx +51 -0
- package/src/components/PermissionButton/index.tsx +36 -0
- package/src/components/QueryList/index.tsx +158 -0
- package/src/components/index.ts +27 -0
- package/src/constants/index.ts +3 -0
- package/src/features/permission/components/PermissionList.tsx +129 -0
- package/src/features/permission/hooks/index.ts +140 -0
- package/src/features/permission/index.ts +5 -0
- package/src/features/permission/types/index.ts +33 -0
- package/src/hooks/index.ts +2 -0
- package/src/hooks/use-fetcher.tsx +102 -0
- package/src/hooks/use-permission.tsx +58 -0
- package/src/index.ts +7 -0
- package/src/layouts/Layout.tsx +81 -0
- package/src/layouts/NavBar.tsx +176 -0
- package/src/layouts/index.ts +6 -0
- package/src/pages/Login/default.tsx +864 -0
- package/src/pages/Login/index.tsx +111 -0
- package/src/pages/index.ts +4 -0
- package/src/pages/permission/RoleDetail.tsx +40 -0
- package/src/pages/permission/RoleList.tsx +226 -0
- package/src/pages/permission/UserList.tsx +248 -0
- package/src/pages/permission/index.tsx +31 -0
- package/src/shims.d.ts +20 -0
- package/src/stores/index.ts +3 -0
- package/src/stores/menu.ts +27 -0
- package/src/stores/queryTrigger.ts +27 -0
- package/src/stores/token.ts +25 -0
- package/src/styles/index.css +5 -0
- package/src/types/index.ts +27 -0
- package/tailwind.config.js +5 -0
- package/tsconfig.json +11 -0
- package/tsup.config.ts +26 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { create } from 'zustand'
|
|
2
|
+
import { persist } from 'zustand/middleware'
|
|
3
|
+
|
|
4
|
+
export interface MenuState {
|
|
5
|
+
openKeys: string[]
|
|
6
|
+
selectedKeys: string[]
|
|
7
|
+
setOpenKeys: (keys: string[]) => void
|
|
8
|
+
setSelectedKeys: (keys: string[]) => void
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export const useMenuStore = create<MenuState>()(
|
|
12
|
+
persist(
|
|
13
|
+
set => ({
|
|
14
|
+
openKeys: [],
|
|
15
|
+
selectedKeys: [],
|
|
16
|
+
setOpenKeys: keys => set({ openKeys: keys }),
|
|
17
|
+
setSelectedKeys: keys => set({ selectedKeys: keys }),
|
|
18
|
+
}),
|
|
19
|
+
{
|
|
20
|
+
name: 'menu',
|
|
21
|
+
partialize: state => ({
|
|
22
|
+
openKeys: state.openKeys,
|
|
23
|
+
selectedKeys: state.selectedKeys,
|
|
24
|
+
}),
|
|
25
|
+
},
|
|
26
|
+
),
|
|
27
|
+
)
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { QueryListKey } from '@/components/QueryList'
|
|
2
|
+
import type { PaginationParams } from '@/types'
|
|
3
|
+
import { create } from 'zustand'
|
|
4
|
+
|
|
5
|
+
type TriggerFunction = (arg?: Partial<PaginationParams>) => void
|
|
6
|
+
|
|
7
|
+
export interface QueryTriggerState {
|
|
8
|
+
triggers: Map<QueryListKey, TriggerFunction>
|
|
9
|
+
setTrigger: (key: QueryListKey, trigger: TriggerFunction) => void
|
|
10
|
+
trigger: (key: QueryListKey, arg?: Partial<PaginationParams>) => void
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export const useQueryTriggerStore = create<QueryTriggerState>((set, get) => ({
|
|
14
|
+
triggers: new Map(),
|
|
15
|
+
setTrigger: (key: QueryListKey, trigger: TriggerFunction) => {
|
|
16
|
+
set({
|
|
17
|
+
triggers: new Map(get().triggers).set(key, trigger),
|
|
18
|
+
})
|
|
19
|
+
},
|
|
20
|
+
trigger: (key: QueryListKey, arg?: Partial<PaginationParams>) => {
|
|
21
|
+
const trigger = get().triggers.get(key)
|
|
22
|
+
|
|
23
|
+
if (trigger) {
|
|
24
|
+
trigger(arg)
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
}))
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { create } from 'zustand'
|
|
2
|
+
import { persist } from 'zustand/middleware'
|
|
3
|
+
|
|
4
|
+
export interface TokenState {
|
|
5
|
+
token: string
|
|
6
|
+
setToken: (token: string) => void
|
|
7
|
+
clearToken: () => void
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export const useTokenStore = create<TokenState>()(
|
|
11
|
+
persist(
|
|
12
|
+
set => ({
|
|
13
|
+
token: '',
|
|
14
|
+
setToken: token => set({ token }),
|
|
15
|
+
clearToken: () => {
|
|
16
|
+
set({ token: '' })
|
|
17
|
+
useTokenStore.persist.clearStorage()
|
|
18
|
+
},
|
|
19
|
+
}),
|
|
20
|
+
{
|
|
21
|
+
name: 'token',
|
|
22
|
+
partialize: state => ({ token: state.token }),
|
|
23
|
+
},
|
|
24
|
+
),
|
|
25
|
+
)
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ItemType2 } from '@/layouts/NavBar'
|
|
2
|
+
|
|
3
|
+
export interface UserInfo {
|
|
4
|
+
authorityId: string
|
|
5
|
+
exp: number
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export interface LoaderData {
|
|
9
|
+
navs: ItemType2[] // 导航栏数据
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface BackendResponse<T> {
|
|
13
|
+
code: number
|
|
14
|
+
msg: string
|
|
15
|
+
data: T
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export interface ListResponse<T> {
|
|
19
|
+
List: T[]
|
|
20
|
+
Page: number
|
|
21
|
+
Total: number
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export type PaginationParams = {
|
|
25
|
+
page: number
|
|
26
|
+
perPage: number
|
|
27
|
+
}
|
package/tsconfig.json
ADDED
package/tsup.config.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Options } from 'tsup'
|
|
2
|
+
import { defineConfig } from 'tsup'
|
|
3
|
+
|
|
4
|
+
export default defineConfig((options: Options) => ({
|
|
5
|
+
entry: ['src/index.ts'],
|
|
6
|
+
treeshake: true,
|
|
7
|
+
splitting: false,
|
|
8
|
+
format: ['esm'],
|
|
9
|
+
sourcemap: true,
|
|
10
|
+
dts: true,
|
|
11
|
+
minify: false,
|
|
12
|
+
clean: true,
|
|
13
|
+
shims: true,
|
|
14
|
+
external: ['react', 'react-dom'],
|
|
15
|
+
loader: {
|
|
16
|
+
'.jpg': 'base64',
|
|
17
|
+
'.png': 'copy',
|
|
18
|
+
'.webp': 'file',
|
|
19
|
+
},
|
|
20
|
+
outExtension({ format }) {
|
|
21
|
+
return {
|
|
22
|
+
js: `.${format}.js`,
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
...options,
|
|
26
|
+
}))
|