Compare commits

..

12 Commits

Author SHA1 Message Date
Soybean
d984f75b80 chore(projects): release v1.0.3 2024-04-16 00:15:37 +08:00
Soybean
27c53cd688 fix(projects): fix update theme color 2024-04-16 00:14:32 +08:00
Soybean
b7f0749170 perf(projects): perf code 2024-04-16 00:03:00 +08:00
Soybean
cb8ea2531d Merge pull request #386 from paynezhuang/main 2024-04-15 16:27:08 +08:00
paynezhuang
c6648b6c8b feat(hooks): deleting the route export of useRoutePush, use vue-router 2024-04-15 16:20:30 +08:00
Soybean
bb74d9949b refactor(projects): update naive-ui.d.ts 2024-04-14 15:44:48 +08:00
Soybean
60beff7e63 fix(projects): update union-key.d.ts 2024-04-14 12:48:02 +08:00
Soybean
d6eda8f9ed fix(projects): fix axios createRequest: add default state 2024-04-09 17:44:05 +08:00
Soybean
f4a9cf8339 docs(projects): update README.md 2024-04-09 15:37:23 +08:00
Soybean
efc0e25c7f fix(projects): fix SvgIcon inheritAttrs warning 2024-04-09 07:27:48 +08:00
Soybean
35310ed73c Merge pull request #381 from paynezhuang/main 2024-04-08 19:04:13 +08:00
paynezhuang
001059cca0 fix(projects): fix menu edit rules 2024-04-08 11:44:12 +08:00
20 changed files with 72 additions and 25 deletions

View File

