feat: 合并 1.0.2

This commit is contained in:
xlsea 2024-04-10 11:25:25 +08:00
parent 610bcbf223
commit b81e2a89ec
19 changed files with 448 additions and 434 deletions

View File

@ -17,7 +17,8 @@ export default defineConfig(
registeredComponentsOnly: false, registeredComponentsOnly: false,
ignores: ['/^icon-/'] ignores: ['/^icon-/']
} }
] ],
'order-attributify': 'off'
} }
} }
); );

View File

@ -58,41 +58,41 @@
"ts-md5": "^1.3.1", "ts-md5": "^1.3.1",
"vue": "3.4.21", "vue": "3.4.21",
"vue-draggable-plus": "0.4.0", "vue-draggable-plus": "0.4.0",
"vue-i18n": "9.10.2", "vue-i18n": "9.11.0",
"vue-router": "4.3.0" "vue-router": "4.3.0"
}, },
"devDependencies": { "devDependencies": {
"@elegant-router/vue": "0.3.6", "@elegant-router/vue": "0.3.6",
"@iconify/json": "2.2.196", "@iconify/json": "2.2.198",
"@sa/scripts": "workspace:*", "@sa/scripts": "workspace:*",
"@sa/uno-preset": "workspace:*", "@sa/uno-preset": "workspace:*",
"@soybeanjs/eslint-config": "1.2.5", "@soybeanjs/eslint-config": "1.2.5",
"@types/lodash-es": "4.17.12", "@types/lodash-es": "4.17.12",
"@types/node": "20.12.2", "@types/node": "20.12.5",
"@types/nprogress": "0.2.3", "@types/nprogress": "0.2.3",
"@unocss/eslint-config": "0.58.8", "@unocss/eslint-config": "0.59.0",
"@unocss/preset-icons": "0.58.8", "@unocss/preset-icons": "0.59.0",
"@unocss/preset-uno": "0.58.8", "@unocss/preset-uno": "0.59.0",
"@unocss/transformer-directives": "0.58.8", "@unocss/transformer-directives": "0.59.0",
"@unocss/transformer-variant-group": "0.58.8", "@unocss/transformer-variant-group": "0.59.0",
"@unocss/vite": "0.58.8", "@unocss/vite": "0.59.0",
"@vitejs/plugin-vue": "5.0.4", "@vitejs/plugin-vue": "5.0.4",
"@vitejs/plugin-vue-jsx": "3.1.0", "@vitejs/plugin-vue-jsx": "3.1.0",
"eslint": "8.57.0", "eslint": "8.57.0",
"eslint-plugin-vue": "9.24.0", "eslint-plugin-vue": "9.24.0",
"lint-staged": "15.2.2", "lint-staged": "15.2.2",
"sass": "1.72.0", "sass": "1.74.1",
"simple-git-hooks": "2.11.1", "simple-git-hooks": "2.11.1",
"tsx": "4.7.1", "tsx": "4.7.2",
"typescript": "5.4.3", "typescript": "5.4.4",
"unplugin-icons": "0.18.5", "unplugin-icons": "0.18.5",
"unplugin-vue-components": "0.26.0", "unplugin-vue-components": "0.26.0",
"vite": "5.2.7", "vite": "5.2.8",
"vite-plugin-progress": "0.0.7", "vite-plugin-progress": "0.0.7",
"vite-plugin-svg-icons": "2.0.1", "vite-plugin-svg-icons": "2.0.1",
"vite-plugin-vue-devtools": "7.0.25", "vite-plugin-vue-devtools": "7.0.25",
"vue-eslint-parser": "9.4.2", "vue-eslint-parser": "9.4.2",
"vue-tsc": "2.0.7" "vue-tsc": "2.0.11"
}, },
"simple-git-hooks": { "simple-git-hooks": {
"commit-msg": "pnpm sa git-commit-verify", "commit-msg": "pnpm sa git-commit-verify",

View File

@ -1,6 +1,6 @@
{ {
"name": "@sa/axios", "name": "@sa/axios",
"version": "1.0.0", "version": "1.0.2",
"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;
} }
@ -145,9 +146,10 @@ export function createFlatRequest<ResponseData = any, State = Record<string, unk
) { ) {
const { instance, opts, cancelRequest, cancelAllRequest } = createCommonRequest<ResponseData>(axiosConfig, options); const { instance, opts, cancelRequest, cancelAllRequest } = createCommonRequest<ResponseData>(axiosConfig, options);
const flatRequest: FlatRequestInstance<State> = async function flatRequest<T = any, R extends ResponseType = 'json'>( const flatRequest: FlatRequestInstance<State, ResponseData> = async function flatRequest<
config: CustomAxiosRequestConfig T = any,
) { R extends ResponseType = 'json'
>(config: CustomAxiosRequestConfig) {
try { try {
const response: AxiosResponse<ResponseData> = await instance(config); const response: AxiosResponse<ResponseData> = await instance(config);
@ -163,7 +165,7 @@ export function createFlatRequest<ResponseData = any, State = Record<string, unk
} catch (error) { } catch (error) {
return { data: null, error }; return { data: null, error };
} }
} as FlatRequestInstance<State>; } as FlatRequestInstance<State, ResponseData>;
flatRequest.cancelRequest = cancelRequest; flatRequest.cancelRequest = cancelRequest;
flatRequest.cancelAllRequest = cancelAllRequest; flatRequest.cancelAllRequest = cancelAllRequest;

View File

@ -85,15 +85,17 @@ export type FlatResponseSuccessData<T = any> = {
error: null; error: null;
}; };
export type FlatResponseFailData<T = any> = { export type FlatResponseFailData<ResponseData = any> = {
data: null; data: null;
error: AxiosError<T>; error: AxiosError<ResponseData>;
}; };
export type FlatResponseData<T = any> = FlatResponseSuccessData<T> | FlatResponseFailData<T>; export type FlatResponseData<T = any, ResponseData = any> =
| FlatResponseSuccessData<T>
| FlatResponseFailData<ResponseData>;
export interface FlatRequestInstance<S = Record<string, unknown>> extends RequestInstanceCommon<S> { export interface FlatRequestInstance<S = Record<string, unknown>, ResponseData = any> extends RequestInstanceCommon<S> {
<T = any, R extends ResponseType = 'json'>( <T = any, R extends ResponseType = 'json'>(
config: CustomAxiosRequestConfig<R> config: CustomAxiosRequestConfig<R>
): Promise<FlatResponseData<MappedType<R, T>>>; ): Promise<FlatResponseData<MappedType<R, T>, ResponseData>>;
} }

View File

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

View File

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

View File

@ -16,19 +16,19 @@ export type HookRequestInstanceResponseSuccessData<T = any> = {
error: Ref<null>; error: Ref<null>;
}; };
export type HookRequestInstanceResponseFailData<T = any> = { export type HookRequestInstanceResponseFailData<ResponseData = any> = {
data: Ref<null>; data: Ref<null>;
error: Ref<AxiosError<T>>; error: Ref<AxiosError<ResponseData>>;
}; };
export type HookRequestInstanceResponseData<T = any> = { export type HookRequestInstanceResponseData<T = any, ResponseData = any> = {
loading: Ref<boolean>; loading: Ref<boolean>;
} & (HookRequestInstanceResponseSuccessData<T> | HookRequestInstanceResponseFailData<T>); } & (HookRequestInstanceResponseSuccessData<T> | HookRequestInstanceResponseFailData<ResponseData>);
export interface HookRequestInstance { export interface HookRequestInstance<ResponseData = any> {
<T = any, R extends ResponseType = 'json'>( <T = any, R extends ResponseType = 'json'>(
config: CustomAxiosRequestConfig config: CustomAxiosRequestConfig
): HookRequestInstanceResponseData<MappedType<R, T>>; ): HookRequestInstanceResponseData<MappedType<R, T>, ResponseData>;
cancelRequest: (requestId: string) => void; cancelRequest: (requestId: string) => void;
cancelAllRequest: () => void; cancelAllRequest: () => void;
} }
@ -45,13 +45,13 @@ export default function createHookRequest<ResponseData = any>(
) { ) {
const request = createFlatRequest<ResponseData>(axiosConfig, options); const request = createFlatRequest<ResponseData>(axiosConfig, options);
const hookRequest: HookRequestInstance = function hookRequest<T = any, R extends ResponseType = 'json'>( const hookRequest: HookRequestInstance<ResponseData> = function hookRequest<T = any, R extends ResponseType = 'json'>(
config: CustomAxiosRequestConfig config: CustomAxiosRequestConfig
) { ) {
const { loading, startLoading, endLoading } = useLoading(); const { loading, startLoading, endLoading } = useLoading();
const data = ref<MappedType<R, T> | null>(null); const data = ref<MappedType<R, T> | null>(null) as Ref<MappedType<R, T>>;
const error = ref<AxiosError<MappedType<R, T>> | null>(null); const error = ref<AxiosError<ResponseData> | null>(null) as Ref<AxiosError<ResponseData> | null>;
startLoading(); startLoading();
@ -70,7 +70,7 @@ export default function createHookRequest<ResponseData = any>(
data, data,
error error
}; };
} as HookRequestInstance; } as HookRequestInstance<ResponseData>;
hookRequest.cancelRequest = request.cancelRequest; hookRequest.cancelRequest = request.cancelRequest;
hookRequest.cancelAllRequest = request.cancelAllRequest; hookRequest.cancelAllRequest = request.cancelAllRequest;

