李琦
6db736a6f4
feat:
...
1. 更新框架
2. 修复框架更新后导致的问题
3. 消息系统升级
2026-08-11 13:30:21 +08:00
李琦
82b10bd122
Merge remote-tracking branch 'vben/main' into vben-dev
...
# Conflicts:
# .gitignore
# .husky/pre-commit
# .vscode/extensions.json
# .vscode/settings.json
# README.ja-JP.md
# README.md
# README.zh-CN.md
# apps/backend-mock/api/auth/codes.ts
# apps/backend-mock/api/auth/login.post.ts
# apps/backend-mock/api/auth/logout.post.ts
# apps/backend-mock/api/auth/refresh.post.ts
# apps/backend-mock/api/menu/all.ts
# apps/backend-mock/api/status.ts
# apps/backend-mock/api/table/list.ts
# apps/backend-mock/api/test.get.ts
# apps/backend-mock/api/test.post.ts
# apps/backend-mock/api/user/info.ts
# apps/backend-mock/middleware/1.api.ts
# apps/backend-mock/nitro.config.ts
# apps/backend-mock/package.json
# apps/backend-mock/routes/[...].ts
# apps/backend-mock/tsconfig.json
# apps/backend-mock/utils/cookie-utils.ts
# apps/backend-mock/utils/jwt-utils.ts
# apps/backend-mock/utils/mock-data.ts
# apps/backend-mock/utils/response.ts
# apps/web-antd/.env
# apps/web-antd/src/adapter/component/index.ts
# apps/web-antd/src/adapter/form.ts
# apps/web-antd/src/api/request.ts
# apps/web-antd/src/layouts/auth.vue
# apps/web-antd/src/layouts/basic.vue
# apps/web-antd/src/preferences.ts
# apps/web-antd/src/router/guard.ts
# apps/web-antd/src/router/routes/modules/demos.ts
# apps/web-antd/src/store/auth.ts
# apps/web-antd/src/views/demos/antd/index.vue
# apps/web-antdv-next/vite.config.ts
# apps/web-ele/.env
# apps/web-ele/index.html
# apps/web-ele/package.json
# apps/web-ele/src/adapter/component/index.ts
# apps/web-ele/src/adapter/form.ts
# apps/web-ele/src/adapter/vxe-table.ts
# apps/web-ele/src/api/request.ts
# apps/web-ele/src/bootstrap.ts
# apps/web-ele/src/layouts/auth.vue
# apps/web-ele/src/layouts/basic.vue
# apps/web-ele/src/locales/index.ts
# apps/web-ele/src/locales/langs/en-US/demos.json
# apps/web-ele/src/locales/langs/en-US/page.json
# apps/web-ele/src/locales/langs/zh-CN/demos.json
# apps/web-ele/src/locales/langs/zh-CN/page.json
# apps/web-ele/src/preferences.ts
# apps/web-ele/src/router/guard.ts
# apps/web-ele/src/router/routes/core.ts
# apps/web-ele/src/router/routes/modules/dashboard.ts
# apps/web-ele/src/router/routes/modules/demos.ts
# apps/web-ele/src/router/routes/modules/vben.ts
# apps/web-ele/src/store/auth.ts
# apps/web-ele/src/views/_core/authentication/code-login.vue
# apps/web-ele/src/views/_core/authentication/forget-password.vue
# apps/web-ele/src/views/_core/authentication/register.vue
# apps/web-ele/src/views/dashboard/analytics/analytics-trends.vue
# apps/web-ele/src/views/dashboard/analytics/analytics-visits-data.vue
# apps/web-ele/src/views/dashboard/analytics/analytics-visits-sales.vue
# apps/web-ele/src/views/dashboard/analytics/analytics-visits-source.vue
# apps/web-ele/src/views/dashboard/analytics/analytics-visits.vue
# apps/web-ele/src/views/dashboard/analytics/index.vue
# apps/web-ele/src/views/demos/element/index.vue
# apps/web-ele/src/views/demos/form/basic.vue
# apps/web-ele/tsconfig.json
# apps/web-ele/tsconfig.node.json
# apps/web-naive/.env
# apps/web-naive/index.html
# apps/web-naive/package.json
# apps/web-naive/src/adapter/component/index.ts
# apps/web-naive/src/adapter/form.ts
# apps/web-naive/src/adapter/vxe-table.ts
# apps/web-naive/src/api/request.ts
# apps/web-naive/src/bootstrap.ts
# apps/web-naive/src/layouts/auth.vue
# apps/web-naive/src/layouts/basic.vue
# apps/web-naive/src/locales/index.ts
# apps/web-naive/src/locales/langs/en-US/demos.json
# apps/web-naive/src/locales/langs/en-US/page.json
# apps/web-naive/src/locales/langs/zh-CN/demos.json
# apps/web-naive/src/locales/langs/zh-CN/page.json
# apps/web-naive/src/preferences.ts
# apps/web-naive/src/router/guard.ts
# apps/web-naive/src/router/routes/core.ts
# apps/web-naive/src/router/routes/modules/dashboard.ts
# apps/web-naive/src/router/routes/modules/demos.ts
# apps/web-naive/src/router/routes/modules/vben.ts
# apps/web-naive/src/store/auth.ts
# apps/web-naive/src/views/_core/authentication/code-login.vue
# apps/web-naive/src/views/_core/authentication/forget-password.vue
# apps/web-naive/src/views/_core/authentication/register.vue
# apps/web-naive/src/views/dashboard/analytics/analytics-trends.vue
# apps/web-naive/src/views/dashboard/analytics/analytics-visits-data.vue
# apps/web-naive/src/views/dashboard/analytics/analytics-visits-sales.vue
# apps/web-naive/src/views/dashboard/analytics/analytics-visits-source.vue
# apps/web-naive/src/views/dashboard/analytics/analytics-visits.vue
# apps/web-naive/src/views/dashboard/analytics/index.vue
# apps/web-naive/src/views/demos/form/basic.vue
# apps/web-naive/src/views/demos/naive/index.vue
# apps/web-naive/tsconfig.json
# apps/web-naive/tsconfig.node.json
# apps/web-naive/vite.config.ts
# docs/.vitepress/components/demo-preview.vue
# docs/.vitepress/components/preview-group.vue
# docs/.vitepress/config/en.mts
# docs/.vitepress/config/index.mts
# docs/.vitepress/config/plugins/demo-preview.ts
# docs/.vitepress/config/shared.mts
# docs/.vitepress/config/zh.mts
# docs/.vitepress/theme/components/site-layout.vue
# docs/.vitepress/theme/components/vben-contributors.vue
# docs/.vitepress/theme/styles/variables.css
# docs/package.json
# docs/src/_env/adapter/component.ts
# docs/src/_env/adapter/form.ts
# docs/src/_env/adapter/vxe-table.ts
# docs/src/commercial/community.md
# docs/src/components/common-ui/vben-count-to-animator.md
# docs/src/components/common-ui/vben-drawer.md
# docs/src/components/common-ui/vben-form.md
# docs/src/components/common-ui/vben-modal.md
# docs/src/components/common-ui/vben-vxe-table.md
# docs/src/components/layout-ui/page.md
# docs/src/demos/vben-drawer/auto-height/drawer.vue
# docs/src/demos/vben-drawer/basic/index.vue
# docs/src/demos/vben-drawer/dynamic/index.vue
# docs/src/demos/vben-drawer/shared-data/drawer.vue
# docs/src/demos/vben-drawer/shared-data/index.vue
# docs/src/demos/vben-form/api/index.vue
# docs/src/demos/vben-form/basic/index.vue
# docs/src/demos/vben-form/custom/index.vue
# docs/src/demos/vben-form/dynamic/index.vue
# docs/src/demos/vben-form/query/index.vue
# docs/src/demos/vben-form/rules/index.vue
# docs/src/demos/vben-modal/auto-height/modal.vue
# docs/src/demos/vben-modal/basic/index.vue
# docs/src/demos/vben-modal/dynamic/index.vue
# docs/src/demos/vben-modal/shared-data/index.vue
# docs/src/demos/vben-modal/shared-data/modal.vue
# docs/src/demos/vben-vxe-table/basic/index.vue
# docs/src/demos/vben-vxe-table/custom-cell/index.vue
# docs/src/demos/vben-vxe-table/edit-row/index.vue
# docs/src/demos/vben-vxe-table/fixed/index.vue
# docs/src/demos/vben-vxe-table/form/index.vue
# docs/src/demos/vben-vxe-table/remote/index.vue
# docs/src/demos/vben-vxe-table/tree/index.vue
# docs/src/demos/vben-vxe-table/virtual/index.vue
# docs/src/en/guide/essentials/development.md
# docs/src/en/guide/essentials/external-module.md
# docs/src/en/guide/essentials/route.md
# docs/src/en/guide/essentials/server.md
# docs/src/en/guide/essentials/settings.md
# docs/src/en/guide/in-depth/access.md
# docs/src/en/guide/in-depth/loading.md
# docs/src/en/guide/in-depth/locale.md
# docs/src/en/guide/in-depth/theme.md
# docs/src/en/guide/introduction/quick-start.md
# docs/src/en/guide/introduction/thin.md
# docs/src/en/guide/introduction/vben.md
# docs/src/en/guide/other/faq.md
# docs/src/en/guide/project/dir.md
# docs/src/en/guide/project/standard.md
# docs/src/en/guide/project/tailwindcss.md
# docs/src/en/index.md
# docs/src/friend-links/index.md
# docs/src/guide/essentials/build.md
# docs/src/guide/essentials/development.md
# docs/src/guide/essentials/external-module.md
# docs/src/guide/essentials/route.md
# docs/src/guide/essentials/server.md
# docs/src/guide/essentials/settings.md
# docs/src/guide/in-depth/access.md
# docs/src/guide/in-depth/check-updates.md
# docs/src/guide/in-depth/loading.md
# docs/src/guide/in-depth/locale.md
# docs/src/guide/in-depth/theme.md
# docs/src/guide/introduction/quick-start.md
# docs/src/guide/introduction/thin.md
# docs/src/guide/introduction/vben.md
# docs/src/guide/introduction/why.md
# docs/src/guide/other/faq.md
# docs/src/guide/project/dir.md
# docs/src/guide/project/standard.md
# docs/src/guide/project/tailwindcss.md
# docs/src/index.md
# docs/tsconfig.json
# package.json
# packages/@core/ui-kit/shadcn-ui/src/components/logo/logo.vue
# packages/constants/src/core.ts
# packages/effects/common-ui/src/components/index.ts
# packages/effects/common-ui/src/ui/dashboard/analysis/analysis-overview.vue
# packages/effects/common-ui/src/ui/dashboard/workbench/workbench-header.vue
# packages/effects/common-ui/src/ui/dashboard/workbench/workbench-project.vue
# packages/effects/layouts/src/authentication/authentication.vue
# packages/effects/layouts/src/basic/layout.vue
# packages/effects/layouts/src/widgets/notification/notification.vue
# packages/effects/layouts/src/widgets/notification/types.ts
# packages/icons/src/iconify/index.ts
# packages/icons/src/svg/index.ts
# packages/stores/src/modules/user.ts
# playground/src/adapter/component/index.ts
# playground/src/store/auth.ts
# pnpm-lock.yaml
# vben-admin.code-workspace
2026-08-10 16:55:17 +08:00
MistyMoon
418c16e093
fix(@vben/locales): 修复锁屏弹窗按钮文案歧义 ( #8211 )
...
锁屏设置弹窗(lock-screen-modal)的确认按钮作用是输入密码后锁定屏幕,
但按钮文案 i18n key `ui.widgets.lockScreen.screenButton` 原值为「解锁」/「Unlock」,
与弹窗标题「锁定屏幕」及实际动作矛盾,存在歧义。
- zh-CN: 「解锁」->「锁定」
- en-US: 「Unlock」->「Lock」
(同段另有 `unlock` key 值「点击解锁」,用于已锁定后的全屏解锁界面,语义正确,保持不变)
2026-07-30 07:12:08 +08:00
xingyu
2d82505330
fix: dropdown menu responsiveness and improve dialog handling ( #8187 )
...
* fix: 修复用户下拉框小部件菜单行点击无响应及弹框闪退
- 主题/时区/全屏/通知菜单行补充 @select 处理器,点击行任意位置即可触发
- 时区设置弹框宿主移出 DropdownMenu(showButton 模式),修复弹框随下拉框关闭而闪退
- 通知组件暴露 toggle 供下拉框调用
- 偏好设置小部件文案精简,positionMap 顺序调整
* feat: draggable-list.vue 直接复用 SelectItem,用法和 tabbar.vue 完全一致
2026-07-23 15:14:25 +08:00
金毛88
b21563a89b
feat: 顶栏与用户下拉框按钮样式统一与 tooltip 修复
...
- 修复 VbenTooltip 的 :content prop 类型错误,改用默认插槽
- 修复 VbenIconButton 的 onClick prop 支持数组合并
- VbenFullScreen 新增 tooltip prop,支持直接设置提示
- 统一顶栏与用户下拉框所有按钮样式,使用 VbenIconButton 包装
- 移除 i18n 中多余的"启用"字样(全局搜索/语言切换)
- 修复 VbenPopover PopoverTrigger 嵌套 button 导致 tooltip 不显示
Co-Authored-By: AtomCode (GLM-5.2) <noreply@atomgit.com >
2026-07-21 22:36:42 +08:00
金毛88
f840d235ef
feat: 偏好设置小部件支持位置选择与拖拽排序
...
- 顶栏各小部件按钮支持选择位置(header/user-dropdown/none),偏好设置按钮额外保留 auto/fixed 智能兜底,移动端/全屏内容模式下自动切 fixed 浮动保命,避免偏好入口死锁
- draggable-list.vue 的 listRef 未在模板绑定,Sortable 永不初始化导致小部件无法拖拽;加 ref 绑定与 data-key 让 onEnd 从 DOM 读真实新顺序
- preferences.ts 的 updatePreferences 用 defu(merge) 合并数组,对 widget.order 是 concat 语义,每次拖拽触发更新都会把当前 order 追加一次,localStorage 里膨胀到上百条;改用 mergeWithArrayOverride 整体替换,加载缓存时 sanitizeCachedArray 去重已存在的脏数据
- preferences 按钮之前在 widget.order 里因 labelMap 未登记显示成裸字符串,且 widgetChecks 缺 refresh 导致刷新按钮不按 order 渲染;统一 preferences 与其它 widget 的拖拽排序与位置 select,refresh 补进 rightSlots.widgetChecks 并补模板渲染
- 补 sortablejs 依赖、WidgetPreferences.order 类型字段、preferences-drawer.vue 的 widgetOrder 绑定
2026-07-19 21:34:11 +08:00
金毛88
0cd87c170f
feat: 顶栏按钮支持位置选择(header/user-dropdown/none)
...
为顶栏所有部件按钮添加独立的位置配置,支持在顶栏、用户下拉菜单、不显示
三种选项间切换,每个按钮可独立设置。
- 新增 7 个位置偏好字段:globalSearchButtonPosition、
themeToggleButtonPosition、languageToggleButtonPosition、
fullscreenButtonPosition、notificationButtonPosition、
refreshButtonPosition、timezoneButtonPosition
- 合并 lockScreenButtonPosition、logoutButtonPosition
- header.vue 按位置条件过滤按钮显示
- user-dropdown.vue 新增对应菜单项,支持在用户下拉菜单中显示
- 偏好设置界面仅保留位置选择器(不再需要独立的开关)
- 更新中英文国际化文案
Co-Authored-By: AtomCode (deepseek-v4-flash) <noreply@atomgit.com >
2026-07-18 22:46:31 +08:00
xingyu
04fbb7a556
chore: 升级 shadcn-vue 组件到v4最新版 ( #7972 )
...
* fix: useStore is deprecated
* chore: update deps
* feat: 升级shadcn-ui v4
* fix: workbench style
* feat: 升级shadcn-ui v4 step2
* feat: 升级shadcn-ui v4 step3
* chore: 升级shadcn v4
* fix: pagination
* fix: dark style
* fix: doc import
* feat: 增加详情组件,参考 antdv-next
* docs: descriptions docs
* docs: Browser Support
* feat: add table action
* feat: icon use vbenIcon
* fix: type error
* fix: dropdown popConfirm
* feat: 使用默认的文字交互
* feat: 优化渲染性能
2026-05-31 15:18:46 +08:00
PanFu
f813245827
feat: 偏好设置的快捷键列表追加ESC快捷键的控制(关闭当前窗口) ( #7947 )
...
* feat: 快捷键追加ESC控制,关闭当前窗口
* feat: 偏好设置中,页面切换动画的颜色看不清的问题(使用当前主题色)
* feat: 三种弹出框支持快捷键ESC动作
* feat: 代码自动格式化(3个框架改动)
* feat: 代码自动格式化(3个框架改动)
* fix: 修正locale数据获取方式
* 单元测试问题修改
* 单元测试问题修改
* fix: 解决代码评论的问题
* fix: 解决代码评论的问题
* fix: 解决代码评论的问题
* fix: 解决代码评论的问题
* 单元测试问题修改
* fix: 解决评论问题
* fix: 解决代码格式导致pnpm run lint报错的问题
---------
Co-authored-by: PanFu <panfu@zhihuaai.com >
2026-05-23 09:50:35 +08:00
PanFu
2a84b590b5
feat: 偏好设置按钮,支持在右上角用户的下拉框中展示;偏好设置中支持设置时区(多一个入口); ( #7931 )
...
* feat: 偏好设置按钮支持显示在用户下拉窗中的特性
* feat: 时区设置功能支持在偏好设置列表进行配置
* feat: 偏好设置按钮支持显示在用户下拉窗中的特性 - 完善示例代码
* feat: 时区设置功能支持在偏好设置列表进行配置
* feat: 时区设置功能支持在偏好设置列表进行配置-单元测试报错问题
* feat: 时区设置功能支持在偏好设置列表进行配置-修改代码QC问题
---------
Co-authored-by: PanFu <panfu@zhihuaai.com >
2026-05-20 17:24:53 +08:00
PanFu
769c970e08
fix: 修复三个问题:偏好配置项修改后重启不会生效;锁屏弹出框的按钮文字错误;右上角偏好设置按钮排序问题优化; ( #7930 )
...
* fix: 修正偏好设置加载缓存的偏好设置并与初始配置合并的顺序
* fix: 修正锁屏弹出框的按钮文字
* fix: 偏好设置按钮排序优化(取第三个占位的数字,若是第三个占位不是数字,则自动分配排序索引)
* fix: 修正偏好设置加载缓存的偏好设置并与初始配置合并的顺序 - 代码QC问题修改
---------
Co-authored-by: PanFu <panfu@zhihuaai.com >
2026-05-20 17:24:18 +08:00
Lin
b5dacd992f
feat: add time zone option to preference settings ( #7871 )
2026-05-03 12:16:58 +08:00
yuan.ji
244c0a5884
fix(@vben/plugins): 根据代码审查意见修复 tiptap 图片上传
...
- 提取 findPlaceholderPos 辅助函数,消除重复的 descendants 查找
- 添加 editor.isDestroyed 守卫,防止操作已销毁编辑器
- renderHTML 不输出上传状态属性,防止 blob URL 泄露到序列化 HTML
- uploadImage 命令返回 boolean,添加 Commands 类型增强,移除 as any
- 拖拽/粘贴多图时仅处理第一张并提示仅支持单图上传
- 自定义 extensions 时不传 imageUpload 给工具栏,toolbar action 加运行时守卫
2026-04-27 14:33:30 +08:00
yuan.ji
4ca2f1c6e8
feat(@vben/plugins): tiptap 支持图片上传功能
...
- 新增 imageUpload 配置项,支持自定义上传接口
- 支持文件选择、拖拽、粘贴三种上传方式
- 上传中显示 blob 预览图 + loading spinner / 进度条
- 支持 accept 和 maxSize 文件校验
- 支持 onUploadError 自定义错误处理
- 未配置 imageUpload 时保持原有 URL 插入行为不变
- 使用 NodeView 实现实时 DOM 控制的进度展示
2026-04-27 13:42:36 +08:00
Caisin
2a32715c99
feat: enable project-scoped preferences extension tabs ( #7803 )
...
* feat: enable project-scoped preferences extension tabs
Add a typed extension schema so subprojects can define extra settings,
render them in the shared preferences drawer only when configured, and
consume them in playground as a real feature demo. Extension labels now
follow locale keys instead of hardcoded app-specific strings.
Constraint: Reuse the shared preferences drawer and field blocks
Rejected: Add app-specific fields to core preferences | too tightly coupled
Rejected: Inline localized label objects | breaks existing locale-key flow
Confidence: high
Scope-risk: moderate
Reversibility: clean
Directive: Keep extension labels as locale keys rendered via $t in UI
Tested: Vitest preferences tests
Tested: Turbo typecheck for preferences, layouts, web-antd, and playground
Tested: ESLint for touched preferences and playground files
Not-tested: Manual browser interaction in playground preferences drawer
* fix: satisfy lint formatting for preferences extension demo
Adjust the playground preferences extension demo template so formatter and
Vue template lint rules agree on the rendered markup. This keeps CI green
without changing runtime behavior.
Constraint: Must preserve the existing demo behavior while fixing CI only
Rejected: Disable the Vue newline rule | would weaken shared lint guarantees
Confidence: high
Scope-risk: narrow
Reversibility: clean
Directive: Prefer computed/template structures that avoid formatter-vs-lint conflicts
Tested: pnpm run lint
Not-tested: Manual browser interaction in playground preferences extension demo
* fix: harden custom preferences validation and i18n labels
Tighten custom preferences handling so numeric extension fields respect
min, max, and step constraints. Number inputs now ignore NaN values,
and web-antd extension metadata uses locale keys instead of raw strings.
Also align tip-based hover guards in shared preference inputs/selects.
Constraint: Keep fixes scoped to verified findings only
Rejected: Broader refactor of preferences field components | not needed for these fixes
Confidence: high
Scope-risk: narrow
Reversibility: clean
Directive: Reuse the same validation path for updates and cache hydration
Tested: Vitest preferences tests
Tested: ESLint for touched preferences and widget files
Tested: Typecheck for web-antd, layouts, and core preferences
Not-tested: Manual browser interaction for all preference field variants
* fix: remove localized default from playground extension config
Drop the hardcoded Chinese default value from the playground extension
report title field and fall back to an empty string instead. This keeps
extension config locale-neutral while preserving localized labels and
placeholders through translation keys.
Constraint: Keep the fix limited to the verified localized default issue
Rejected: Compute the default from runtime locale in config | unnecessary for this finding
Confidence: high
Scope-risk: narrow
Reversibility: clean
Directive: Avoid embedding localized literals in extension default values
Tested: ESLint for playground/src/preferences.ts
Tested: Oxfmt check for playground/src/preferences.ts
Not-tested: Manual playground preferences interaction
* docs: document project-scoped preferences extension workflow
Add Chinese and English guide sections explaining how to define,
initialize, read, and update project-scoped preferences extensions.
Also document numeric field validation and point readers to the
playground demo for a complete example.
Constraint: Keep this docs-only and aligned with the shipped API
Rejected: Update only Chinese docs | would leave English docs inconsistent
Confidence: high
Scope-risk: narrow
Reversibility: clean
Directive: Keep zh/en examples and playground demo paths synchronized
Tested: git diff --check; pnpm build:docs
Not-tested: Manual browser review of the rendered docs site
* fix: harden custom preferences defaults and baselines
Use a locale-neutral default for the web-antd report title.
Also stop preference getters from exposing mutable baseline
or extension schema objects, and add a regression test for
external mutation attempts.
Constraint: Keep behavior compatible with the shipped preferences API
Rejected: Return raw refs with readonly typing only | callers could still mutate internals
Confidence: high
Scope-risk: narrow
Reversibility: clean
Directive: Keep defensive copies for baseline and schema getters unless storage semantics change
Tested: eslint, oxlint, targeted vitest, filtered typecheck, git diff --check
Not-tested: Full monorepo typecheck and test suite
* test: relax custom preference cache key matching
Avoid coupling the custom-number cache test to one exact
localStorage key string. Match the intended cache lookup
more loosely so the test still verifies filtering behavior
without depending on the full namespaced cache key.
Constraint: Focus the test on cache filtering behavior
Rejected: Assert one exact key | brittle with namespace changes
Confidence: high
Scope-risk: narrow
Reversibility: clean
Directive: Prefer behavior tests over literal storage keys
Tested: targeted vitest, eslint, git diff --check
Not-tested: Full monorepo test suite
---------
Co-authored-by: caisin <caisin@caisins-Mac-mini.local >
2026-04-13 17:52:17 +08:00
xingyu4j
5eca357a5c
feat(@vben/plugins): add tiptap rich text editor
2026-04-13 17:52:13 +08:00
Anonymouscen
147b50ec45
chore: 修复名称错误问题,帐户改为账户 ( #7735 )
2026-03-29 14:17:00 +08:00
han
b8a0199cde
feat(preferences): add toggle for copy preferences button ( #7594 )
...
Co-authored-by: hl <hl@nmcsoft.com >
2026-03-02 15:30:38 +08:00
zouawen
8e71261d49
fix: 侧边栏菜单拖拽功能在设置内增加开关
2026-02-28 11:19:24 +08:00
zouawen
32379ba4b7
fix: 双列菜单模式下新增深色侧边栏和深色侧边栏子栏 ( #7542 )
...
* fix: 双列菜单模式下新增深色侧边栏和深色侧边栏子栏
* fix: 修复报错 config.test.ts.snap
* fix: 修复lint报错
* fix: 修复侧边栏菜单文本内容溢出问题
* fix: 修复lint报错
2026-02-11 16:08:32 +08:00
zhongming4762
7a2b916387
perf: optimize the closing jump logic of tabs
...
* 依据tab访问历史回退上一个tab,原逻辑是返回一下个 或 上一个
* 支持在配置中开启或关闭
2026-02-08 20:36:16 +08:00
programmer
6a9012e5e4
chore: 给个人中心的2个按钮加上 i18n ( #7138 )
...
* fix: 个人中心按钮i18n
* fix: eslint format
* fix: 调整label宽度让英文显示在一行
* chore: 调整label小点
* fix: import
---------
Co-authored-by: Jin Mao <50581550+jinmao88@users.noreply.github.com >
2026-01-26 16:12:09 +08:00
JyQAQ
59aabd956d
Perf: Optimization of cropping component result acquisition & optimization of cropping frame prompts ( #7111 )
...
* perf(cropper): enhance image cropping functionality and add output type support
* perf(cropper): enhance image cropping functionality and add output type support
2026-01-19 14:18:36 +08:00
JyQAQ
67da9417a8
feat(upload prop:crop,aspectRatio): from Upload component accept prop… ( #7095 )
...
* feat(upload prop:crop,aspectRatio): from Upload component accept prop crop,aspectRatio
* feat(upload prop:crop,aspectRatio): from Upload component accept prop crop,aspectRatio
* feat(upload prop:crop,aspectRatio): from Upload component accept prop crop,aspectRatio
* feat(upload prop:crop,aspectRatio): from Upload component accept prop crop,aspectRatio
2026-01-14 15:38:05 +08:00
JyQAQ
81a61558cb
feat(upload prop:maxSize): from Upload component accept prop maxSize (AI prompt fixed) ( #7059 )
...
* feat(upload prop:maxSize): from component accept prop maxSize
* feat(upload prop:maxSize): from component accept prop maxSize
* feat(upload prop:maxSize): from component accept prop maxSize
* feat(upload prop:maxSize): from component accept prop maxSize
2026-01-03 13:19:40 +08:00
米山
24b6e7a835
feat: add global font size adjustment
2025-11-12 17:38:41 +08:00
zhongming4762
0a8339a405
feat: increase support for multiple time zones
2025-10-22 19:52:01 +08:00
zouawen
59097e2466
chore: 新增是否开启首选项导航栏(外观、布局、快捷键、通用)吸顶效果,调整部分样式 ( #6804 )
2025-10-14 06:55:11 +08:00
zouawen
2ce161e585
feat: 1、新增水印文案自定义功能;2、input-item输入框组件新增清除功能(可用于快捷清除水印文案);3、偏好设置、主题切换、语言选择、是否全屏按钮新增动画效果 ( #6800 )
...
* feature: 新增水印文案自定义功能;
* chore: 偏好设置、主题切换、语言选择、是否全屏按钮新增动画效果
2025-10-07 06:15:41 +08:00
zouawen
33306a5aff
chore: 更换其他登录方式图标为彩色图标,新增其他登录方式tooltip文字提示 ( #6799 )
2025-10-06 06:56:54 +08:00
zhongming4762
06ffdf164a
feat: add dingding login
2025-07-25 22:02:55 +08:00
chenweiran
8ccd01ade5
feat: 增加基于图片拼图切片平移的验证码
2025-07-04 10:23:47 +08:00
Netfan
0517a7014f
fix: add missing translation for preferences drawer ( #6094 )
2025-05-01 20:08:44 +08:00
Netfan
0a9fc4e02d
fix: title of search button in vxeTable toolbar ( #6046 )
...
* 修改vxeTable工具栏里的搜索按钮的提示文案
2025-04-26 01:08:41 +08:00
4cdb8351d4
fix: 一些基本功能
2025-03-07 08:18:45 +08:00
Netfan
5e421ce607
chore: demo page menu management ( #5619 )
...
* 添加菜单管理演示页面
2025-02-27 01:22:25 +08:00
Netfan
d33261d0c2
chore: demo page for system/department ( #5611 )
...
* feat: department management demo
* perf: department page improve
* feat: demo api middleware
* fix: add losing import
2025-02-25 19:47:45 +08:00
Netfan
6cba181fad
feat: new component jsonViewer ( #5544 )
...
* 添加新组件JsonViewer用于展示JSON结构数据
2025-02-16 22:57:00 +08:00
Netfan
5262233312
feat: tabbar support max count limit ( #5490 )
...
* 标签栏支持限制打开的最大数量
2025-02-06 19:33:10 +08:00
Netfan
b8bffd884c
feat: allow close tab when mouse middle button click ( #5347 )
...
* 偏好设置增加鼠标中键关闭标签页的设置
2025-01-10 20:52:31 +08:00
Vben
081d2aed23
perf: format code with better style ( #5283 )
2025-01-01 11:39:49 +08:00
Netfan
2135cb8ece
feat: new layout sidebar nav with full header ( #5270 )
2024-12-31 00:30:15 +08:00
Netfan
ff8d5ca351
feat: header mixed layout ( #5263 )
...
* feat: new layout header-mixed
* fix: header-mixed layout update
* feat: layout preference update
* fix: extra menus follow layout setting
2024-12-30 14:01:17 +08:00
Netfan
ec2c6eff6f
feat: header menu align support ( #5256 )
...
* feat: header menu align support
* fix: typo
2024-12-28 16:16:48 +08:00
Netfan
2efb5b71c3
feat: auto activate subMenu on select root menu ( #5147 )
...
* feat: auto activate subMenu on click root menu
* fix: prop name fixed
* chore: test and docs update
2024-12-16 02:57:50 +08:00
Netfan
7581fb381f
fix: pinInput value synchronous update ( #5142 )
2024-12-15 14:26:42 +08:00
Netfan
7fbf7b189a
feat: tabbar support mouse wheel vertical ( #5129 )
...
* feat: tabbar support mouse wheel
* docs: add tabbar wheelable tips
* chore: resolve vitest test
2024-12-13 14:45:06 +08:00
Netfan
ed465d2b5b
feat: table search form visible control ( #5121 )
...
* feat: table search form visible control
* chore: fix docs and demo
* chore: type error fixed
2024-12-12 22:28:03 +08:00
Netfan
e23486dbc6
feat: form component IconPicker ( #5005 )
2024-12-04 21:42:21 +08:00
Vben
0df8c5c02c
refactor: reconstruct language files into multi-file structures ( #4683 )
...
* refactor: reconstruct language files into multi-file structures
* chore: typo
2024-10-19 14:28:21 +08:00