@@ -1,6 +1,42 @@
# Changelog # Changelog
## [v1.0.3](https://github.com/soybeanjs/soybean-admin/compare/tauri-v1.0.2...v1.0.3) (24-04-16)
###    🚀 Features
- **hooks**: deleting the route export of useRoutePush, use vue-router &nbsp;-&nbsp; by **paynezhuang** [<samp>(c6648)</samp>](https://github.com/soybeanjs/soybean-admin/commit/c6648b6)
### &nbsp;&nbsp;&nbsp;🐞 Bug Fixes
- **projects**:
- fix menu edit rules &nbsp;-&nbsp; by **paynezhuang** [<samp>(00105)</samp>](https://github.com/soybeanjs/soybean-admin/commit/001059c)
- fix SvgIcon inheritAttrs warning &nbsp;-&nbsp; by @honghuangdc [<samp>(efc0e)</samp>](https://github.com/soybeanjs/soybean-admin/commit/efc0e25)
- fix axios createRequest: add default state &nbsp;-&nbsp; by @honghuangdc [<samp>(d6eda)</samp>](https://github.com/soybeanjs/soybean-admin/commit/d6eda8f)
- update union-key.d.ts &nbsp;-&nbsp; by @honghuangdc [<samp>(60bef)</samp>](https://github.com/soybeanjs/soybean-admin/commit/60beff7)
- fix update theme color &nbsp;-&nbsp; by @honghuangdc [<samp>(27c53)</samp>](https://github.com/soybeanjs/soybean-admin/commit/27c53cd)
### &nbsp;&nbsp;&nbsp;🔥 Performance
- **projects**: perf code &nbsp;-&nbsp; by @honghuangdc [<samp>(b7f07)</samp>](https://github.com/soybeanjs/soybean-admin/commit/b7f0749)
### &nbsp;&nbsp;&nbsp;💅 Refactors
- **projects**: update naive-ui.d.ts &nbsp;-&nbsp; by @honghuangdc [<samp>(bb74d)</samp>](https://github.com/soybeanjs/soybean-admin/commit/bb74d99)
### &nbsp;&nbsp;&nbsp;📖 Documentation
- **projects**: update README.md &nbsp;-&nbsp; by @honghuangdc [<samp>(f4a9c)</samp>](https://github.com/soybeanjs/soybean-admin/commit/f4a9cf8)
### &nbsp;&nbsp;&nbsp;🏡 Chore
- **release**: release tauri v1.0.2 &nbsp;-&nbsp; by @honghuangdc [<samp>(ebdef)</samp>](https://github.com/soybeanjs/soybean-admin/commit/ebdef72)
### &nbsp;&nbsp;&nbsp;❤️ Contributors
[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)&nbsp;&nbsp;
[paynezhuang](mailto:paynezhuang@gmail.com)
## [v1.0.2](https://github.com/soybeanjs/soybean-admin/compare/tauri-v1.0.1...v1.0.2) (24-04-08) ## [v1.0.2](https://github.com/soybeanjs/soybean-admin/compare/tauri-v1.0.1...v1.0.2) (24-04-08)
### &nbsp;&nbsp;&nbsp;🐞 Bug Fixes ### &nbsp;&nbsp;&nbsp;🐞 Bug Fixes

View File

@@ -143,17 +143,17 @@ Thanks the following people for their contributions. If you want to contribute t
<p>QQ Group</p> <p>QQ Group</p>
<img src="https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/qq-soybean-admin-2.jpg" style="width:200px" /> <img src="https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/qq-soybean-admin-2.jpg" style="width:200px" />
</div> </div>
<div> <!-- <div>
<p>WeChat Group</p> <p>WeChat Group</p>
<img src="https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/wechat-0402.jpg" style="width:200px" /> <img src="https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/wechat-0402.jpg" style="width:200px" />
</div> </div> -->
<div> <div>
<p>Add the following WeChat to invite to the WeChat group</p> <p>Add the following WeChat to invite to the WeChat group</p>
<img src="https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/wechat-soybeanjs.jpg" style="width:200px" /> <img src="https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/wechat-soybeanjs.jpg" style="width:200px" />
</div> </div>
<!-- <div> <div>
<p>Add Soybean's WeChat for business consultation, cooperation, project architecture, one-on-one guidance, etc.</p> <p>Add Soybean's WeChat for business consultation, cooperation, project architecture, one-on-one guidance, etc.</p>
<img src="https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/wechat-soybean.jpg" style="width:200px" /> --> <img src="https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/wechat-soybean.jpg" style="width:200px" />
</div> </div>
## Star Trend ## Star Trend

View File

@@ -1,7 +1,7 @@
{ {
"name": "soybean-admin", "name": "soybean-admin",
"type": "module", "type": "module",
"version": "1.0.2", "version": "1.0.3",
"packageManager": "pnpm@8.15.6", "packageManager": "pnpm@8.15.6",
"description": "A fresh and elegant admin template, based on Vue3、Vite3、TypeScript、NaiveUI and UnoCSS. 一个基于Vue3、Vite3、TypeScript、NaiveUI and UnoCSS的清新优雅的中后台模版。", "description": "A fresh and elegant admin template, based on Vue3、Vite3、TypeScript、NaiveUI and UnoCSS. 一个基于Vue3、Vite3、TypeScript、NaiveUI and UnoCSS的清新优雅的中后台模版。",
"author": { "author": {

View File

@@ -1,6 +1,6 @@
{ {
"name": "@sa/axios", "name": "@sa/axios",
"version": "1.0.2", "version": "1.0.3",
"exports": { "exports": {
".": "./src/index.ts" ".": "./src/index.ts"
}, },

View File

@@ -127,6 +127,7 @@ export function createRequest<ResponseData = any, State = Record<string, unknown
request.cancelRequest = cancelRequest; request.cancelRequest = cancelRequest;
request.cancelAllRequest = cancelAllRequest; request.cancelAllRequest = cancelAllRequest;
request.state = {} as State;
return request; return request;
} }

View File

@@ -1,6 +1,6 @@
{ {
"name": "@sa/color-palette", "name": "@sa/color-palette",
"version": "1.0.2", "version": "1.0.3",
"exports": { "exports": {
".": "./src/index.ts" ".": "./src/index.ts"
}, },

View File

@@ -3,6 +3,7 @@ import { getColorName } from './name';
import type { ColorPalette, ColorPaletteFamily, ColorPaletteItem, ColorPaletteNumber } from './type'; import type { ColorPalette, ColorPaletteFamily, ColorPaletteItem, ColorPaletteNumber } from './type';
import defaultPalettes from './json/palette.json'; import defaultPalettes from './json/palette.json';
// to do: there is a bug in the code below, when the color is '#1c5cff', the colorPaletteFamily is not similar to the provided color
/** /**
* Get color palette by provided color and color name * Get color palette by provided color and color name
* *

View File

@@ -1,6 +1,6 @@
{ {
"name": "@sa/hooks", "name": "@sa/hooks",
"version": "1.0.2", "version": "1.0.3",
"exports": { "exports": {
".": "./src/index.ts" ".": "./src/index.ts"
}, },

View File

@@ -1,6 +1,6 @@
{ {
"name": "@sa/materials", "name": "@sa/materials",
"version": "1.0.2", "version": "1.0.3",
"exports": { "exports": {
".": "./src/index.ts" ".": "./src/index.ts"
}, },

View File

@@ -1,6 +1,6 @@
{ {
"name": "@sa/fetch", "name": "@sa/fetch",
"version": "1.0.2", "version": "1.0.3",
"exports": { "exports": {
".": "./src/index.ts" ".": "./src/index.ts"
}, },

View File

@@ -1,6 +1,6 @@
{ {
"name": "@sa/scripts", "name": "@sa/scripts",
"version": "1.0.2", "version": "1.0.3",
"bin": { "bin": {
"sa": "./bin.ts" "sa": "./bin.ts"
}, },

View File

@@ -1,6 +1,6 @@
{ {
"name": "@sa/uno-preset", "name": "@sa/uno-preset",
"version": "1.0.2", "version": "1.0.3",
"exports": { "exports": {
".": "./src/index.ts" ".": "./src/index.ts"
}, },

View File

@@ -1,6 +1,6 @@
{ {
"name": "@sa/utils", "name": "@sa/utils",
"version": "1.0.2", "version": "1.0.3",
"exports": { "exports": {
".": "./src/index.ts" ".": "./src/index.ts"
}, },

View File

@@ -2,7 +2,7 @@
import { computed, useAttrs } from 'vue'; import { computed, useAttrs } from 'vue';
import { Icon } from '@iconify/vue'; import { Icon } from '@iconify/vue';
defineOptions({ name: 'SvgIcon' }); defineOptions({ name: 'SvgIcon', inheritAttrs: false });
/** /**
* Props * Props

View File

@@ -92,7 +92,6 @@ export function useRouterPush(inSetup = true) {
} }
return { return {
route,
routerPush, routerPush,
routerBack, routerBack,
routerPushByKey, routerPushByKey,

View File

@@ -1,4 +1,5 @@
import { computed, reactive, ref } from 'vue'; import { computed, reactive, ref } from 'vue';
import { useRoute } from 'vue-router';
import { defineStore } from 'pinia'; import { defineStore } from 'pinia';
import { useLoading } from '@sa/hooks'; import { useLoading } from '@sa/hooks';
import { SetupStoreId } from '@/enum'; import { SetupStoreId } from '@/enum';
@@ -10,8 +11,9 @@ import { useRouteStore } from '../route';
import { clearAuthStorage, getToken, getUserInfo } from './shared'; import { clearAuthStorage, getToken, getUserInfo } from './shared';
export const useAuthStore = defineStore(SetupStoreId.Auth, () => { export const useAuthStore = defineStore(SetupStoreId.Auth, () => {
const route = useRoute();
const routeStore = useRouteStore(); const routeStore = useRouteStore();
const { route, toLogin, redirectFromLogin } = useRouterPush(false); const { toLogin, redirectFromLogin } = useRouterPush(false);
const { loading: loginLoading, startLoading, endLoading } = useLoading(); const { loading: loginLoading, startLoading, endLoading } = useLoading();
const token = ref(getToken()); const token = ref(getToken());
@@ -36,7 +38,7 @@ export const useAuthStore = defineStore(SetupStoreId.Auth, () => {
authStore.$reset(); authStore.$reset();
if (!route.value.meta.constant) { if (!route.meta.constant) {
await toLogin(); await toLogin();
} }

View File

@@ -2,6 +2,7 @@ import { computed, effectScope, onScopeDispose, ref, toRefs, watch } from 'vue';
import type { Ref } from 'vue'; import type { Ref } from 'vue';
import { defineStore } from 'pinia'; import { defineStore } from 'pinia';
import { useEventListener, usePreferredColorScheme } from '@vueuse/core'; import { useEventListener, usePreferredColorScheme } from '@vueuse/core';
import { getColorPalette } from '@sa/color-palette';
import { SetupStoreId } from '@/enum'; import { SetupStoreId } from '@/enum';
import { localStg } from '@/utils/storage'; import { localStg } from '@/utils/storage';
import { addThemeVarsToHtml, createThemeToken, getNaiveTheme, initThemeSettings, toggleCssDarkMode } from './shared'; import { addThemeVarsToHtml, createThemeToken, getNaiveTheme, initThemeSettings, toggleCssDarkMode } from './shared';
@@ -79,10 +80,15 @@ export const useThemeStore = defineStore(SetupStoreId.Theme, () => {
* @param color Theme color * @param color Theme color
*/ */
function updateThemeColors(key: App.Theme.ThemeColorKey, color: string) { function updateThemeColors(key: App.Theme.ThemeColorKey, color: string) {
// get a color palette by provided color and color name, and use the suitable color
const colorPalette = getColorPalette(color, key);
const mainColor = colorPalette.main.hexcode;
if (key === 'primary') { if (key === 'primary') {
settings.value.themeColor = color; settings.value.themeColor = mainColor;
} else { } else {
settings.value.otherColor[key] = color; settings.value.otherColor[key] = mainColor;
} }
} }

View File

@@ -41,7 +41,7 @@ declare namespace NaiveUI {
type GetTableData<A extends TableApiFn> = A extends TableApiFn<infer T> ? T : never; type GetTableData<A extends TableApiFn> = A extends TableApiFn<infer T> ? T : never;
type NaiveTableConfig<A extends TableApiFn> = Pick< type NaiveTableConfig<A extends TableApiFn> = Pick<
import('@sa/hooks').TableConfig<A, GetTableData<A>, TableColumn<NaiveUI.TableDataWithIndex<GetTableData<A>>>>, import('@sa/hooks').TableConfig<A, GetTableData<A>, TableColumn<TableDataWithIndex<GetTableData<A>>>>,
'apiFn' | 'apiParams' | 'columns' | 'immediate' 'apiFn' | 'apiParams' | 'columns' | 'immediate'
>; >;
} }

View File

@@ -27,8 +27,8 @@ declare namespace UnionKey {
/** /**
* The scroll mode when content overflow * The scroll mode when content overflow
* *
* - Wrapper the wrapper component's root element overflow * - wrapper: the wrapper component's root element overflow
* - Content the content component overflow * - content: the content component overflow
*/ */
type ThemeScrollMode = import('@sa/materials').LayoutScrollMode; type ThemeScrollMode = import('@sa/materials').LayoutScrollMode;

View File

@@ -84,11 +84,13 @@ function createDefaultModel(): Model {
}; };
} }
type RuleKey = Extract<keyof Model, 'userName' | 'userStatus'>; type RuleKey = Extract<keyof Model, 'menuName' | 'status' | 'routeName' | 'routePath'>;
const rules: Record<RuleKey, App.Global.FormRule> = { const rules: Record<RuleKey, App.Global.FormRule> = {
userName: defaultRequiredRule, menuName: defaultRequiredRule,
userStatus: defaultRequiredRule status: defaultRequiredRule,
routeName: defaultRequiredRule,
routePath: defaultRequiredRule
}; };
const disabledMenuType = computed(() => props.operateType === 'edit'); const disabledMenuType = computed(() => props.operateType === 'edit');