refactor: 迁移 composables 到 @fantastic-admin/composables 子包

This commit is contained in:
Hooray
2026-04-19 04:39:58 +08:00
parent 38e6abab21
commit 0bcea9d3c8
38 changed files with 124 additions and 330 deletions
+1
View File
@@ -14,6 +14,7 @@
},
"dependencies": {
"@fantastic-admin/components": "workspace:*",
"@fantastic-admin/composables": "workspace:*",
"@fantastic-admin/settings": "workspace:*",
"@fantastic-admin/types": "workspace:*",
"@vee-validate/zod": "catalog:",
+1 -1
View File
@@ -87,7 +87,7 @@ declare global {
const useId: typeof import('vue').useId
const useLink: typeof import('vue-router').useLink
const useModel: typeof import('vue').useModel
const usePagination: typeof import('../composables/pagination').usePagination
const usePagination: typeof import('@fantastic-admin/composables').usePagination
const useRoute: typeof import('vue-router').useRoute
const useRouter: typeof import('vue-router').useRouter
const useSlots: typeof import('vue').useSlots
+2
View File
@@ -1,6 +1,7 @@
import type { PluginOption } from 'vite'
import process from 'node:process'
import { FantasticAutoImports, FantasticComponentsResolver, FantasticComponentsType } from '@fantastic-admin/components/resolver'
import { FantasticComposablesAutoImports } from '@fantastic-admin/composables/resolver'
import { createFantasticAdminCopyrightPlugins } from '@fantastic-admin/copyright'
import VitePluginSvgSpritemap from '@spiriit/vite-plugin-svg-spritemap'
import vueLegacy from '@vitejs/plugin-legacy'
@@ -48,6 +49,7 @@ export default function createVitePlugins(mode: string, isBuild = false) {
'vue-router',
'pinia',
FantasticAutoImports,
FantasticComposablesAutoImports,
],
dts: './src/types/auto-imports.d.ts',
dirs: [
+1
View File
@@ -14,6 +14,7 @@
},
"dependencies": {
"@fantastic-admin/components": "workspace:*",
"@fantastic-admin/composables": "workspace:*",
"@fantastic-admin/settings": "workspace:*",
"@fantastic-admin/types": "workspace:*",
"@vee-validate/zod": "catalog:",
@@ -1,46 +0,0 @@
export function usePagination() {
const pagination = ref({
page: 1,
size: 10,
total: 0,
sort: null as string | null,
order: null as string | null,
})
function getParams() {
return {
// page,size 和 from,limit 是分页的两种方式,方便兼容两种接口
page: pagination.value.page,
size: pagination.value.size,
from: (pagination.value.page - 1) * pagination.value.size,
limit: pagination.value.size,
...(
pagination.value.sort && pagination.value.order && {
sort: pagination.value.sort,
order: pagination.value.order,
}
),
}
}
async function onSizeChange(size: number) {
pagination.value.size = size
}
async function onCurrentChange(page: number) {
pagination.value.page = page
}
async function onSortChange(prop: string, order: string) {
pagination.value.sort = prop
pagination.value.order = order === 'ascending' ? 'asc' : 'desc'
}
return {
pagination,
getParams,
onSizeChange,
onCurrentChange,
onSortChange,
}
}
+1 -1
View File
@@ -87,7 +87,7 @@ declare global {
const useId: typeof import('vue').useId
const useLink: typeof import('vue-router').useLink
const useModel: typeof import('vue').useModel
const usePagination: typeof import('../composables/pagination').usePagination
const usePagination: typeof import('@fantastic-admin/composables').usePagination
const useRoute: typeof import('vue-router').useRoute
const useRouter: typeof import('vue-router').useRouter
const useSlots: typeof import('vue').useSlots
+2
View File
@@ -1,6 +1,7 @@
import type { PluginOption } from 'vite'
import process from 'node:process'
import { FantasticAutoImports, FantasticComponentsResolver, FantasticComponentsType } from '@fantastic-admin/components/resolver'
import { FantasticComposablesAutoImports } from '@fantastic-admin/composables/resolver'
import { createFantasticAdminCopyrightPlugins } from '@fantastic-admin/copyright'
import VitePluginSvgSpritemap from '@spiriit/vite-plugin-svg-spritemap'
import vueLegacy from '@vitejs/plugin-legacy'
@@ -48,6 +49,7 @@ export default function createVitePlugins(mode: string, isBuild = false) {
'vue-router',
'pinia',
FantasticAutoImports,
FantasticComposablesAutoImports,
],
dts: './src/types/auto-imports.d.ts',
dirs: [
+1
View File
@@ -14,6 +14,7 @@
},
"dependencies": {
"@fantastic-admin/components": "workspace:*",
"@fantastic-admin/composables": "workspace:*",
"@fantastic-admin/settings": "workspace:*",
"@fantastic-admin/types": "workspace:*",
"@vee-validate/zod": "catalog:",
@@ -1,46 +0,0 @@
export function usePagination() {
const pagination = ref({
page: 1,
size: 10,
total: 0,
sort: null as string | null,
order: null as string | null,
})
function getParams() {
return {
// page,size 和 from,limit 是分页的两种方式,方便兼容两种接口
page: pagination.value.page,
size: pagination.value.size,
from: (pagination.value.page - 1) * pagination.value.size,
limit: pagination.value.size,
...(
pagination.value.sort && pagination.value.order && {
sort: pagination.value.sort,
order: pagination.value.order,
}
),
}
}
async function onSizeChange(size: number) {
pagination.value.size = size
}
async function onCurrentChange(page: number) {
pagination.value.page = page
}
async function onSortChange(prop: string, order: string) {
pagination.value.sort = prop
pagination.value.order = order === 'ascending' ? 'asc' : 'desc'
}
return {
pagination,
getParams,
onSizeChange,
onCurrentChange,
onSortChange,
}
}
+1 -1
View File
@@ -87,7 +87,7 @@ declare global {
const useId: typeof import('vue').useId
const useLink: typeof import('vue-router').useLink
const useModel: typeof import('vue').useModel
const usePagination: typeof import('../composables/pagination').usePagination
const usePagination: typeof import('@fantastic-admin/composables').usePagination
const useRoute: typeof import('vue-router').useRoute
const useRouter: typeof import('vue-router').useRouter
const useSlots: typeof import('vue').useSlots
@@ -1,6 +1,7 @@
import type { PluginOption } from 'vite'
import process from 'node:process'
import { FantasticAutoImports, FantasticComponentsResolver, FantasticComponentsType } from '@fantastic-admin/components/resolver'
import { FantasticComposablesAutoImports } from '@fantastic-admin/composables/resolver'
import { createFantasticAdminCopyrightPlugins } from '@fantastic-admin/copyright'
import VitePluginSvgSpritemap from '@spiriit/vite-plugin-svg-spritemap'
import vueLegacy from '@vitejs/plugin-legacy'
@@ -48,6 +49,7 @@ export default function createVitePlugins(mode: string, isBuild = false) {
'vue-router',
'pinia',
FantasticAutoImports,
FantasticComposablesAutoImports,
],
dts: './src/types/auto-imports.d.ts',
dirs: [
+1
View File
@@ -14,6 +14,7 @@
},
"dependencies": {
"@fantastic-admin/components": "workspace:*",
"@fantastic-admin/composables": "workspace:*",
"@fantastic-admin/settings": "workspace:*",
"@fantastic-admin/types": "workspace:*",
"@vee-validate/zod": "catalog:",
@@ -1,46 +0,0 @@
export function usePagination() {
const pagination = ref({
page: 1,
size: 10,
total: 0,
sort: null as string | null,
order: null as string | null,
})
function getParams() {
return {
// page,size 和 from,limit 是分页的两种方式,方便兼容两种接口
page: pagination.value.page,
size: pagination.value.size,
from: (pagination.value.page - 1) * pagination.value.size,
limit: pagination.value.size,
...(
pagination.value.sort && pagination.value.order && {
sort: pagination.value.sort,
order: pagination.value.order,
}
),
}
}
async function onSizeChange(size: number) {
pagination.value.size = size
}
async function onCurrentChange(page: number) {
pagination.value.page = page
}
async function onSortChange(prop: string, order: string) {
pagination.value.sort = prop
pagination.value.order = order === 'ascending' ? 'asc' : 'desc'
}
return {
pagination,
getParams,
onSizeChange,
onCurrentChange,
onSortChange,
}
}
+1 -1
View File
@@ -87,7 +87,7 @@ declare global {
const useId: typeof import('vue').useId
const useLink: typeof import('vue-router').useLink
const useModel: typeof import('vue').useModel
const usePagination: typeof import('../composables/pagination').usePagination
const usePagination: typeof import('@fantastic-admin/composables').usePagination
const useRoute: typeof import('vue-router').useRoute
const useRouter: typeof import('vue-router').useRouter
const useSlots: typeof import('vue').useSlots
+2
View File
@@ -1,6 +1,7 @@
import type { PluginOption } from 'vite'
import process from 'node:process'
import { FantasticAutoImports, FantasticComponentsResolver, FantasticComponentsType } from '@fantastic-admin/components/resolver'
import { FantasticComposablesAutoImports } from '@fantastic-admin/composables/resolver'
import { createFantasticAdminCopyrightPlugins } from '@fantastic-admin/copyright'
import VitePluginSvgSpritemap from '@spiriit/vite-plugin-svg-spritemap'
import vueLegacy from '@vitejs/plugin-legacy'
@@ -48,6 +49,7 @@ export default function createVitePlugins(mode: string, isBuild = false) {
'vue-router',
'pinia',
FantasticAutoImports,
FantasticComposablesAutoImports,
],
dts: './src/types/auto-imports.d.ts',
dirs: [
+1
View File
@@ -14,6 +14,7 @@
},
"dependencies": {
"@fantastic-admin/components": "workspace:*",
"@fantastic-admin/composables": "workspace:*",
"@fantastic-admin/settings": "workspace:*",
"@fantastic-admin/types": "workspace:*",
"@vee-validate/zod": "catalog:",
@@ -1,46 +0,0 @@
export function usePagination() {
const pagination = ref({
page: 1,
size: 10,
total: 0,
sort: null as string | null,
order: null as string | null,
})
function getParams() {
return {
// page,size 和 from,limit 是分页的两种方式,方便兼容两种接口
page: pagination.value.page,
size: pagination.value.size,
from: (pagination.value.page - 1) * pagination.value.size,
limit: pagination.value.size,
...(
pagination.value.sort && pagination.value.order && {
sort: pagination.value.sort,
order: pagination.value.order,
}
),
}
}
async function onSizeChange(size: number) {
pagination.value.size = size
}
async function onCurrentChange(page: number) {
pagination.value.page = page
}
async function onSortChange(prop: string, order: string) {
pagination.value.sort = prop
pagination.value.order = order === 'ascending' ? 'asc' : 'desc'
}
return {
pagination,
getParams,
onSizeChange,
onCurrentChange,
onSortChange,
}
}
+1 -1
View File
@@ -87,7 +87,7 @@ declare global {
const useId: typeof import('vue').useId
const useLink: typeof import('vue-router').useLink
const useModel: typeof import('vue').useModel
const usePagination: typeof import('../composables/pagination').usePagination
const usePagination: typeof import('@fantastic-admin/composables').usePagination
const useRoute: typeof import('vue-router').useRoute
const useRouter: typeof import('vue-router').useRouter
const useSlots: typeof import('vue').useSlots
+2
View File
@@ -1,6 +1,7 @@
import type { PluginOption } from 'vite'
import process from 'node:process'
import { FantasticAutoImports, FantasticComponentsResolver, FantasticComponentsType } from '@fantastic-admin/components/resolver'
import { FantasticComposablesAutoImports } from '@fantastic-admin/composables/resolver'
import { createFantasticAdminCopyrightPlugins } from '@fantastic-admin/copyright'
import VitePluginSvgSpritemap from '@spiriit/vite-plugin-svg-spritemap'
import vueLegacy from '@vitejs/plugin-legacy'
@@ -48,6 +49,7 @@ export default function createVitePlugins(mode: string, isBuild = false) {
'vue-router',
'pinia',
FantasticAutoImports,
FantasticComposablesAutoImports,
],
dts: './src/types/auto-imports.d.ts',
dirs: [
+1
View File
@@ -14,6 +14,7 @@
},
"dependencies": {
"@fantastic-admin/components": "workspace:*",
"@fantastic-admin/composables": "workspace:*",
"@fantastic-admin/settings": "workspace:*",
"@fantastic-admin/types": "workspace:*",
"@vee-validate/zod": "catalog:",
@@ -1,46 +0,0 @@
export function usePagination() {
const pagination = ref({
page: 1,
size: 10,
total: 0,
sort: null as string | null,
order: null as string | null,
})
function getParams() {
return {
// page,size 和 from,limit 是分页的两种方式,方便兼容两种接口
page: pagination.value.page,
size: pagination.value.size,
from: (pagination.value.page - 1) * pagination.value.size,
limit: pagination.value.size,
...(
pagination.value.sort && pagination.value.order && {
sort: pagination.value.sort,
order: pagination.value.order,
}
),
}
}
async function onSizeChange(size: number) {
pagination.value.size = size
}
async function onCurrentChange(page: number) {
pagination.value.page = page
}
async function onSortChange(prop: string, order: string) {
pagination.value.sort = prop
pagination.value.order = order === 'ascending' ? 'asc' : 'desc'
}
return {
pagination,
getParams,
onSizeChange,
onCurrentChange,
onSortChange,
}
}
+1 -1
View File
@@ -87,7 +87,7 @@ declare global {
const useId: typeof import('vue').useId
const useLink: typeof import('vue-router').useLink
const useModel: typeof import('vue').useModel
const usePagination: typeof import('../composables/pagination').usePagination
const usePagination: typeof import('@fantastic-admin/composables').usePagination
const useRoute: typeof import('vue-router').useRoute
const useRouter: typeof import('vue-router').useRouter
const useSlots: typeof import('vue').useSlots
+2
View File
@@ -1,6 +1,7 @@
import type { PluginOption } from 'vite'
import process from 'node:process'
import { FantasticAutoImports, FantasticComponentsResolver, FantasticComponentsType } from '@fantastic-admin/components/resolver'
import { FantasticComposablesAutoImports } from '@fantastic-admin/composables/resolver'
import { createFantasticAdminCopyrightPlugins } from '@fantastic-admin/copyright'
import VitePluginSvgSpritemap from '@spiriit/vite-plugin-svg-spritemap'
import vueLegacy from '@vitejs/plugin-legacy'
@@ -48,6 +49,7 @@ export default function createVitePlugins(mode: string, isBuild = false) {
'vue-router',
'pinia',
FantasticAutoImports,
FantasticComposablesAutoImports,
],
dts: './src/types/auto-imports.d.ts',
dirs: [
+1
View File
@@ -14,6 +14,7 @@
},
"dependencies": {
"@fantastic-admin/components": "workspace:*",
"@fantastic-admin/composables": "workspace:*",
"@fantastic-admin/settings": "workspace:*",
"@fantastic-admin/types": "workspace:*",
"@vee-validate/zod": "catalog:",
-46
View File
@@ -1,46 +0,0 @@
export function usePagination() {
const pagination = ref({
page: 1,
size: 10,
total: 0,
sort: null as string | null,
order: null as string | null,
})
function getParams() {
return {
// page,size 和 from,limit 是分页的两种方式,方便兼容两种接口
page: pagination.value.page,
size: pagination.value.size,
from: (pagination.value.page - 1) * pagination.value.size,
limit: pagination.value.size,
...(
pagination.value.sort && pagination.value.order && {
sort: pagination.value.sort,
order: pagination.value.order,
}
),
}
}
async function onSizeChange(size: number) {
pagination.value.size = size
}
async function onCurrentChange(page: number) {
pagination.value.page = page
}
async function onSortChange(prop: string, order: string) {
pagination.value.sort = prop
pagination.value.order = order === 'ascending' ? 'asc' : 'desc'
}
return {
pagination,
getParams,
onSizeChange,
onCurrentChange,
onSortChange,
}
}
+1 -1
View File
@@ -87,7 +87,7 @@ declare global {
const useId: typeof import('vue').useId
const useLink: typeof import('vue-router').useLink
const useModel: typeof import('vue').useModel
const usePagination: typeof import('../composables/pagination').usePagination
const usePagination: typeof import('@fantastic-admin/composables').usePagination
const useRoute: typeof import('vue-router').useRoute
const useRouter: typeof import('vue-router').useRouter
const useSlots: typeof import('vue').useSlots
+2
View File
@@ -1,6 +1,7 @@
import type { PluginOption } from 'vite'
import process from 'node:process'
import { FantasticAutoImports, FantasticComponentsResolver, FantasticComponentsType } from '@fantastic-admin/components/resolver'
import { FantasticComposablesAutoImports } from '@fantastic-admin/composables/resolver'
import { createFantasticAdminCopyrightPlugins } from '@fantastic-admin/copyright'
import VitePluginSvgSpritemap from '@spiriit/vite-plugin-svg-spritemap'
import vueLegacy from '@vitejs/plugin-legacy'
@@ -48,6 +49,7 @@ export default function createVitePlugins(mode: string, isBuild = false) {
'vue-router',
'pinia',
FantasticAutoImports,
FantasticComposablesAutoImports,
],
dts: './src/types/auto-imports.d.ts',
dirs: [
+1
View File
@@ -17,6 +17,7 @@
"@bytemd/plugin-gfm": "catalog:",
"@bytemd/vue-next": "catalog:",
"@fantastic-admin/components": "workspace:*",
"@fantastic-admin/composables": "workspace:*",
"@fantastic-admin/settings": "workspace:*",
"@fantastic-admin/types": "workspace:*",
"@tinymce/tinymce-vue": "catalog:",
@@ -1,46 +0,0 @@
export function usePagination() {
const pagination = ref({
page: 1,
size: 10,
total: 0,
sort: null as string | null,
order: null as string | null,
})
function getParams() {
return {
// page,size 和 from,limit 是分页的两种方式,方便兼容两种接口
page: pagination.value.page,
size: pagination.value.size,
from: (pagination.value.page - 1) * pagination.value.size,
limit: pagination.value.size,
...(
pagination.value.sort && pagination.value.order && {
sort: pagination.value.sort,
order: pagination.value.order,
}
),
}
}
async function onSizeChange(size: number) {
pagination.value.size = size
}
async function onCurrentChange(page: number) {
pagination.value.page = page
}
async function onSortChange(prop: string, order: string) {
pagination.value.sort = prop
pagination.value.order = order === 'ascending' ? 'asc' : 'desc'
}
return {
pagination,
getParams,
onSizeChange,
onCurrentChange,
onSortChange,
}
}
+1 -1
View File
@@ -88,7 +88,7 @@ declare global {
const useId: typeof import('vue').useId
const useLink: typeof import('vue-router').useLink
const useModel: typeof import('vue').useModel
const usePagination: typeof import('../composables/pagination').usePagination
const usePagination: typeof import('@fantastic-admin/composables').usePagination
const useRoute: typeof import('vue-router').useRoute
const useRouter: typeof import('vue-router').useRouter
const useSlots: typeof import('vue').useSlots
+2
View File
@@ -1,6 +1,7 @@
import type { PluginOption } from 'vite'
import process from 'node:process'
import { FantasticAutoImports, FantasticComponentsResolver, FantasticComponentsType } from '@fantastic-admin/components/resolver'
import { FantasticComposablesAutoImports } from '@fantastic-admin/composables/resolver'
import { createFantasticAdminCopyrightPlugins } from '@fantastic-admin/copyright'
import VitePluginSvgSpritemap from '@spiriit/vite-plugin-svg-spritemap'
import vueLegacy from '@vitejs/plugin-legacy'
@@ -48,6 +49,7 @@ export default function createVitePlugins(mode: string, isBuild = false) {
'vue-router',
'pinia',
FantasticAutoImports,
FantasticComposablesAutoImports,
],
dts: './src/types/auto-imports.d.ts',
dirs: [
+7
View File
@@ -0,0 +1,7 @@
import { defineBuildConfig } from 'unbuild'
export default defineBuildConfig({
entries: ['./resolver'],
declaration: false,
clean: true,
})
+1
View File
@@ -0,0 +1 @@
export { usePagination } from './src/pagination'
+24
View File
@@ -0,0 +1,24 @@
{
"name": "@fantastic-admin/composables",
"type": "module",
"version": "0.0.0",
"exports": {
".": "./index.ts",
"./resolver": {
"types": "./resolver.ts",
"import": "./dist/resolver.mjs"
}
},
"scripts": {
"stub": "pnpm unbuild --stub"
},
"peerDependencies": {
"unplugin-auto-import": "catalog:",
"vue": "catalog:"
},
"peerDependenciesMeta": {
"unplugin-auto-import": {
"optional": true
}
}
}
+11
View File
@@ -0,0 +1,11 @@
import type { ImportsMap } from 'unplugin-auto-import/types'
const PACKAGE_NAME = '@fantastic-admin/composables'
const AUTO_IMPORT_NAMES = [
'usePagination',
] as const
export const FantasticComposablesAutoImports: ImportsMap = {
[PACKAGE_NAME]: [...AUTO_IMPORT_NAMES],
}
@@ -1,3 +1,5 @@
import { ref } from 'vue'
export function usePagination() {
const pagination = ref({
page: 1,
+14
View File
@@ -0,0 +1,14 @@
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"lib": ["ESNext", "DOM", "DOM.Iterable"],
"types": ["vite/client"]
},
"include": [
"build.config.ts",
"index.ts",
"resolver.ts",
"src/**/*.ts",
"src/**/*.d.ts"
]
}
+33
View File
@@ -452,6 +452,9 @@ importers:
'@fantastic-admin/components':
specifier: workspace:*
version: link:../../packages/components
'@fantastic-admin/composables':
specifier: workspace:*
version: link:../../packages/composables
'@fantastic-admin/settings':
specifier: workspace:*
version: link:../../packages/settings
@@ -645,6 +648,9 @@ importers:
'@fantastic-admin/components':
specifier: workspace:*
version: link:../../packages/components
'@fantastic-admin/composables':
specifier: workspace:*
version: link:../../packages/composables
'@fantastic-admin/settings':
specifier: workspace:*
version: link:../../packages/settings
@@ -838,6 +844,9 @@ importers:
'@fantastic-admin/components':
specifier: workspace:*
version: link:../../packages/components
'@fantastic-admin/composables':
specifier: workspace:*
version: link:../../packages/composables
'@fantastic-admin/settings':
specifier: workspace:*
version: link:../../packages/settings
@@ -1031,6 +1040,9 @@ importers:
'@fantastic-admin/components':
specifier: workspace:*
version: link:../../packages/components
'@fantastic-admin/composables':
specifier: workspace:*
version: link:../../packages/composables
'@fantastic-admin/settings':
specifier: workspace:*
version: link:../../packages/settings
@@ -1224,6 +1236,9 @@ importers:
'@fantastic-admin/components':
specifier: workspace:*
version: link:../../packages/components
'@fantastic-admin/composables':
specifier: workspace:*
version: link:../../packages/composables
'@fantastic-admin/settings':
specifier: workspace:*
version: link:../../packages/settings
@@ -1417,6 +1432,9 @@ importers:
'@fantastic-admin/components':
specifier: workspace:*
version: link:../../packages/components
'@fantastic-admin/composables':
specifier: workspace:*
version: link:../../packages/composables
'@fantastic-admin/settings':
specifier: workspace:*
version: link:../../packages/settings
@@ -1610,6 +1628,9 @@ importers:
'@fantastic-admin/components':
specifier: workspace:*
version: link:../../packages/components
'@fantastic-admin/composables':
specifier: workspace:*
version: link:../../packages/composables
'@fantastic-admin/settings':
specifier: workspace:*
version: link:../../packages/settings
@@ -1812,6 +1833,9 @@ importers:
'@fantastic-admin/components':
specifier: workspace:*
version: link:../../packages/components
'@fantastic-admin/composables':
specifier: workspace:*
version: link:../../packages/composables
'@fantastic-admin/settings':
specifier: workspace:*
version: link:../../packages/settings
@@ -2111,6 +2135,15 @@ importers:
specifier: 'catalog:'
version: 2.0.9
packages/composables:
dependencies:
unplugin-auto-import:
specifier: 'catalog:'
version: 21.0.0(@vueuse/core@14.2.1(vue@3.5.32(typescript@6.0.2)))
vue:
specifier: 'catalog:'
version: 3.5.32(typescript@6.0.2)
packages/copyright:
dependencies:
boxen: