mirror of https://github.com/halo-dev/halo-admin
parent
d4f40481ab
commit
d15c1636bd
15
package.json
15
package.json
|
@ -25,12 +25,15 @@
|
||||||
"packages/*"
|
"packages/*"
|
||||||
],
|
],
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@formkit/core": "1.0.0-beta.9",
|
||||||
|
"@formkit/i18n": "1.0.0-beta.9",
|
||||||
|
"@formkit/inputs": "1.0.0-beta.9",
|
||||||
"@formkit/themes": "1.0.0-beta.9",
|
"@formkit/themes": "1.0.0-beta.9",
|
||||||
"@formkit/vue": "1.0.0-beta.9",
|
"@formkit/vue": "1.0.0-beta.9",
|
||||||
"@halo-dev/admin-api": "^1.1.0",
|
"@halo-dev/admin-api": "^1.1.0",
|
||||||
"@halo-dev/admin-shared": "workspace:*",
|
"@halo-dev/admin-shared": "workspace:*",
|
||||||
"@halo-dev/components": "workspace:*",
|
"@halo-dev/components": "workspace:*",
|
||||||
"@vueuse/core": "^8.7.5",
|
"@vueuse/core": "^8.9.0",
|
||||||
"filepond": "^4.30.4",
|
"filepond": "^4.30.4",
|
||||||
"filepond-plugin-image-preview": "^4.6.11",
|
"filepond-plugin-image-preview": "^4.6.11",
|
||||||
"floating-vue": "2.0.0-beta.16",
|
"floating-vue": "2.0.0-beta.16",
|
||||||
|
@ -41,7 +44,7 @@
|
||||||
"vue": "^3.2.37",
|
"vue": "^3.2.37",
|
||||||
"vue-filepond": "^7.0.3",
|
"vue-filepond": "^7.0.3",
|
||||||
"vue-grid-layout": "3.0.0-beta1",
|
"vue-grid-layout": "3.0.0-beta1",
|
||||||
"vue-router": "^4.0.16"
|
"vue-router": "^4.1.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@rushstack/eslint-patch": "^1.1.4",
|
"@rushstack/eslint-patch": "^1.1.4",
|
||||||
|
@ -57,14 +60,14 @@
|
||||||
"@vue/compiler-sfc": "^3.2.37",
|
"@vue/compiler-sfc": "^3.2.37",
|
||||||
"@vue/eslint-config-prettier": "^7.0.0",
|
"@vue/eslint-config-prettier": "^7.0.0",
|
||||||
"@vue/eslint-config-typescript": "^11.0.0",
|
"@vue/eslint-config-typescript": "^11.0.0",
|
||||||
"@vue/test-utils": "^2.0.1",
|
"@vue/test-utils": "^2.0.2",
|
||||||
"@vue/tsconfig": "^0.1.3",
|
"@vue/tsconfig": "^0.1.3",
|
||||||
"autoprefixer": "^10.4.7",
|
"autoprefixer": "^10.4.7",
|
||||||
"c8": "^7.11.3",
|
"c8": "^7.11.3",
|
||||||
"cypress": "^9.7.0",
|
"cypress": "^9.7.0",
|
||||||
"eslint": "^8.19.0",
|
"eslint": "^8.19.0",
|
||||||
"eslint-plugin-cypress": "^2.12.1",
|
"eslint-plugin-cypress": "^2.12.1",
|
||||||
"eslint-plugin-vue": "^9.1.1",
|
"eslint-plugin-vue": "^9.2.0",
|
||||||
"husky": "^8.0.1",
|
"husky": "^8.0.1",
|
||||||
"jsdom": "^19.0.0",
|
"jsdom": "^19.0.0",
|
||||||
"postcss": "^8.4.14",
|
"postcss": "^8.4.14",
|
||||||
|
@ -80,9 +83,9 @@
|
||||||
"vite-compression-plugin": "^0.0.4",
|
"vite-compression-plugin": "^0.0.4",
|
||||||
"vite-plugin-externals": "^0.5.0",
|
"vite-plugin-externals": "^0.5.0",
|
||||||
"vite-plugin-pwa": "^0.12.2",
|
"vite-plugin-pwa": "^0.12.2",
|
||||||
"vite-plugin-static-copy": "^0.6.0",
|
"vite-plugin-static-copy": "^0.6.1",
|
||||||
"vite-plugin-vue-setup-extend": "^0.4.0",
|
"vite-plugin-vue-setup-extend": "^0.4.0",
|
||||||
"vitest": "^0.16.0",
|
"vitest": "^0.16.0",
|
||||||
"vue-tsc": "^0.38.2"
|
"vue-tsc": "^0.38.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
134
pnpm-lock.yaml
134
pnpm-lock.yaml
|
@ -4,6 +4,9 @@ importers:
|
||||||
|
|
||||||
.:
|
.:
|
||||||
specifiers:
|
specifiers:
|
||||||
|
'@formkit/core': 1.0.0-beta.9
|
||||||
|
'@formkit/i18n': 1.0.0-beta.9
|
||||||
|
'@formkit/inputs': 1.0.0-beta.9
|
||||||
'@formkit/themes': 1.0.0-beta.9
|
'@formkit/themes': 1.0.0-beta.9
|
||||||
'@formkit/vue': 1.0.0-beta.9
|
'@formkit/vue': 1.0.0-beta.9
|
||||||
'@halo-dev/admin-api': ^1.1.0
|
'@halo-dev/admin-api': ^1.1.0
|
||||||
|
@ -22,15 +25,15 @@ importers:
|
||||||
'@vue/compiler-sfc': ^3.2.37
|
'@vue/compiler-sfc': ^3.2.37
|
||||||
'@vue/eslint-config-prettier': ^7.0.0
|
'@vue/eslint-config-prettier': ^7.0.0
|
||||||
'@vue/eslint-config-typescript': ^11.0.0
|
'@vue/eslint-config-typescript': ^11.0.0
|
||||||
'@vue/test-utils': ^2.0.1
|
'@vue/test-utils': ^2.0.2
|
||||||
'@vue/tsconfig': ^0.1.3
|
'@vue/tsconfig': ^0.1.3
|
||||||
'@vueuse/core': ^8.7.5
|
'@vueuse/core': ^8.9.0
|
||||||
autoprefixer: ^10.4.7
|
autoprefixer: ^10.4.7
|
||||||
c8: ^7.11.3
|
c8: ^7.11.3
|
||||||
cypress: ^9.7.0
|
cypress: ^9.7.0
|
||||||
eslint: ^8.19.0
|
eslint: ^8.19.0
|
||||||
eslint-plugin-cypress: ^2.12.1
|
eslint-plugin-cypress: ^2.12.1
|
||||||
eslint-plugin-vue: ^9.1.1
|
eslint-plugin-vue: ^9.2.0
|
||||||
filepond: ^4.30.4
|
filepond: ^4.30.4
|
||||||
filepond-plugin-image-preview: ^4.6.11
|
filepond-plugin-image-preview: ^4.6.11
|
||||||
floating-vue: 2.0.0-beta.16
|
floating-vue: 2.0.0-beta.16
|
||||||
|
@ -53,21 +56,24 @@ importers:
|
||||||
vite-compression-plugin: ^0.0.4
|
vite-compression-plugin: ^0.0.4
|
||||||
vite-plugin-externals: ^0.5.0
|
vite-plugin-externals: ^0.5.0
|
||||||
vite-plugin-pwa: ^0.12.2
|
vite-plugin-pwa: ^0.12.2
|
||||||
vite-plugin-static-copy: ^0.6.0
|
vite-plugin-static-copy: ^0.6.1
|
||||||
vite-plugin-vue-setup-extend: ^0.4.0
|
vite-plugin-vue-setup-extend: ^0.4.0
|
||||||
vitest: ^0.16.0
|
vitest: ^0.16.0
|
||||||
vue: ^3.2.37
|
vue: ^3.2.37
|
||||||
vue-filepond: ^7.0.3
|
vue-filepond: ^7.0.3
|
||||||
vue-grid-layout: 3.0.0-beta1
|
vue-grid-layout: 3.0.0-beta1
|
||||||
vue-router: ^4.0.16
|
vue-router: ^4.1.1
|
||||||
vue-tsc: ^0.38.2
|
vue-tsc: ^0.38.3
|
||||||
dependencies:
|
dependencies:
|
||||||
|
'@formkit/core': 1.0.0-beta.9
|
||||||
|
'@formkit/i18n': 1.0.0-beta.9
|
||||||
|
'@formkit/inputs': 1.0.0-beta.9
|
||||||
'@formkit/themes': 1.0.0-beta.9_tailwindcss@3.1.4
|
'@formkit/themes': 1.0.0-beta.9_tailwindcss@3.1.4
|
||||||
'@formkit/vue': 1.0.0-beta.9_rkpirzljteu3gouykqigqhmb7i
|
'@formkit/vue': 1.0.0-beta.9_rkpirzljteu3gouykqigqhmb7i
|
||||||
'@halo-dev/admin-api': 1.1.0
|
'@halo-dev/admin-api': 1.1.0
|
||||||
'@halo-dev/admin-shared': link:packages/shared
|
'@halo-dev/admin-shared': link:packages/shared
|
||||||
'@halo-dev/components': link:packages/components
|
'@halo-dev/components': link:packages/components
|
||||||
'@vueuse/core': 8.7.5_vue@3.2.37
|
'@vueuse/core': 8.9.0_vue@3.2.37
|
||||||
filepond: 4.30.4
|
filepond: 4.30.4
|
||||||
filepond-plugin-image-preview: 4.6.11_filepond@4.30.4
|
filepond-plugin-image-preview: 4.6.11_filepond@4.30.4
|
||||||
floating-vue: 2.0.0-beta.16_vue@3.2.37
|
floating-vue: 2.0.0-beta.16_vue@3.2.37
|
||||||
|
@ -78,7 +84,7 @@ importers:
|
||||||
vue: 3.2.37
|
vue: 3.2.37
|
||||||
vue-filepond: 7.0.3_filepond@4.30.4+vue@3.2.37
|
vue-filepond: 7.0.3_filepond@4.30.4+vue@3.2.37
|
||||||
vue-grid-layout: 3.0.0-beta1
|
vue-grid-layout: 3.0.0-beta1
|
||||||
vue-router: 4.0.16_vue@3.2.37
|
vue-router: 4.1.1_vue@3.2.37
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@rushstack/eslint-patch': 1.1.4
|
'@rushstack/eslint-patch': 1.1.4
|
||||||
'@tailwindcss/aspect-ratio': 0.4.0_tailwindcss@3.1.4
|
'@tailwindcss/aspect-ratio': 0.4.0_tailwindcss@3.1.4
|
||||||
|
@ -92,15 +98,15 @@ importers:
|
||||||
'@vitest/ui': 0.16.0
|
'@vitest/ui': 0.16.0
|
||||||
'@vue/compiler-sfc': 3.2.37
|
'@vue/compiler-sfc': 3.2.37
|
||||||
'@vue/eslint-config-prettier': 7.0.0_exbhzpnbupd3ikhi4722x4yn6e
|
'@vue/eslint-config-prettier': 7.0.0_exbhzpnbupd3ikhi4722x4yn6e
|
||||||
'@vue/eslint-config-typescript': 11.0.0_rbwfxavh274jq5nrli6gjtdzua
|
'@vue/eslint-config-typescript': 11.0.0_hko2ljsyixuca7xzzs7dalplrm
|
||||||
'@vue/test-utils': 2.0.1_vue@3.2.37
|
'@vue/test-utils': 2.0.2_vue@3.2.37
|
||||||
'@vue/tsconfig': 0.1.3_@types+node@17.0.45
|
'@vue/tsconfig': 0.1.3_@types+node@17.0.45
|
||||||
autoprefixer: 10.4.7_postcss@8.4.14
|
autoprefixer: 10.4.7_postcss@8.4.14
|
||||||
c8: 7.11.3
|
c8: 7.11.3
|
||||||
cypress: 9.7.0
|
cypress: 9.7.0
|
||||||
eslint: 8.19.0
|
eslint: 8.19.0
|
||||||
eslint-plugin-cypress: 2.12.1_eslint@8.19.0
|
eslint-plugin-cypress: 2.12.1_eslint@8.19.0
|
||||||
eslint-plugin-vue: 9.1.1_eslint@8.19.0
|
eslint-plugin-vue: 9.2.0_eslint@8.19.0
|
||||||
husky: 8.0.1
|
husky: 8.0.1
|
||||||
jsdom: 19.0.0
|
jsdom: 19.0.0
|
||||||
postcss: 8.4.14
|
postcss: 8.4.14
|
||||||
|
@ -116,10 +122,10 @@ importers:
|
||||||
vite-compression-plugin: 0.0.4
|
vite-compression-plugin: 0.0.4
|
||||||
vite-plugin-externals: 0.5.0_vite@2.9.13
|
vite-plugin-externals: 0.5.0_vite@2.9.13
|
||||||
vite-plugin-pwa: 0.12.2_vite@2.9.13
|
vite-plugin-pwa: 0.12.2_vite@2.9.13
|
||||||
vite-plugin-static-copy: 0.6.0_vite@2.9.13
|
vite-plugin-static-copy: 0.6.1_vite@2.9.13
|
||||||
vite-plugin-vue-setup-extend: 0.4.0_vite@2.9.13
|
vite-plugin-vue-setup-extend: 0.4.0_vite@2.9.13
|
||||||
vitest: 0.16.0_5rlefaqlpcnjufbjtd4545rida
|
vitest: 0.16.0_5rlefaqlpcnjufbjtd4545rida
|
||||||
vue-tsc: 0.38.2_typescript@4.7.4
|
vue-tsc: 0.38.3_typescript@4.7.4
|
||||||
|
|
||||||
packages/components:
|
packages/components:
|
||||||
specifiers:
|
specifiers:
|
||||||
|
@ -2429,32 +2435,32 @@ packages:
|
||||||
sirv: 2.0.2
|
sirv: 2.0.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@volar/code-gen/0.38.2:
|
/@volar/code-gen/0.38.3:
|
||||||
resolution: {integrity: sha512-H81I6d7rZB7teqL+zhK/Xz1v0/kKkUwkB0Aq6b4+BTCqcJeiZkoWxd0gFhrhWTnUoqiM83lhoTGo2vkvx5YagQ==}
|
resolution: {integrity: sha512-0yCkDtaxffyfC9e2dSLGXJmG3b0rCfTa6vqxjr70ZFTtcf/VytmMBwboFicnm+Zoen9EI8wUNfw4upw9Slz5RQ==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@volar/source-map': 0.38.2
|
'@volar/source-map': 0.38.3
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@volar/source-map/0.38.2:
|
/@volar/source-map/0.38.3:
|
||||||
resolution: {integrity: sha512-DWcYbYt9SPwk0r4VmXk1F0v4X5+hCqH1JRkAWSeJymQyXCQ2OQDEbY2PF12a7y2qn4FUBD2gOba2TynAqI8ZFQ==}
|
resolution: {integrity: sha512-8aVM+r4lsHnLjhvnjQ6kn4J++3I6VXtJblcGzWuIOn9M8pJmRGW6Si/eOVjayLWfvPCxXUM7e3sg4Nm2tufTmg==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@volar/vue-code-gen/0.38.2:
|
/@volar/vue-code-gen/0.38.3:
|
||||||
resolution: {integrity: sha512-whLunD6phSGWBUHZKdTxeglrpzQu26ii8CRVapFdjfyMaVhQ7ESNeIAhkTVyg2ovOPc0PiDYPQEPzfWAADIWog==}
|
resolution: {integrity: sha512-euVuKtwV/KurRSVwNz5bZbCBJLwVOE56+Uh2PhsHcAM5Wzlt82cwLj07FbFagCftoC3IC/bsn43yuLc2I+ZjAQ==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@volar/code-gen': 0.38.2
|
'@volar/code-gen': 0.38.3
|
||||||
'@volar/source-map': 0.38.2
|
'@volar/source-map': 0.38.3
|
||||||
'@vue/compiler-core': 3.2.37
|
'@vue/compiler-core': 3.2.37
|
||||||
'@vue/compiler-dom': 3.2.37
|
'@vue/compiler-dom': 3.2.37
|
||||||
'@vue/shared': 3.2.37
|
'@vue/shared': 3.2.37
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@volar/vue-typescript/0.38.2:
|
/@volar/vue-typescript/0.38.3:
|
||||||
resolution: {integrity: sha512-5IKvSK2m5yUmH6iu/tNScVlvJGuiHawTfSmjxaMs+/tod25WeK37LEdf+pdKtlJ30bYTQmmkAuEfG01QvvBRGQ==}
|
resolution: {integrity: sha512-rXh4RQBZrNfkiSnpBYbHrsxg7vBbZeYsGFgE/n8FVLcZfGlelsdXFIINsr/aZGUCJre9I15wQ44eEmXnc4+qww==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@volar/code-gen': 0.38.2
|
'@volar/code-gen': 0.38.3
|
||||||
'@volar/source-map': 0.38.2
|
'@volar/source-map': 0.38.3
|
||||||
'@volar/vue-code-gen': 0.38.2
|
'@volar/vue-code-gen': 0.38.3
|
||||||
'@vue/compiler-sfc': 3.2.37
|
'@vue/compiler-sfc': 3.2.37
|
||||||
'@vue/reactivity': 3.2.37
|
'@vue/reactivity': 3.2.37
|
||||||
dev: true
|
dev: true
|
||||||
|
@ -2529,7 +2535,7 @@ packages:
|
||||||
prettier: 2.7.1
|
prettier: 2.7.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@vue/eslint-config-typescript/11.0.0_rbwfxavh274jq5nrli6gjtdzua:
|
/@vue/eslint-config-typescript/11.0.0_hko2ljsyixuca7xzzs7dalplrm:
|
||||||
resolution: {integrity: sha512-txuRzxnQVmtUvvy9UyWUy9sHWXNeRPGmSPqP53hRtaiUeCTAondI9Ho9GQYI/8/eWljYOST7iA4Aa8sANBkWaA==}
|
resolution: {integrity: sha512-txuRzxnQVmtUvvy9UyWUy9sHWXNeRPGmSPqP53hRtaiUeCTAondI9Ho9GQYI/8/eWljYOST7iA4Aa8sANBkWaA==}
|
||||||
engines: {node: ^14.17.0 || >=16.0.0}
|
engines: {node: ^14.17.0 || >=16.0.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
|
@ -2543,7 +2549,7 @@ packages:
|
||||||
'@typescript-eslint/eslint-plugin': 5.13.0_vv7hakxknrvn7cajscbm2swloy
|
'@typescript-eslint/eslint-plugin': 5.13.0_vv7hakxknrvn7cajscbm2swloy
|
||||||
'@typescript-eslint/parser': 5.13.0_4x5o4skxv6sl53vpwefgt23khm
|
'@typescript-eslint/parser': 5.13.0_4x5o4skxv6sl53vpwefgt23khm
|
||||||
eslint: 8.19.0
|
eslint: 8.19.0
|
||||||
eslint-plugin-vue: 9.1.1_eslint@8.19.0
|
eslint-plugin-vue: 9.2.0_eslint@8.19.0
|
||||||
typescript: 4.7.4
|
typescript: 4.7.4
|
||||||
vue-eslint-parser: 9.0.2_eslint@8.19.0
|
vue-eslint-parser: 9.0.2_eslint@8.19.0
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
|
@ -2589,8 +2595,8 @@ packages:
|
||||||
/@vue/shared/3.2.37:
|
/@vue/shared/3.2.37:
|
||||||
resolution: {integrity: sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw==}
|
resolution: {integrity: sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw==}
|
||||||
|
|
||||||
/@vue/test-utils/2.0.1_vue@3.2.37:
|
/@vue/test-utils/2.0.2_vue@3.2.37:
|
||||||
resolution: {integrity: sha512-4kt7Sw1gzXeQOsMqrwrQbmEiG8El4MP8P4hfxkmfXdUHf7yHa3xC5CQc0x2YyuhT41w2d4K4O0ZdRvZhGdZlow==}
|
resolution: {integrity: sha512-E2P4oXSaWDqTZNbmKZFVLrNN/siVN78YkEqs7pHryWerrlZR9bBFLWdJwRoguX45Ru6HxIflzKl4vQvwRMwm5g==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
vue: ^3.0.1
|
vue: ^3.0.1
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -2624,9 +2630,33 @@ packages:
|
||||||
'@vueuse/shared': 8.7.5_vue@3.2.37
|
'@vueuse/shared': 8.7.5_vue@3.2.37
|
||||||
vue: 3.2.37
|
vue: 3.2.37
|
||||||
vue-demi: 0.12.1_vue@3.2.37
|
vue-demi: 0.12.1_vue@3.2.37
|
||||||
|
dev: true
|
||||||
|
|
||||||
|
/@vueuse/core/8.9.0_vue@3.2.37:
|
||||||
|
resolution: {integrity: sha512-eKWehF6gsiLYxnYM/1xgDu16bKED7AWvkk56JIFNQes8OKgktr3Jc1wUy8UWIulrnwCXICUu9YUo+Wkq4r2JNw==}
|
||||||
|
peerDependencies:
|
||||||
|
'@vue/composition-api': ^1.1.0
|
||||||
|
vue: ^2.6.0 || ^3.2.0
|
||||||
|
peerDependenciesMeta:
|
||||||
|
'@vue/composition-api':
|
||||||
|
optional: true
|
||||||
|
vue:
|
||||||
|
optional: true
|
||||||
|
dependencies:
|
||||||
|
'@types/web-bluetooth': 0.0.14
|
||||||
|
'@vueuse/metadata': 8.9.0
|
||||||
|
'@vueuse/shared': 8.9.0_vue@3.2.37
|
||||||
|
vue: 3.2.37
|
||||||
|
vue-demi: 0.12.1_vue@3.2.37
|
||||||
|
dev: false
|
||||||
|
|
||||||
/@vueuse/metadata/8.7.5:
|
/@vueuse/metadata/8.7.5:
|
||||||
resolution: {integrity: sha512-emJZKRQSaEnVqmlu39NpNp8iaW+bPC2kWykWoWOZMSlO/0QVEmO/rt8A5VhOEJTKLX3vwTevqbiRy9WJRwVOQg==}
|
resolution: {integrity: sha512-emJZKRQSaEnVqmlu39NpNp8iaW+bPC2kWykWoWOZMSlO/0QVEmO/rt8A5VhOEJTKLX3vwTevqbiRy9WJRwVOQg==}
|
||||||
|
dev: true
|
||||||
|
|
||||||
|
/@vueuse/metadata/8.9.0:
|
||||||
|
resolution: {integrity: sha512-pjkIbQgJPRUrxK5/iXVKQFGC+OhJ+Vd6fhBsdwgj+NNJEHUotRliYymwdvhnEke/o+kkulT0xMvoK19nyPoiMw==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/@vueuse/shared/8.7.5_vue@3.2.37:
|
/@vueuse/shared/8.7.5_vue@3.2.37:
|
||||||
resolution: {integrity: sha512-THXPvMBFmg6Gf6AwRn/EdTh2mhqwjGsB2Yfp374LNQSQVKRHtnJ0I42bsZTn7nuEliBxqUrGQm/lN6qUHmhJLw==}
|
resolution: {integrity: sha512-THXPvMBFmg6Gf6AwRn/EdTh2mhqwjGsB2Yfp374LNQSQVKRHtnJ0I42bsZTn7nuEliBxqUrGQm/lN6qUHmhJLw==}
|
||||||
|
@ -2641,6 +2671,22 @@ packages:
|
||||||
dependencies:
|
dependencies:
|
||||||
vue: 3.2.37
|
vue: 3.2.37
|
||||||
vue-demi: 0.12.1_vue@3.2.37
|
vue-demi: 0.12.1_vue@3.2.37
|
||||||
|
dev: true
|
||||||
|
|
||||||
|
/@vueuse/shared/8.9.0_vue@3.2.37:
|
||||||
|
resolution: {integrity: sha512-Pmu3Fopk/JJjN8b90uQuFrVCc/RPcSA/0zDFRTyn3YIhoB5ESna/1Sac5WZxK+n82g/ERXHHQTetGI9yxEdPfA==}
|
||||||
|
peerDependencies:
|
||||||
|
'@vue/composition-api': ^1.1.0
|
||||||
|
vue: ^2.6.0 || ^3.2.0
|
||||||
|
peerDependenciesMeta:
|
||||||
|
'@vue/composition-api':
|
||||||
|
optional: true
|
||||||
|
vue:
|
||||||
|
optional: true
|
||||||
|
dependencies:
|
||||||
|
vue: 3.2.37
|
||||||
|
vue-demi: 0.12.1_vue@3.2.37
|
||||||
|
dev: false
|
||||||
|
|
||||||
/abab/2.0.5:
|
/abab/2.0.5:
|
||||||
resolution: {integrity: sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==}
|
resolution: {integrity: sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==}
|
||||||
|
@ -3922,8 +3968,8 @@ packages:
|
||||||
prettier-linter-helpers: 1.0.0
|
prettier-linter-helpers: 1.0.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/eslint-plugin-vue/9.1.1_eslint@8.19.0:
|
/eslint-plugin-vue/9.2.0_eslint@8.19.0:
|
||||||
resolution: {integrity: sha512-W9n5PB1X2jzC7CK6riG0oAcxjmKrjTF6+keL1rni8n57DZeilx/Fulz+IRJK3lYseLNAygN0I62L7DvioW40Tw==}
|
resolution: {integrity: sha512-W2hc+NUXoce8sZtWgZ45miQTy6jNyuSdub5aZ1IBune4JDeAyzucYX0TzkrQ1jMO52sNUDYlCIHDoaNePe0p5g==}
|
||||||
engines: {node: ^14.17.0 || >=16.0.0}
|
engines: {node: ^14.17.0 || >=16.0.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^6.2.0 || ^7.0.0 || ^8.0.0
|
eslint: ^6.2.0 || ^7.0.0 || ^8.0.0
|
||||||
|
@ -3933,7 +3979,7 @@ packages:
|
||||||
natural-compare: 1.4.0
|
natural-compare: 1.4.0
|
||||||
nth-check: 2.0.1
|
nth-check: 2.0.1
|
||||||
postcss-selector-parser: 6.0.10
|
postcss-selector-parser: 6.0.10
|
||||||
semver: 7.3.5
|
semver: 7.3.7
|
||||||
vue-eslint-parser: 9.0.2_eslint@8.19.0
|
vue-eslint-parser: 9.0.2_eslint@8.19.0
|
||||||
xml-name-validator: 4.0.0
|
xml-name-validator: 4.0.0
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
|
@ -6894,8 +6940,8 @@ packages:
|
||||||
- supports-color
|
- supports-color
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/vite-plugin-static-copy/0.6.0_vite@2.9.13:
|
/vite-plugin-static-copy/0.6.1_vite@2.9.13:
|
||||||
resolution: {integrity: sha512-KfNhy33p//M5Fq1RcZU+H+1KVagXR9JbAy6KIE8IiWj2j3wRtRPoyh8TYJvVgC+adyKj3Y+KiGUf0GwjI9JHtg==}
|
resolution: {integrity: sha512-A6SMuRPhJ9igTStuzZKkkWtz+4PukhI2WsmcmMQ2emPHlexh/LqgHksqWlKDQ08mqWzlEp4zYbT2IlG45s5GNw==}
|
||||||
engines: {node: '>=12.2'}
|
engines: {node: '>=12.2'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
vite: ^2.6.14
|
vite: ^2.6.14
|
||||||
|
@ -7083,14 +7129,24 @@ packages:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vue/devtools-api': 6.1.4
|
'@vue/devtools-api': 6.1.4
|
||||||
vue: 3.2.37
|
vue: 3.2.37
|
||||||
|
dev: true
|
||||||
|
|
||||||
/vue-tsc/0.38.2_typescript@4.7.4:
|
/vue-router/4.1.1_vue@3.2.37:
|
||||||
resolution: {integrity: sha512-+OMmpw9BZC9khul3I1HGtWchv7BCiaM7NvfdilVAiOFkjnivIoaW6jJm6YPQJaEPouePtpkDUWovyzgNxWdDsw==}
|
resolution: {integrity: sha512-Wp1mEf2xCwT0ez7o9JvgpfBp9JGnVb+dPERzXDbugTatzJAJ60VWOhJKifQty85k+jOreoFHER4r5fu062PhPw==}
|
||||||
|
peerDependencies:
|
||||||
|
vue: ^3.2.0
|
||||||
|
dependencies:
|
||||||
|
'@vue/devtools-api': 6.1.4
|
||||||
|
vue: 3.2.37
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/vue-tsc/0.38.3_typescript@4.7.4:
|
||||||
|
resolution: {integrity: sha512-mWlneSF+PG2kXYGJI12N4XEAG4ljAkae7IcB93fspqSkEt/oKwDbWy3DzcPSgUm0LsXqOUprTMaZkwDVSRBIvw==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
typescript: '*'
|
typescript: '*'
|
||||||
dependencies:
|
dependencies:
|
||||||
'@volar/vue-typescript': 0.38.2
|
'@volar/vue-typescript': 0.38.3
|
||||||
typescript: 4.7.4
|
typescript: 4.7.4
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
import { generateClasses } from "@formkit/themes";
|
||||||
|
import theme from "./theme";
|
||||||
|
import type { FormKitOptions } from "@formkit/core";
|
||||||
|
|
||||||
|
const config: FormKitOptions = {
|
||||||
|
config: {
|
||||||
|
classes: generateClasses(theme),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export default config;
|
|
@ -0,0 +1,79 @@
|
||||||
|
const textClassification = {
|
||||||
|
label: "block font-bold text-sm formkit-invalid:text-red-500 w-56",
|
||||||
|
wrapper: "flex flex-row items-center",
|
||||||
|
inner:
|
||||||
|
"inline-flex items-center w-full relative box-border border border-gray-300 formkit-invalid:border-red-500 rounded-[4px] overflow-hidden focus-within:border-themeable-primary-500",
|
||||||
|
input:
|
||||||
|
"outline-0 bg-white antialiased resize-none w-full text-black block transition-all appearance-none h-9 px-3 text-sm",
|
||||||
|
};
|
||||||
|
|
||||||
|
const boxClassification = {
|
||||||
|
fieldset: "border border-gray-400 rounded-md px-2 pb-1",
|
||||||
|
legend: "font-bold text-sm",
|
||||||
|
wrapper: "flex items-center mb-1 cursor-pointer",
|
||||||
|
help: "mb-2",
|
||||||
|
input:
|
||||||
|
"form-check-input appearance-none h-5 w-5 mr-2 border border-gray-500 rounded-sm bg-white checked:bg-blue-500 focus:outline-none focus:ring-0 transition duration-200",
|
||||||
|
label: "text-sm text-gray-700 mt-1",
|
||||||
|
};
|
||||||
|
|
||||||
|
const buttonClassification = {
|
||||||
|
wrapper: "mb-1",
|
||||||
|
input:
|
||||||
|
"bg-blue-500 hover:bg-blue-700 text-white text-sm font-normal py-3 px-5 rounded",
|
||||||
|
};
|
||||||
|
|
||||||
|
const theme: Record<string, Record<string, string>> = {
|
||||||
|
global: {
|
||||||
|
outer: "formkit-disabled:opacity-50",
|
||||||
|
help: "text-xs text-gray-500",
|
||||||
|
messages: "list-none p-0 mt-1 mb-0",
|
||||||
|
message: "text-red-500 mb-1 text-xs",
|
||||||
|
},
|
||||||
|
button: buttonClassification,
|
||||||
|
color: {
|
||||||
|
label: "block mb-1 font-bold text-sm",
|
||||||
|
input:
|
||||||
|
"w-16 h-8 appearance-none cursor-pointer border border-gray-300 rounded-md mb-2 p-1",
|
||||||
|
},
|
||||||
|
file: {
|
||||||
|
label: "block mb-1 font-bold text-sm",
|
||||||
|
inner: "cursor-pointer",
|
||||||
|
input:
|
||||||
|
"text-gray-600 text-sm mb-1 file:mr-4 file:py-2 file:px-4 file:rounded-full file:border-0 file:text-sm file:bg-blue-500 file:text-white hover:file:bg-blue-600",
|
||||||
|
noFiles: "block text-gray-800 text-sm mb-1",
|
||||||
|
fileItem: "block flex text-gray-800 text-sm mb-1",
|
||||||
|
fileRemove: "ml-auto text-blue-500 text-sm",
|
||||||
|
},
|
||||||
|
checkbox: boxClassification,
|
||||||
|
radio: {
|
||||||
|
...boxClassification,
|
||||||
|
input: boxClassification.input.replace("rounded-sm", "rounded-full"),
|
||||||
|
},
|
||||||
|
range: {
|
||||||
|
inner: "",
|
||||||
|
input:
|
||||||
|
"form-range appearance-none w-full h-2 p-0 bg-gray-200 rounded-full focus:outline-none focus:ring-0 focus:shadow-none",
|
||||||
|
},
|
||||||
|
search: textClassification,
|
||||||
|
select: textClassification,
|
||||||
|
submit: buttonClassification,
|
||||||
|
tel: textClassification,
|
||||||
|
text: textClassification,
|
||||||
|
time: textClassification,
|
||||||
|
url: textClassification,
|
||||||
|
week: textClassification,
|
||||||
|
month: textClassification,
|
||||||
|
number: textClassification,
|
||||||
|
password: textClassification,
|
||||||
|
email: textClassification,
|
||||||
|
date: textClassification,
|
||||||
|
"datetime-local": textClassification,
|
||||||
|
textarea: {
|
||||||
|
...textClassification,
|
||||||
|
input:
|
||||||
|
"outline-0 bg-white antialiased w-full text-black block transition-all appearance-none h-32 px-3 py-2 text-sm",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export default theme;
|
|
@ -10,7 +10,6 @@ import {
|
||||||
IconSettings,
|
IconSettings,
|
||||||
VButton,
|
VButton,
|
||||||
VCard,
|
VCard,
|
||||||
VInput,
|
|
||||||
VModal,
|
VModal,
|
||||||
VPageHeader,
|
VPageHeader,
|
||||||
VSpace,
|
VSpace,
|
||||||
|
@ -396,11 +395,11 @@ onMounted(() => {
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex w-full flex-1 sm:w-auto">
|
<div class="flex w-full flex-1 sm:w-auto">
|
||||||
<VInput
|
<FormKit
|
||||||
v-if="!checkAll"
|
v-if="!checkAll"
|
||||||
class="w-72"
|
|
||||||
placeholder="输入关键词搜索"
|
placeholder="输入关键词搜索"
|
||||||
/>
|
type="text"
|
||||||
|
></FormKit>
|
||||||
<VSpace v-else>
|
<VSpace v-else>
|
||||||
<VButton type="default">设置</VButton>
|
<VButton type="default">设置</VButton>
|
||||||
<VButton type="danger">删除</VButton>
|
<VButton type="danger">删除</VButton>
|
||||||
|
@ -452,7 +451,10 @@ onMounted(() => {
|
||||||
<div class="h-96 w-80 p-4">
|
<div class="h-96 w-80 p-4">
|
||||||
<div class="bg-white">
|
<div class="bg-white">
|
||||||
<!--TODO: Auto Focus-->
|
<!--TODO: Auto Focus-->
|
||||||
<VInput placeholder="根据关键词搜索"></VInput>
|
<FormKit
|
||||||
|
placeholder="输入关键词搜索"
|
||||||
|
type="text"
|
||||||
|
></FormKit>
|
||||||
</div>
|
</div>
|
||||||
<div class="mt-2">
|
<div class="mt-2">
|
||||||
<ul class="divide-y divide-gray-200" role="list">
|
<ul class="divide-y divide-gray-200" role="list">
|
||||||
|
|
|
@ -5,7 +5,6 @@ import {
|
||||||
IconSettings,
|
IconSettings,
|
||||||
VButton,
|
VButton,
|
||||||
VCard,
|
VCard,
|
||||||
VInput,
|
|
||||||
VPageHeader,
|
VPageHeader,
|
||||||
VSpace,
|
VSpace,
|
||||||
} from "@halo-dev/components";
|
} from "@halo-dev/components";
|
||||||
|
@ -40,11 +39,11 @@ const checkAll = ref(false);
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex w-full flex-1 sm:w-auto">
|
<div class="flex w-full flex-1 sm:w-auto">
|
||||||
<VInput
|
<FormKit
|
||||||
v-if="!checkAll"
|
v-if="!checkAll"
|
||||||
class="w-72"
|
|
||||||
placeholder="输入关键词搜索"
|
placeholder="输入关键词搜索"
|
||||||
/>
|
type="text"
|
||||||
|
></FormKit>
|
||||||
<VSpace v-else>
|
<VSpace v-else>
|
||||||
<VButton type="default">设置</VButton>
|
<VButton type="default">设置</VButton>
|
||||||
<VButton type="danger">删除</VButton>
|
<VButton type="danger">删除</VButton>
|
||||||
|
|
|
@ -6,7 +6,6 @@ import {
|
||||||
IconSettings,
|
IconSettings,
|
||||||
VButton,
|
VButton,
|
||||||
VCard,
|
VCard,
|
||||||
VInput,
|
|
||||||
VPageHeader,
|
VPageHeader,
|
||||||
VSpace,
|
VSpace,
|
||||||
VTabbar,
|
VTabbar,
|
||||||
|
@ -146,11 +145,11 @@ onMounted(() => {
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex w-full flex-1 sm:w-auto">
|
<div class="flex w-full flex-1 sm:w-auto">
|
||||||
<VInput
|
<FormKit
|
||||||
v-if="!checkAll"
|
v-if="!checkAll"
|
||||||
class="w-72"
|
|
||||||
placeholder="输入关键词搜索"
|
placeholder="输入关键词搜索"
|
||||||
/>
|
type="text"
|
||||||
|
></FormKit>
|
||||||
<VSpace v-else>
|
<VSpace v-else>
|
||||||
<VButton type="default">设置</VButton>
|
<VButton type="default">设置</VButton>
|
||||||
<VButton type="danger">删除</VButton>
|
<VButton type="danger">删除</VButton>
|
||||||
|
@ -171,7 +170,10 @@ onMounted(() => {
|
||||||
<div class="h-96 w-80 p-4">
|
<div class="h-96 w-80 p-4">
|
||||||
<div class="bg-white">
|
<div class="bg-white">
|
||||||
<!--TODO: Auto Focus-->
|
<!--TODO: Auto Focus-->
|
||||||
<VInput placeholder="根据关键词搜索"></VInput>
|
<FormKit
|
||||||
|
placeholder="输入关键词搜索"
|
||||||
|
type="text"
|
||||||
|
></FormKit>
|
||||||
</div>
|
</div>
|
||||||
<div class="mt-2">
|
<div class="mt-2">
|
||||||
<ul class="divide-y divide-gray-200" role="list">
|
<ul class="divide-y divide-gray-200" role="list">
|
||||||
|
|
|
@ -7,7 +7,6 @@ import {
|
||||||
IconSettings,
|
IconSettings,
|
||||||
VButton,
|
VButton,
|
||||||
VCard,
|
VCard,
|
||||||
VInput,
|
|
||||||
VPageHeader,
|
VPageHeader,
|
||||||
VSpace,
|
VSpace,
|
||||||
VTag,
|
VTag,
|
||||||
|
@ -139,11 +138,11 @@ onMounted(() => {
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex w-full flex-1 sm:w-auto">
|
<div class="flex w-full flex-1 sm:w-auto">
|
||||||
<VInput
|
<FormKit
|
||||||
v-if="checkedCount <= 0"
|
v-if="checkedCount <= 0"
|
||||||
class="w-72"
|
|
||||||
placeholder="输入关键词搜索"
|
placeholder="输入关键词搜索"
|
||||||
/>
|
type="text"
|
||||||
|
></FormKit>
|
||||||
<VSpace v-else>
|
<VSpace v-else>
|
||||||
<VButton type="default">设置</VButton>
|
<VButton type="default">设置</VButton>
|
||||||
<VButton type="danger">删除</VButton>
|
<VButton type="danger">删除</VButton>
|
||||||
|
@ -198,7 +197,10 @@ onMounted(() => {
|
||||||
</div>
|
</div>
|
||||||
<template #popper>
|
<template #popper>
|
||||||
<div class="h-96 w-80 p-4">
|
<div class="h-96 w-80 p-4">
|
||||||
<VInput placeholder="根据关键词搜索"></VInput>
|
<FormKit
|
||||||
|
placeholder="输入关键词搜索"
|
||||||
|
type="text"
|
||||||
|
></FormKit>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</FloatingDropdown>
|
</FloatingDropdown>
|
||||||
|
@ -213,7 +215,10 @@ onMounted(() => {
|
||||||
</div>
|
</div>
|
||||||
<template #popper>
|
<template #popper>
|
||||||
<div class="h-96 w-80 p-4">
|
<div class="h-96 w-80 p-4">
|
||||||
<VInput placeholder="根据关键词搜索"></VInput>
|
<FormKit
|
||||||
|
placeholder="输入关键词搜索"
|
||||||
|
type="text"
|
||||||
|
></FormKit>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</FloatingDropdown>
|
</FloatingDropdown>
|
||||||
|
@ -230,7 +235,10 @@ onMounted(() => {
|
||||||
<div class="h-96 w-80 p-4">
|
<div class="h-96 w-80 p-4">
|
||||||
<div class="bg-white">
|
<div class="bg-white">
|
||||||
<!--TODO: Auto Focus-->
|
<!--TODO: Auto Focus-->
|
||||||
<VInput placeholder="根据关键词搜索"></VInput>
|
<FormKit
|
||||||
|
placeholder="输入关键词搜索"
|
||||||
|
type="text"
|
||||||
|
></FormKit>
|
||||||
</div>
|
</div>
|
||||||
<div class="mt-2">
|
<div class="mt-2">
|
||||||
<ul class="divide-y divide-gray-200" role="list">
|
<ul class="divide-y divide-gray-200" role="list">
|
||||||
|
|
|
@ -8,13 +8,11 @@ import {
|
||||||
VAlert,
|
VAlert,
|
||||||
VButton,
|
VButton,
|
||||||
VCard,
|
VCard,
|
||||||
VInput,
|
|
||||||
VModal,
|
VModal,
|
||||||
VPageHeader,
|
VPageHeader,
|
||||||
VSpace,
|
VSpace,
|
||||||
VTabbar,
|
VTabbar,
|
||||||
VTag,
|
VTag,
|
||||||
VTextarea,
|
|
||||||
} from "@halo-dev/components";
|
} from "@halo-dev/components";
|
||||||
import { ref } from "vue";
|
import { ref } from "vue";
|
||||||
import { RouterLink } from "vue-router";
|
import { RouterLink } from "vue-router";
|
||||||
|
@ -284,73 +282,18 @@ const handleChangeTheme = (theme: any) => {
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-if="themeActiveId === 'settings'">
|
<div v-if="themeActiveId === 'settings'">
|
||||||
<form class="space-y-8 divide-y divide-gray-200 sm:space-y-5">
|
<FormKit id="theme-setting-form" :actions="false" type="form">
|
||||||
<div class="space-y-6 space-y-5 divide-y divide-gray-100">
|
<FormKit label="侧边栏宽度" type="text"></FormKit>
|
||||||
<div
|
<FormKit label="侧边栏背景图" type="text"></FormKit>
|
||||||
class="px-4 sm:grid sm:grid-cols-6 sm:items-start sm:gap-4 sm:pt-5"
|
<FormKit label="右上角图标" type="text"></FormKit>
|
||||||
>
|
<FormKit label="文章代码高亮语言" type="text"></FormKit>
|
||||||
<label
|
</FormKit>
|
||||||
class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2"
|
|
||||||
>
|
|
||||||
侧边栏宽度
|
|
||||||
</label>
|
|
||||||
<div class="mt-1 sm:col-span-3 sm:mt-0">
|
|
||||||
<div class="flex max-w-lg shadow-sm">
|
|
||||||
<VInput />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="px-4 sm:grid sm:grid-cols-6 sm:items-start sm:gap-4 sm:pt-5"
|
|
||||||
>
|
|
||||||
<label
|
|
||||||
class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2"
|
|
||||||
>
|
|
||||||
侧边栏背景图
|
|
||||||
</label>
|
|
||||||
<div class="mt-1 sm:col-span-3 sm:mt-0">
|
|
||||||
<div class="flex max-w-lg shadow-sm">
|
|
||||||
<VInput />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div
|
|
||||||
class="px-4 sm:grid sm:grid-cols-6 sm:items-start sm:gap-4 sm:pt-5"
|
|
||||||
>
|
|
||||||
<label
|
|
||||||
class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2"
|
|
||||||
>
|
|
||||||
右上角图标
|
|
||||||
</label>
|
|
||||||
<div class="mt-1 sm:col-span-3 sm:mt-0">
|
|
||||||
<div class="flex max-w-lg shadow-sm">
|
|
||||||
<VInput />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="px-4 sm:grid sm:grid-cols-6 sm:items-start sm:gap-4 sm:pt-5"
|
|
||||||
>
|
|
||||||
<label
|
|
||||||
class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2"
|
|
||||||
>
|
|
||||||
文章代码高亮语言
|
|
||||||
</label>
|
|
||||||
<div class="mt-1 sm:col-span-3 sm:mt-0">
|
|
||||||
<div class="flex max-w-lg shadow-sm">
|
|
||||||
<VTextarea modelValue="Halo" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="pt-5">
|
<div class="pt-5">
|
||||||
<div class="flex justify-start p-4">
|
<div class="flex justify-start p-4">
|
||||||
<VButton type="secondary"> 保存</VButton>
|
<VButton type="secondary"> 保存</VButton>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
|
||||||
</div>
|
</div>
|
||||||
</VCard>
|
</VCard>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -7,15 +7,11 @@ import {
|
||||||
IconTablet,
|
IconTablet,
|
||||||
VButton,
|
VButton,
|
||||||
VCard,
|
VCard,
|
||||||
VInput,
|
|
||||||
VModal,
|
VModal,
|
||||||
VOption,
|
|
||||||
VSelect,
|
|
||||||
VSpace,
|
VSpace,
|
||||||
VTabbar,
|
VTabbar,
|
||||||
VTabItem,
|
VTabItem,
|
||||||
VTabs,
|
VTabs,
|
||||||
VTextarea,
|
|
||||||
} from "@halo-dev/components";
|
} from "@halo-dev/components";
|
||||||
import { computed, onMounted, ref } from "vue";
|
import { computed, onMounted, ref } from "vue";
|
||||||
|
|
||||||
|
@ -198,77 +194,25 @@ onMounted(() => {
|
||||||
<div class="h-full w-full overflow-y-auto bg-white drop-shadow-sm">
|
<div class="h-full w-full overflow-y-auto bg-white drop-shadow-sm">
|
||||||
<VTabs v-model:active-id="activeId" type="outline">
|
<VTabs v-model:active-id="activeId" type="outline">
|
||||||
<VTabItem id="general" class="p-3" label="基础设置">
|
<VTabItem id="general" class="p-3" label="基础设置">
|
||||||
<form>
|
<FormKit :actions="false" type="form">
|
||||||
<div
|
<FormKit label="Halo 当前版本" type="text"></FormKit>
|
||||||
class="space-y-8 divide-y divide-gray-200 sm:space-y-5"
|
<FormKit label="首页图片" type="text"></FormKit>
|
||||||
>
|
</FormKit>
|
||||||
<div class="space-y-6 sm:space-y-5">
|
|
||||||
<div class="space-y-2">
|
|
||||||
<label
|
|
||||||
class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2"
|
|
||||||
for="first-name"
|
|
||||||
>
|
|
||||||
Halo 当前版本:
|
|
||||||
</label>
|
|
||||||
<div class="mt-1 sm:col-span-2 sm:mt-0">
|
|
||||||
<VInput model-value="1.5.3"></VInput>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="space-y-2">
|
|
||||||
<label
|
|
||||||
class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2"
|
|
||||||
for="last-name"
|
|
||||||
>
|
|
||||||
首页图片:
|
|
||||||
</label>
|
|
||||||
<div class="mt-1 sm:col-span-2 sm:mt-0">
|
|
||||||
<VInput
|
|
||||||
model-value="https://halo.run/upload/2022/03/support-team.svg"
|
|
||||||
></VInput>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</VTabItem>
|
</VTabItem>
|
||||||
<VTabItem id="style" class="p-3" label="样式设置">
|
<VTabItem id="style" class="p-3" label="样式设置">
|
||||||
<form>
|
<FormKit :actions="false" type="form">
|
||||||
<div
|
<FormKit label="文章代码高亮语言" type="text"></FormKit>
|
||||||
class="space-y-8 divide-y divide-gray-200 sm:space-y-5"
|
<FormKit
|
||||||
>
|
:options="[
|
||||||
<div class="space-y-6 sm:space-y-5">
|
{ label: 'Java', value: 'java' },
|
||||||
<div class="space-y-2">
|
{ label: 'C', value: 'c' },
|
||||||
<label
|
{ label: 'Go', value: 'go' },
|
||||||
class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2"
|
{ label: 'JavaScript', value: 'javascript' },
|
||||||
for="first-name"
|
]"
|
||||||
>
|
label="文章代码高亮主题"
|
||||||
文章代码高亮语言:
|
type="select"
|
||||||
</label>
|
></FormKit>
|
||||||
<div class="mt-1 sm:col-span-2 sm:mt-0">
|
</FormKit>
|
||||||
<VTextarea></VTextarea>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="space-y-2">
|
|
||||||
<label
|
|
||||||
class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2"
|
|
||||||
for="last-name"
|
|
||||||
>
|
|
||||||
文章代码高亮主题:
|
|
||||||
</label>
|
|
||||||
<div class="mt-1 sm:col-span-2 sm:mt-0">
|
|
||||||
<VSelect>
|
|
||||||
<VOption value="java">Java</VOption>
|
|
||||||
<VOption value="c">C</VOption>
|
|
||||||
<VOption value="go">Go</VOption>
|
|
||||||
<VOption value="javascript">JavaScript</VOption>
|
|
||||||
</VSelect>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</VTabItem>
|
</VTabItem>
|
||||||
</VTabs>
|
</VTabs>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
import {
|
import {
|
||||||
VButton,
|
VButton,
|
||||||
VCard,
|
VCard,
|
||||||
VInput,
|
|
||||||
VPageHeader,
|
VPageHeader,
|
||||||
VSpace,
|
VSpace,
|
||||||
VSwitch,
|
VSwitch,
|
||||||
|
@ -297,44 +296,16 @@ handleFetchPlugin();
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-if="pluginActiveId === 'settings'">
|
<div v-if="pluginActiveId === 'settings'">
|
||||||
<form class="space-y-8 divide-y divide-gray-200 sm:space-y-5">
|
<FormKit id="plugin-setting-form" :actions="false" type="form">
|
||||||
<div class="space-y-6 space-y-5 divide-y divide-gray-100">
|
<FormKit label="设置项 1" type="text"></FormKit>
|
||||||
<div
|
<FormKit label="设置项 2" type="text"></FormKit>
|
||||||
class="px-4 sm:grid sm:grid-cols-6 sm:items-start sm:gap-4 sm:pt-5"
|
</FormKit>
|
||||||
>
|
|
||||||
<label
|
|
||||||
class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2"
|
|
||||||
>
|
|
||||||
设置项 1
|
|
||||||
</label>
|
|
||||||
<div class="mt-1 sm:col-span-3 sm:mt-0">
|
|
||||||
<div class="flex max-w-lg shadow-sm">
|
|
||||||
<VInput />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="px-4 sm:grid sm:grid-cols-6 sm:items-start sm:gap-4 sm:pt-5"
|
|
||||||
>
|
|
||||||
<label
|
|
||||||
class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2"
|
|
||||||
>
|
|
||||||
设置项 2
|
|
||||||
</label>
|
|
||||||
<div class="mt-1 sm:col-span-3 sm:mt-0">
|
|
||||||
<div class="flex max-w-lg shadow-sm">
|
|
||||||
<VInput />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="pt-5">
|
<div class="pt-5">
|
||||||
<div class="flex justify-start p-4">
|
<div class="flex justify-start p-4">
|
||||||
<VButton type="secondary"> 保存</VButton>
|
<VButton type="secondary"> 保存</VButton>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
|
||||||
</div>
|
</div>
|
||||||
</VCard>
|
</VCard>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -6,7 +6,6 @@ import {
|
||||||
IconSettings,
|
IconSettings,
|
||||||
VButton,
|
VButton,
|
||||||
VCard,
|
VCard,
|
||||||
VInput,
|
|
||||||
VPageHeader,
|
VPageHeader,
|
||||||
VSpace,
|
VSpace,
|
||||||
VSwitch,
|
VSwitch,
|
||||||
|
@ -90,11 +89,11 @@ onMounted(handleFetchPlugins);
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex w-full flex-1 sm:w-auto">
|
<div class="flex w-full flex-1 sm:w-auto">
|
||||||
<VInput
|
<FormKit
|
||||||
v-if="!checkAll"
|
v-if="!checkAll"
|
||||||
class="w-72"
|
|
||||||
placeholder="输入关键词搜索"
|
placeholder="输入关键词搜索"
|
||||||
/>
|
type="text"
|
||||||
|
></FormKit>
|
||||||
<VSpace v-else>
|
<VSpace v-else>
|
||||||
<VButton type="default">禁用</VButton>
|
<VButton type="default">禁用</VButton>
|
||||||
<VButton type="danger">卸载</VButton>
|
<VButton type="danger">卸载</VButton>
|
||||||
|
@ -149,7 +148,10 @@ onMounted(handleFetchPlugins);
|
||||||
<div class="h-96 w-80 p-4">
|
<div class="h-96 w-80 p-4">
|
||||||
<div class="bg-white">
|
<div class="bg-white">
|
||||||
<!--TODO: Auto Focus-->
|
<!--TODO: Auto Focus-->
|
||||||
<VInput placeholder="根据关键词搜索"></VInput>
|
<FormKit
|
||||||
|
placeholder="输入关键词搜索"
|
||||||
|
type="text"
|
||||||
|
></FormKit>
|
||||||
</div>
|
</div>
|
||||||
<div class="mt-2">
|
<div class="mt-2">
|
||||||
<ul class="divide-y divide-gray-200" role="list">
|
<ul class="divide-y divide-gray-200" role="list">
|
||||||
|
|
|
@ -6,7 +6,6 @@ import {
|
||||||
IconShieldUser,
|
IconShieldUser,
|
||||||
VButton,
|
VButton,
|
||||||
VCard,
|
VCard,
|
||||||
VInput,
|
|
||||||
VPageHeader,
|
VPageHeader,
|
||||||
VSpace,
|
VSpace,
|
||||||
VTag,
|
VTag,
|
||||||
|
@ -74,7 +73,10 @@ onMounted(() => {
|
||||||
class="relative flex flex-col items-start sm:flex-row sm:items-center"
|
class="relative flex flex-col items-start sm:flex-row sm:items-center"
|
||||||
>
|
>
|
||||||
<div class="flex w-full flex-1 sm:w-auto">
|
<div class="flex w-full flex-1 sm:w-auto">
|
||||||
<VInput class="w-72" placeholder="输入关键词搜索" />
|
<FormKit
|
||||||
|
placeholder="输入关键词搜索"
|
||||||
|
type="text"
|
||||||
|
></FormKit>
|
||||||
</div>
|
</div>
|
||||||
<div class="mt-4 flex sm:mt-0">
|
<div class="mt-4 flex sm:mt-0">
|
||||||
<VSpace spacing="lg">
|
<VSpace spacing="lg">
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { VButton, VInput, VModal, VTabItem, VTabs } from "@halo-dev/components";
|
import { VButton, VModal, VTabItem, VTabs } from "@halo-dev/components";
|
||||||
import { computed, ref, watch } from "vue";
|
import { computed, ref, watch } from "vue";
|
||||||
import type { Role } from "@/types/extension";
|
import type { Role } from "@/types/extension";
|
||||||
import { axiosInstance } from "@halo-dev/admin-shared";
|
import { axiosInstance } from "@halo-dev/admin-shared";
|
||||||
|
@ -122,39 +122,30 @@ watch(
|
||||||
>
|
>
|
||||||
<VTabs v-model:active-id="creationActiveId" type="outline">
|
<VTabs v-model:active-id="creationActiveId" type="outline">
|
||||||
<VTabItem id="general" label="基础信息">
|
<VTabItem id="general" label="基础信息">
|
||||||
<form>
|
<FormKit
|
||||||
<div class="space-y-6 divide-y-0 sm:divide-y sm:divide-gray-200">
|
|
||||||
<div
|
|
||||||
v-if="creationFormState.role.metadata.annotations"
|
v-if="creationFormState.role.metadata.annotations"
|
||||||
class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:pt-5"
|
id="role-form"
|
||||||
|
:actions="false"
|
||||||
|
type="form"
|
||||||
|
@submit="handleCreateRole"
|
||||||
>
|
>
|
||||||
<label
|
<FormKit
|
||||||
class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2"
|
|
||||||
>
|
|
||||||
名称
|
|
||||||
</label>
|
|
||||||
<div class="mt-1 sm:col-span-2 sm:mt-0">
|
|
||||||
<VInput
|
|
||||||
v-model="
|
v-model="
|
||||||
creationFormState.role.metadata.annotations[
|
creationFormState.role.metadata.annotations[
|
||||||
'plugin.halo.run/display-name'
|
'plugin.halo.run/display-name'
|
||||||
]
|
]
|
||||||
"
|
"
|
||||||
></VInput>
|
label="名称"
|
||||||
</div>
|
type="text"
|
||||||
</div>
|
validation="required"
|
||||||
<div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:pt-5">
|
></FormKit>
|
||||||
<label
|
<FormKit
|
||||||
class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2"
|
v-model="creationFormState.role.metadata.name"
|
||||||
>
|
label="别名"
|
||||||
别名
|
type="text"
|
||||||
</label>
|
validation="required"
|
||||||
<div class="mt-1 sm:col-span-2 sm:mt-0">
|
></FormKit>
|
||||||
<VInput v-model="creationFormState.role.metadata.name"></VInput>
|
</FormKit>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</VTabItem>
|
</VTabItem>
|
||||||
<VTabItem id="permissions" label="权限">
|
<VTabItem id="permissions" label="权限">
|
||||||
<div>
|
<div>
|
||||||
|
@ -218,7 +209,7 @@ watch(
|
||||||
<VButton
|
<VButton
|
||||||
:loading="creationFormState.saving"
|
:loading="creationFormState.saving"
|
||||||
type="secondary"
|
type="secondary"
|
||||||
@click="handleCreateRole"
|
@click="$formkit.submit('role-form')"
|
||||||
>创建
|
>创建
|
||||||
</VButton>
|
</VButton>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -1,69 +1,19 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { VButton, VInput } from "@halo-dev/components";
|
import { VButton } from "@halo-dev/components";
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<form class="space-y-8 divide-y divide-gray-200 sm:space-y-5">
|
<div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:pt-5">
|
||||||
<div class="space-y-6 space-y-5 divide-y divide-gray-100">
|
<FormKit :actions="false" type="form">
|
||||||
<div class="sm:grid sm:grid-cols-6 sm:items-start sm:gap-4 sm:pt-5">
|
<FormKit label="站点地址" type="url"></FormKit>
|
||||||
<label class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">
|
<FormKit label="站点标题" type="text"></FormKit>
|
||||||
站点地址
|
<FormKit label="站点副标题" type="text"></FormKit>
|
||||||
</label>
|
<FormKit label="Logo" type="url"></FormKit>
|
||||||
<div class="mt-1 sm:col-span-3 sm:mt-0">
|
<FormKit label="Favicon" type="url"></FormKit>
|
||||||
<div class="flex max-w-lg shadow-sm">
|
</FormKit>
|
||||||
<VInput modelValue="https://halo.run" />
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="sm:grid sm:grid-cols-6 sm:items-start sm:gap-4 sm:pt-5">
|
|
||||||
<label class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">
|
|
||||||
站点标题
|
|
||||||
</label>
|
|
||||||
<div class="mt-1 sm:col-span-3 sm:mt-0">
|
|
||||||
<div class="flex max-w-lg shadow-sm">
|
|
||||||
<VInput modelValue="Halo" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="sm:grid sm:grid-cols-6 sm:items-start sm:gap-4 sm:pt-5">
|
|
||||||
<label class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">
|
|
||||||
站点副标题
|
|
||||||
</label>
|
|
||||||
<div class="mt-1 sm:col-span-3 sm:mt-0">
|
|
||||||
<div class="flex max-w-lg shadow-sm">
|
|
||||||
<VInput modelValue="开源的现代化 CMS 应用" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="sm:grid sm:grid-cols-6 sm:items-start sm:gap-4 sm:pt-5">
|
|
||||||
<label class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">
|
|
||||||
Logo
|
|
||||||
</label>
|
|
||||||
<div class="mt-1 sm:col-span-3 sm:mt-0">
|
|
||||||
<div class="flex max-w-lg shadow-sm">
|
|
||||||
<VInput modelValue="https://halo.run/logo" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="sm:grid sm:grid-cols-6 sm:items-start sm:gap-4 sm:pt-5">
|
|
||||||
<label class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">
|
|
||||||
Favicon
|
|
||||||
</label>
|
|
||||||
<div class="mt-1 sm:col-span-3 sm:mt-0">
|
|
||||||
<div class="flex max-w-lg shadow-sm">
|
|
||||||
<VInput modelValue="https://halo.run/favicon.ico" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="pt-5">
|
<div class="pt-5">
|
||||||
<div class="flex justify-start">
|
<div class="flex justify-start">
|
||||||
<VButton type="secondary"> 保存</VButton>
|
<VButton type="secondary"> 保存</VButton>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -1,56 +1,19 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { VButton, VInput } from "@halo-dev/components";
|
import { VButton } from "@halo-dev/components";
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<form class="space-y-8 divide-y divide-gray-200 sm:space-y-5">
|
<div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:pt-5">
|
||||||
<div class="space-y-6 space-y-5 divide-y divide-gray-100">
|
<FormKit :actions="false" type="form">
|
||||||
<div class="sm:grid sm:grid-cols-6 sm:items-start sm:gap-4 sm:pt-5">
|
<FormKit label="站点地址" type="url"></FormKit>
|
||||||
<label class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">
|
<FormKit label="站点标题" type="text"></FormKit>
|
||||||
站点地址
|
<FormKit label="站点副标题" type="text"></FormKit>
|
||||||
</label>
|
<FormKit label="Logo" type="url"></FormKit>
|
||||||
<div class="mt-1 sm:col-span-3 sm:mt-0">
|
<FormKit label="Favicon" type="url"></FormKit>
|
||||||
<div class="flex max-w-lg shadow-sm">
|
</FormKit>
|
||||||
<VInput modelValue="https://halo.run" />
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="sm:grid sm:grid-cols-6 sm:items-start sm:gap-4 sm:pt-5">
|
|
||||||
<label class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">
|
|
||||||
站点标题
|
|
||||||
</label>
|
|
||||||
<div class="mt-1 sm:col-span-3 sm:mt-0">
|
|
||||||
<div class="flex max-w-lg shadow-sm">
|
|
||||||
<VInput modelValue="Halo" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="sm:grid sm:grid-cols-6 sm:items-start sm:gap-4 sm:pt-5">
|
|
||||||
<label class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">
|
|
||||||
站点副标题
|
|
||||||
</label>
|
|
||||||
<div class="mt-1 sm:col-span-3 sm:mt-0">
|
|
||||||
<div class="flex max-w-lg shadow-sm">
|
|
||||||
<VInput modelValue="开源的现代化 CMS 应用" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="sm:grid sm:grid-cols-6 sm:items-start sm:gap-4 sm:pt-5">
|
|
||||||
<label class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">
|
|
||||||
Logo
|
|
||||||
</label>
|
|
||||||
<div class="mt-1 sm:col-span-3 sm:mt-0">
|
|
||||||
<div class="flex max-w-lg shadow-sm">
|
|
||||||
<VInput modelValue="https://halo.run/logo" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="pt-5">
|
<div class="pt-5">
|
||||||
<div class="flex justify-start">
|
<div class="flex justify-start">
|
||||||
<VButton type="secondary"> 保存</VButton>
|
<VButton type="secondary"> 保存</VButton>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -9,7 +9,6 @@ import { axiosInstance } from "@halo-dev/admin-shared";
|
||||||
import qs from "qs";
|
import qs from "qs";
|
||||||
import logo from "../../../assets/logo.svg";
|
import logo from "../../../assets/logo.svg";
|
||||||
import { onMounted, ref } from "vue";
|
import { onMounted, ref } from "vue";
|
||||||
import { useRouter } from "vue-router";
|
|
||||||
import { submitForm } from "@formkit/vue";
|
import { submitForm } from "@formkit/vue";
|
||||||
|
|
||||||
interface LoginForm {
|
interface LoginForm {
|
||||||
|
@ -23,14 +22,12 @@ interface LoginFormState {
|
||||||
state: LoginForm;
|
state: LoginForm;
|
||||||
}
|
}
|
||||||
|
|
||||||
const router = useRouter();
|
|
||||||
|
|
||||||
const loginForm = ref<LoginFormState>({
|
const loginForm = ref<LoginFormState>({
|
||||||
logging: false,
|
logging: false,
|
||||||
state: {
|
state: {
|
||||||
_csrf: "",
|
_csrf: "",
|
||||||
username: "admin",
|
username: "admin",
|
||||||
password: "{no}123456",
|
password: "1A3DTGDF7yeGsZaR",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -1,46 +1,16 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { VButton, VInput } from "@halo-dev/components";
|
import { VButton } from "@halo-dev/components";
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<form class="space-y-8 divide-y divide-gray-200 sm:space-y-5">
|
<FormKit id="password-form" :actions="false" type="form">
|
||||||
<div class="space-y-6 space-y-5 divide-y divide-gray-100">
|
<FormKit label="原密码" type="password"></FormKit>
|
||||||
<div class="sm:grid sm:grid-cols-6 sm:items-start sm:gap-4 sm:pt-5">
|
<FormKit label="新密码" type="password"></FormKit>
|
||||||
<label class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">
|
<FormKit label="确认密码" type="password"></FormKit>
|
||||||
原密码
|
</FormKit>
|
||||||
</label>
|
|
||||||
<div class="mt-1 sm:col-span-3 sm:mt-0">
|
|
||||||
<div class="flex max-w-lg shadow-sm">
|
|
||||||
<VInput />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="sm:grid sm:grid-cols-6 sm:items-start sm:gap-4 sm:pt-5">
|
|
||||||
<label class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">
|
|
||||||
新密码
|
|
||||||
</label>
|
|
||||||
<div class="mt-1 sm:col-span-3 sm:mt-0">
|
|
||||||
<div class="flex max-w-lg shadow-sm">
|
|
||||||
<VInput />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="sm:grid sm:grid-cols-6 sm:items-start sm:gap-4 sm:pt-5">
|
|
||||||
<label class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">
|
|
||||||
确认密码
|
|
||||||
</label>
|
|
||||||
<div class="mt-1 sm:col-span-3 sm:mt-0">
|
|
||||||
<div class="flex max-w-lg shadow-sm">
|
|
||||||
<VInput />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="pt-5">
|
<div class="pt-5">
|
||||||
<div class="flex justify-start">
|
<div class="flex justify-start">
|
||||||
<VButton type="secondary">修改密码</VButton>
|
<VButton type="secondary">修改密码</VButton>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -4,7 +4,6 @@ import {
|
||||||
IconDeleteBin,
|
IconDeleteBin,
|
||||||
IconStopCircle,
|
IconStopCircle,
|
||||||
VButton,
|
VButton,
|
||||||
VInput,
|
|
||||||
VModal,
|
VModal,
|
||||||
VSpace,
|
VSpace,
|
||||||
VTabItem,
|
VTabItem,
|
||||||
|
@ -38,30 +37,10 @@ onMounted(() => {
|
||||||
<VModal v-model:visible="createVisible" :width="720" title="创建个人令牌">
|
<VModal v-model:visible="createVisible" :width="720" title="创建个人令牌">
|
||||||
<VTabs v-model:active-id="createActiveId" type="outline">
|
<VTabs v-model:active-id="createActiveId" type="outline">
|
||||||
<VTabItem id="general" label="基础信息">
|
<VTabItem id="general" label="基础信息">
|
||||||
<form>
|
<FormKit id="role-form" :actions="false" type="form">
|
||||||
<div class="space-y-6 divide-y-0 sm:divide-y sm:divide-gray-200">
|
<FormKit label="名称" type="text" validation="required"></FormKit>
|
||||||
<div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:pt-5">
|
<FormKit label="失效日期" type="text" validation="required"></FormKit>
|
||||||
<label
|
</FormKit>
|
||||||
class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2"
|
|
||||||
>
|
|
||||||
名称
|
|
||||||
</label>
|
|
||||||
<div class="mt-1 sm:col-span-2 sm:mt-0">
|
|
||||||
<VInput></VInput>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:pt-5">
|
|
||||||
<label
|
|
||||||
class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2"
|
|
||||||
>
|
|
||||||
失效日期
|
|
||||||
</label>
|
|
||||||
<div class="mt-1 sm:col-span-2 sm:mt-0">
|
|
||||||
<VInput></VInput>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</VTabItem>
|
</VTabItem>
|
||||||
<VTabItem id="permissions" label="权限">
|
<VTabItem id="permissions" label="权限">
|
||||||
<div>
|
<div>
|
||||||
|
|
|
@ -1,60 +1,36 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { VButton, VInput, VTextarea } from "@halo-dev/components";
|
import { VButton } from "@halo-dev/components";
|
||||||
import { inject } from "vue";
|
import { inject } from "vue";
|
||||||
import type { User } from "@/types/extension";
|
import type { User } from "@/types/extension";
|
||||||
|
|
||||||
const user = inject<User>("user");
|
const user = inject<User>("user");
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<form class="space-y-8 divide-y divide-gray-200 sm:space-y-5">
|
<FormKit v-if="user" id="user-form" :actions="false" type="form">
|
||||||
<div class="space-y-6 space-y-5 divide-y divide-gray-100">
|
<FormKit
|
||||||
<div class="sm:grid sm:grid-cols-6 sm:items-start sm:gap-4 sm:pt-5">
|
v-model="user.metadata.name"
|
||||||
<label class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">
|
label="用户名"
|
||||||
用户名
|
type="text"
|
||||||
</label>
|
validation="required"
|
||||||
<div class="mt-1 sm:col-span-3 sm:mt-0">
|
></FormKit>
|
||||||
<div class="flex max-w-lg shadow-sm">
|
<FormKit
|
||||||
<VInput :modelValue="user?.metadata?.name" />
|
v-model="user.spec.displayName"
|
||||||
</div>
|
label="显示名称"
|
||||||
</div>
|
type="text"
|
||||||
</div>
|
validation="required"
|
||||||
<div class="sm:grid sm:grid-cols-6 sm:items-start sm:gap-4 sm:pt-5">
|
></FormKit>
|
||||||
<label class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">
|
<FormKit
|
||||||
显示名称
|
v-model="user.spec.email"
|
||||||
</label>
|
label="电子邮箱"
|
||||||
<div class="mt-1 sm:col-span-3 sm:mt-0">
|
type="email"
|
||||||
<div class="flex max-w-lg shadow-sm">
|
validation="required"
|
||||||
<VInput :modelValue="user?.spec?.displayName" />
|
></FormKit>
|
||||||
</div>
|
<FormKit v-model="user.spec.bio" label="描述" type="textarea"></FormKit>
|
||||||
</div>
|
</FormKit>
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="sm:grid sm:grid-cols-6 sm:items-start sm:gap-4 sm:pt-5">
|
|
||||||
<label class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">
|
|
||||||
电子邮箱
|
|
||||||
</label>
|
|
||||||
<div class="mt-1 sm:col-span-3 sm:mt-0">
|
|
||||||
<div class="flex max-w-lg shadow-sm">
|
|
||||||
<VInput :modelValue="user?.spec?.email" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="sm:grid sm:grid-cols-6 sm:items-start sm:gap-4 sm:pt-5">
|
|
||||||
<label class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">
|
|
||||||
个人说明
|
|
||||||
</label>
|
|
||||||
<div class="mt-1 sm:col-span-3 sm:mt-0">
|
|
||||||
<div class="flex max-w-lg shadow-sm">
|
|
||||||
<VTextarea :modelValue="user?.spec?.bio" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="pt-5">
|
<div class="pt-5">
|
||||||
<div class="flex justify-start">
|
<div class="flex justify-start">
|
||||||
<VButton type="secondary">保存</VButton>
|
<VButton type="secondary">保存</VButton>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -7,7 +7,6 @@ import {
|
||||||
IconUserSettings,
|
IconUserSettings,
|
||||||
VButton,
|
VButton,
|
||||||
VCard,
|
VCard,
|
||||||
VInput,
|
|
||||||
VPageHeader,
|
VPageHeader,
|
||||||
VSpace,
|
VSpace,
|
||||||
VTag,
|
VTag,
|
||||||
|
@ -84,11 +83,11 @@ onMounted(() => {
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex w-full flex-1 sm:w-auto">
|
<div class="flex w-full flex-1 sm:w-auto">
|
||||||
<VInput
|
<FormKit
|
||||||
v-if="!checkAll"
|
v-if="!checkAll"
|
||||||
class="w-72"
|
|
||||||
placeholder="输入关键词搜索"
|
placeholder="输入关键词搜索"
|
||||||
/>
|
type="text"
|
||||||
|
></FormKit>
|
||||||
<VSpace v-else>
|
<VSpace v-else>
|
||||||
<VButton type="default">设置</VButton>
|
<VButton type="default">设置</VButton>
|
||||||
<VButton type="danger">删除</VButton>
|
<VButton type="danger">删除</VButton>
|
||||||
|
|
|
@ -2,13 +2,7 @@
|
||||||
import type { PropType } from "vue";
|
import type { PropType } from "vue";
|
||||||
import { computed, ref, watch } from "vue";
|
import { computed, ref, watch } from "vue";
|
||||||
import { axiosInstance } from "@halo-dev/admin-shared";
|
import { axiosInstance } from "@halo-dev/admin-shared";
|
||||||
import {
|
import { IconSave, VButton, VModal } from "@halo-dev/components";
|
||||||
IconSave,
|
|
||||||
VButton,
|
|
||||||
VInput,
|
|
||||||
VModal,
|
|
||||||
VTextarea,
|
|
||||||
} from "@halo-dev/components";
|
|
||||||
import type { User } from "@/types/extension";
|
import type { User } from "@/types/extension";
|
||||||
import { v4 as uuid } from "uuid";
|
import { v4 as uuid } from "uuid";
|
||||||
|
|
||||||
|
@ -100,76 +94,51 @@ const handleCreateUser = async () => {
|
||||||
:width="700"
|
:width="700"
|
||||||
@update:visible="handleVisibleChange"
|
@update:visible="handleVisibleChange"
|
||||||
>
|
>
|
||||||
<form>
|
<FormKit
|
||||||
<div class="space-y-6 divide-y-0 sm:divide-y sm:divide-gray-200">
|
id="user-form"
|
||||||
<div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:pt-5">
|
:actions="false"
|
||||||
<label
|
type="form"
|
||||||
class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2"
|
@submit="handleCreateUser"
|
||||||
>
|
>
|
||||||
用户名
|
<FormKit
|
||||||
</label>
|
v-model="creationForm.user.metadata.name"
|
||||||
<div class="mt-1 sm:col-span-2 sm:mt-0">
|
label="用户名"
|
||||||
<VInput v-model="creationForm.user.metadata.name"></VInput>
|
type="text"
|
||||||
</div>
|
validation="required"
|
||||||
</div>
|
></FormKit>
|
||||||
|
<FormKit
|
||||||
<div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:pt-5">
|
v-model="creationForm.user.spec.displayName"
|
||||||
<label
|
label="显示名称"
|
||||||
class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2"
|
type="text"
|
||||||
>
|
validation="required"
|
||||||
昵称
|
></FormKit>
|
||||||
</label>
|
<FormKit
|
||||||
<div class="mt-1 sm:col-span-2 sm:mt-0">
|
v-model="creationForm.user.spec.email"
|
||||||
<VInput v-model="creationForm.user.spec.displayName"></VInput>
|
label="电子邮箱"
|
||||||
</div>
|
type="email"
|
||||||
</div>
|
validation="required"
|
||||||
|
></FormKit>
|
||||||
<div class="sm:grid sm:grid-cols-3 sm:items-center sm:gap-4 sm:pt-5">
|
<FormKit
|
||||||
<label class="block text-sm font-medium text-gray-700">
|
v-model="creationForm.user.spec.phone"
|
||||||
电子邮箱
|
label="手机号"
|
||||||
</label>
|
type="text"
|
||||||
<div class="mt-1 sm:col-span-2 sm:mt-0">
|
></FormKit>
|
||||||
<VInput v-model="creationForm.user.spec.email"></VInput>
|
<FormKit
|
||||||
</div>
|
v-model="creationForm.user.spec.avatar"
|
||||||
</div>
|
label="头像"
|
||||||
|
type="text"
|
||||||
<div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:pt-5">
|
></FormKit>
|
||||||
<label
|
<FormKit
|
||||||
class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2"
|
v-model="creationForm.user.spec.bio"
|
||||||
>
|
label="描述"
|
||||||
手机号
|
type="textarea"
|
||||||
</label>
|
></FormKit>
|
||||||
<div class="mt-1 sm:col-span-2 sm:mt-0">
|
</FormKit>
|
||||||
<VInput v-model="creationForm.user.spec.phone"></VInput>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:pt-5">
|
|
||||||
<label
|
|
||||||
class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2"
|
|
||||||
>
|
|
||||||
头像
|
|
||||||
</label>
|
|
||||||
<div class="mt-1 sm:col-span-2 sm:mt-0">
|
|
||||||
<VInput v-model="creationForm.user.spec.avatar"></VInput>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:pt-5">
|
|
||||||
<label
|
|
||||||
class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2"
|
|
||||||
>
|
|
||||||
描述
|
|
||||||
</label>
|
|
||||||
<div class="mt-1 sm:col-span-2 sm:mt-0">
|
|
||||||
<VTextarea v-model="creationForm.user.spec.bio"></VTextarea>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<VButton
|
<VButton
|
||||||
:loading="creationForm.saving"
|
:loading="creationForm.saving"
|
||||||
type="secondary"
|
type="secondary"
|
||||||
@click="handleCreateUser"
|
@click="$formkit.submit('user-form')"
|
||||||
>
|
>
|
||||||
<template #icon>
|
<template #icon>
|
||||||
<IconSave class="h-full w-full" />
|
<IconSave class="h-full w-full" />
|
||||||
|
|
|
@ -4,11 +4,19 @@ import "floating-vue/dist/style.css";
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import VueGridLayout from "vue-grid-layout";
|
import VueGridLayout from "vue-grid-layout";
|
||||||
import { defaultConfig, plugin as FormKit } from "@formkit/vue";
|
import { defaultConfig, plugin as FormKit } from "@formkit/vue";
|
||||||
import "@formkit/themes/genesis";
|
import FormKitConfig from "@/formkit/formkit.config";
|
||||||
|
import { zh } from "@formkit/i18n";
|
||||||
|
|
||||||
export function setupComponents(app: App) {
|
export function setupComponents(app: App) {
|
||||||
app.use(VueGridLayout);
|
app.use(VueGridLayout);
|
||||||
app.use(FormKit, defaultConfig({}));
|
app.use(
|
||||||
|
FormKit,
|
||||||
|
defaultConfig({
|
||||||
|
locales: { zh },
|
||||||
|
locale: "zh",
|
||||||
|
...FormKitConfig,
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
app.directive("tooltip", VTooltip);
|
app.directive("tooltip", VTooltip);
|
||||||
app.directive("close-popper", VClosePopper);
|
app.directive("close-popper", VClosePopper);
|
||||||
|
|
|
@ -8,6 +8,7 @@ module.exports = {
|
||||||
plugins: [
|
plugins: [
|
||||||
require("tailwindcss-safe-area"),
|
require("tailwindcss-safe-area"),
|
||||||
require("@tailwindcss/aspect-ratio"),
|
require("@tailwindcss/aspect-ratio"),
|
||||||
|
require("@formkit/themes/tailwindcss"),
|
||||||
themeable({
|
themeable({
|
||||||
defaultTheme: "default",
|
defaultTheme: "default",
|
||||||
themes: [
|
themes: [
|
||||||
|
|
Loading…
Reference in New Issue