diff --git a/.dockerignore b/.dockerignore index 4f75c951..52b833a9 100644 --- a/.dockerignore +++ b/.dockerignore @@ -3,3 +3,5 @@ node_modules .gitignore *.md dist +.turbo +dist.zip diff --git a/.vscode/settings.json b/.vscode/settings.json index 8d76b74e..fb263f7f 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -212,7 +212,6 @@ "*.env": "$(capture).env.*", "README.md": "README*,CHANGELOG*,LICENSE,CNAME", "package.json": "pnpm-lock.yaml,pnpm-workspace.yaml,.gitattributes,.gitignore,.gitpod.yml,.npmrc,.browserslistrc,.node-version,.git*,.tazerc.json", - "Dockerfile": "Dockerfile,.docker*,docker-entrypoint.sh,build-local-docker*,nginx.conf", "eslint.config.mjs": ".eslintignore,.prettierignore,.stylelintignore,.commitlintrc.*,.prettierrc.*,stylelint.config.*,.lintstagedrc.mjs,cspell.json", "tailwind.config.mjs": "postcss.*" }, diff --git a/docs/.vitepress/config/plugins/demo-preview.ts b/docs/.vitepress/config/plugins/demo-preview.ts index fba835cc..03b1698c 100644 --- a/docs/.vitepress/config/plugins/demo-preview.ts +++ b/docs/.vitepress/config/plugins/demo-preview.ts @@ -83,7 +83,12 @@ export const demoPreviewPlugin = (md: MarkdownRenderer) => { if (!state.tokens[index]) { return ''; } - + const firstString = 'index.vue'; + childFiles = childFiles.sort((a, b) => { + if (a === firstString) return -1; + if (b === firstString) return 1; + return a.localeCompare(b, 'en', { sensitivity: 'base' }); + }); state.tokens[index].content = `<${ComponentName}/> `; diff --git a/docs/src/guide/introduction/thin.md b/docs/src/guide/introduction/thin.md index 7df3c9f8..523c6f8d 100644 --- a/docs/src/guide/introduction/thin.md +++ b/docs/src/guide/introduction/thin.md @@ -65,3 +65,12 @@ pnpm install } } ``` + +## 其他 + +如果你想更进一步精简,你可以删除参考一下文件或者文件夹的作用,判断自己是否需要,不需要删除即可: + +- `.changeset` 文件夹用于管理版本变更 +- `.github` 文件夹用于存放 GitHub 的配置文件 +- `.vscode` 文件夹用于存放 VSCode 的配置文件,如果你使用其他编辑器,可以删除 +- `./scripts/deploy` 文件夹用于存放部署脚本,如果你不需要docker部署,可以删除 diff --git a/packages/@core/base/shared/src/color/generator.ts b/packages/@core/base/shared/src/color/generator.ts index c7a5cbb2..ac7bd8ad 100644 --- a/packages/@core/base/shared/src/color/generator.ts +++ b/packages/@core/base/shared/src/color/generator.ts @@ -14,6 +14,7 @@ function generatorColorVariables(colorItems: ColorItem[]) { colorItems.forEach(({ alias, color, name }) => { if (color) { const colorsMap = getColors(new TinyColor(color).toHexString()); + let mainColor = colorsMap['500']; const colorKeys = Object.keys(colorsMap); diff --git a/packages/@core/base/shared/src/utils/__tests__/window.test.ts b/packages/@core/base/shared/src/utils/__tests__/window.test.ts index 69ad4f7d..ebb04bb0 100644 --- a/packages/@core/base/shared/src/utils/__tests__/window.test.ts +++ b/packages/@core/base/shared/src/utils/__tests__/window.test.ts @@ -1,6 +1,6 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; -import { openWindow } from '../window'; // 假设你的函数在 'openWindow' 文件中 +import { openWindow } from '../window'; describe('openWindow', () => { // 保存原始的 window.open 函数 diff --git a/packages/@core/preferences/src/update-css-variables.ts b/packages/@core/preferences/src/update-css-variables.ts index 507da91c..ae6f7e5e 100644 --- a/packages/@core/preferences/src/update-css-variables.ts +++ b/packages/@core/preferences/src/update-css-variables.ts @@ -86,21 +86,22 @@ function updateMainColorVariables(preference: Preferences) { { alias: 'destructive', color: colorDestructive, name: 'red' }, ]); - if (colorPrimary) { - const mainColor = colorVariables['--primary-500']; - mainColor && - document.documentElement.style.setProperty('--primary', mainColor); - } + // 要设置的 CSS 变量映射 + const colorMappings = { + '--green-500': '--success', + '--primary-500': '--primary', + '--red-500': '--destructive', + '--yellow-500': '--warning', + }; + + // 统一处理颜色变量的更新 + Object.entries(colorMappings).forEach(([sourceVar, targetVar]) => { + const colorValue = colorVariables[sourceVar]; + if (colorValue) { + document.documentElement.style.setProperty(targetVar, colorValue); + } + }); - if (colorVariables['--green-500']) { - colorVariables['--success'] = colorVariables['--green-500']; - } - if (colorVariables['--yellow-500']) { - colorVariables['--warning'] = colorVariables['--yellow-500']; - } - if (colorVariables['--red-500']) { - colorVariables['--destructive'] = colorVariables['--red-500']; - } executeUpdateCSSVariables(colorVariables); } diff --git a/packages/@core/ui-kit/form-ui/src/form-api.ts b/packages/@core/ui-kit/form-ui/src/form-api.ts index f4c92abd..c49f01f4 100644 --- a/packages/@core/ui-kit/form-ui/src/form-api.ts +++ b/packages/@core/ui-kit/form-ui/src/form-api.ts @@ -177,7 +177,7 @@ export class FormApi { } unmounted() { - this.state = null; + // this.state = null; this.isMounted = false; this.stateHandler.reset(); } diff --git a/packages/@core/ui-kit/form-ui/src/form-render/form-field.vue b/packages/@core/ui-kit/form-ui/src/form-render/form-field.vue index 3cb5f6a5..6c0ecbdf 100644 --- a/packages/@core/ui-kit/form-ui/src/form-render/form-field.vue +++ b/packages/@core/ui-kit/form-ui/src/form-render/form-field.vue @@ -16,7 +16,7 @@ import { import { cn, isFunction, isObject, isString } from '@vben-core/shared/utils'; import { toTypedSchema } from '@vee-validate/zod'; -import { useFormValues } from 'vee-validate'; +import { useFieldError, useFormValues } from 'vee-validate'; import { injectRenderFormProps, useFormContext } from './context'; import useDependencies from './dependencies'; @@ -43,8 +43,11 @@ const { const { componentBindEventMap, componentMap, isVertical } = useFormContext(); const formRenderProps = injectRenderFormProps(); const values = useFormValues(); +const errors = useFieldError(fieldName); const formApi = formRenderProps.form; +const isInValid = computed(() => errors.value?.length > 0); + const fieldComponent = computed(() => { const finalComponent = isString(component) ? componentMap.value[component] @@ -217,6 +220,7 @@ function createComponentProps(slotProps: Record) { ) { ...slotProps, ...createComponentProps(slotProps), disabled: shouldDisabled, + isInValid, }" > diff --git a/packages/@core/ui-kit/popup-ui/src/modal/__tests__/modal-api.test.ts b/packages/@core/ui-kit/popup-ui/src/modal/__tests__/modal-api.test.ts index 90eb634d..e12b144f 100644 --- a/packages/@core/ui-kit/popup-ui/src/modal/__tests__/modal-api.test.ts +++ b/packages/@core/ui-kit/popup-ui/src/modal/__tests__/modal-api.test.ts @@ -1,7 +1,8 @@ +import type { ModalState } from '../modal'; + import { beforeEach, describe, expect, it, vi } from 'vitest'; -import { ModalApi } from '../modal-api'; // 假设 ModalApi 位于同一目录 -import type { ModalState } from '../modal'; +import { ModalApi } from '../modal-api'; vi.mock('@vben-core/shared/store', () => { return { diff --git a/packages/@core/ui-kit/shadcn-ui/src/components/ui/dialog/DialogContent.vue b/packages/@core/ui-kit/shadcn-ui/src/components/ui/dialog/DialogContent.vue index 3f12dc16..233a2778 100644 --- a/packages/@core/ui-kit/shadcn-ui/src/components/ui/dialog/DialogContent.vue +++ b/packages/@core/ui-kit/shadcn-ui/src/components/ui/dialog/DialogContent.vue @@ -52,7 +52,9 @@ defineExpose({