View File

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

View File

@ -203,7 +203,7 @@ function handleClickMask() {
<!-- Main Content --> <!-- Main Content -->
<main <main
:id="isContentScroll ? scrollElId : undefined" :id="isContentScroll ? scrollElId : undefined"
class="flex flex-grow flex-col" class="flex flex-col flex-grow"
:class="[commonClass, contentClass, leftGapClass, { 'overflow-y-auto': isContentScroll }]" :class="[commonClass, contentClass, leftGapClass, { 'overflow-y-auto': isContentScroll }]"
> >
<slot></slot> <slot></slot>

View File

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

View File

@ -1,6 +1,6 @@
{ {
"name": "@sa/scripts", "name": "@sa/scripts",
"version": "1.0.0", "version": "1.0.2",
"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.0", "version": "1.0.2",
"exports": { "exports": {
".": "./src/index.ts" ".": "./src/index.ts"
}, },

View File

@ -1,6 +1,6 @@
{ {
"name": "@sa/utils", "name": "@sa/utils",
"version": "1.0.0", "version": "1.0.2",
"exports": { "exports": {
".": "./src/index.ts" ".": "./src/index.ts"
}, },
@ -13,7 +13,7 @@
"colord": "2.9.3", "colord": "2.9.3",
"crypto-js": "4.2.0", "crypto-js": "4.2.0",
"localforage": "1.10.0", "localforage": "1.10.0",
"nanoid": "5.0.6" "nanoid": "5.0.7"
}, },
"devDependencies": { "devDependencies": {
"@types/crypto-js": "4.2.2" "@types/crypto-js": "4.2.2"

File diff suppressed because it is too large Load Diff

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

@ -184,7 +184,7 @@ init();
<template #prefix> <template #prefix>
<SvgIcon :icon="tab.icon" :local-icon="tab.localIcon" class="inline-block align-text-bottom text-16px" /> <SvgIcon :icon="tab.icon" :local-icon="tab.localIcon" class="inline-block align-text-bottom text-16px" />
</template> </template>
<span>{{ tab.label }}</span> <div class="max-w-240px ellipsis-text">{{ tab.label }}</div>
</PageTab> </PageTab>
</div> </div>
</BetterScroll> </BetterScroll>

View File

@ -150,7 +150,11 @@ export function addThemeVarsToHtml(tokens: App.Theme.BaseToken, darkTokens: App.
} }
`; `;
const style = document.createElement('style'); const styleId = 'theme-vars';
const style = document.querySelector(`#${styleId}`) || document.createElement('style');
style.id = styleId;
style.textContent = css + darkCss; style.textContent = css + darkCss;
@ -230,6 +234,9 @@ export function getNaiveTheme(colors: App.Theme.ThemeColor) {
}, },
LoadingBar: { LoadingBar: {
colorLoading colorLoading
},
Tag: {
borderRadius: '6px'
} }
}; };

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');