{"_id":"@admin-core/form-vue","_rev":"3-a09f03d748afe25ea4cf4a5664dc1378","name":"@admin-core/form-vue","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@admin-core/form-vue","version":"1.0.0","keywords":["admin","form","vue","adapter"],"author":"","license":"MIT","_id":"@admin-core/form-vue@1.0.0","maintainers":[{"name":"jackbo_vip","email":"jackbovip@163.com"}],"dist":{"shasum":"1fc7d35aad857ff993015dc02e3a862e3d52285b","tarball":"https://registry.npmjs.org/@admin-core/form-vue/-/form-vue-1.0.0.tgz","fileCount":99,"integrity":"sha512-ZqW2Brbr/3peEoPDFHHqB8c+Shwi6HkD05ikdzxzad404RkVX02wF6gFAebqhMR3R+mEchkPwyxKPTV6uj3vqA==","signatures":[{"sig":"MEYCIQDaXA/LY5XigxT8bFVAdsmphW8zTqogO45YOxR23KnbNAIhAPYLk35P1DAqtbOyPRX7mLw7hj8+qgFwDbe/VNW96xqi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12401366},"main":"./dist/index.cjs","type":"module","_from":"file:admin-core-form-vue-1.0.0.tgz","types":"./dist/index.d.ts","unpkg":"./dist/index.global.js","module":"./dist/index.js","browser":"./dist/index.global.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.cjs"}},"./styles":"./dist/form-vue.css","./style.css":"./dist/form-vue.css"},"scripts":{"dev":"vite build --watch","lint":"eslint -c ../../../internal/build-config/configs/eslint/vue-disable-import-order.config.js src --max-warnings=0","test":"vitest -c ../../../internal/build-config/configs/vitest/dom.config.ts","build":"vite build && vite build --config vite.cdn.config.ts --mode production && vite build --config vite.cdn.config.ts --mode development","test:run":"vitest -c ../../../internal/build-config/configs/vitest/dom.config.ts run","typecheck":"vue-tsc --noEmit"},"_npmUser":{"name":"jackbo_vip","email":"jackbovip@163.com"},"jsdelivr":"./dist/index.global.js","_resolved":"/private/var/folders/3p/zv0xm6450s12v1tvvxvxwr_80000gn/T/1fb0235ce48032fef3ccc2c219bd67f4/admin-core-form-vue-1.0.0.tgz","_integrity":"sha512-ZqW2Brbr/3peEoPDFHHqB8c+Shwi6HkD05ikdzxzad404RkVX02wF6gFAebqhMR3R+mEchkPwyxKPTV6uj3vqA==","repository":{"url":"","type":"git","directory":"packages/form/vue"},"_npmVersion":"11.6.2","description":"Vue 3 表单适配包，仅负责 UI 渲染与组件映射","directories":{},"sideEffects":["*.css"],"_nodeVersion":"24.13.0","dependencies":{"@admin-core/form-core":"1.0.0","@admin-core/shared-vue":"1.0.0","@admin-core/form-shared":"1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.27","vite":"^7.3.1","jsdom":"^26.1.0","eslint":"^9.39.2","vitest":"^4.0.17","vue-tsc":"^3.2.3","typescript":"^5.9.3","@types/node":"^25.0.9","@vue/test-utils":"^2.4.6","vite-plugin-dts":"^4.5.4","@vitejs/plugin-vue":"^6.0.3","@admin-core/tsconfig":"1.0.0"},"peerDependencies":{"vue":">=3.3.0"},"bundleDependencies":["@admin-core/form-core","@admin-core/form-shared","@admin-core/shared-vue"],"_npmOperationalInternal":{"tmp":"tmp/form-vue_1.0.0_1772271789394_0.7952126060758766","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@admin-core/form-vue","version":"1.0.1","keywords":["admin","form","vue","adapter"],"author":"","license":"MIT","_id":"@admin-core/form-vue@1.0.1","maintainers":[{"name":"jackbo_vip","email":"jackbovip@163.com"}],"dist":{"shasum":"bb1c5813da90e13aef9876b218bf74a902e12b3f","tarball":"https://registry.npmjs.org/@admin-core/form-vue/-/form-vue-1.0.1.tgz","fileCount":99,"integrity":"sha512-1wtnBGwWUHk1QZhgcJhjv/XUNVdMEs5k8dKqb4xPpVZDl6DPog4ZvAYk4dWD0nk6GQSHkQL3jpWG3lxEZBUZFw==","signatures":[{"sig":"MEUCIEWgM5wbhsSyEPk3Ev12LTqIgeijkO9yvO5DxxT9NOstAiEAhCJqkzYIfOmtDVo56s77pjhc/yvRCgGWFKKcoyR+Cv4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12401366},"main":"./dist/index.cjs","type":"module","_from":"file:admin-core-form-vue-1.0.1.tgz","types":"./dist/index.d.ts","unpkg":"./dist/index.global.js","module":"./dist/index.js","browser":"./dist/index.global.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.cjs"}},"./styles":"./dist/form-vue.css","./style.css":"./dist/form-vue.css"},"scripts":{"dev":"vite build --watch","lint":"eslint -c ../../../internal/build-config/configs/eslint/vue-disable-import-order.config.js src --max-warnings=0","test":"vitest -c ../../../internal/build-config/configs/vitest/dom.config.ts","build":"vite build && vite build --config vite.cdn.config.ts --mode production && vite build --config vite.cdn.config.ts --mode development","test:run":"vitest -c ../../../internal/build-config/configs/vitest/dom.config.ts run","typecheck":"vue-tsc --noEmit"},"_npmUser":{"name":"jackbo_vip","email":"jackbovip@163.com"},"jsdelivr":"./dist/index.global.js","_resolved":"/private/var/folders/3p/zv0xm6450s12v1tvvxvxwr_80000gn/T/6a8a01f94a7561800d1de7dfba5bd756/admin-core-form-vue-1.0.1.tgz","_integrity":"sha512-1wtnBGwWUHk1QZhgcJhjv/XUNVdMEs5k8dKqb4xPpVZDl6DPog4ZvAYk4dWD0nk6GQSHkQL3jpWG3lxEZBUZFw==","repository":{"url":"","type":"git","directory":"packages/form/vue"},"_npmVersion":"11.6.2","description":"Vue 3 表单适配包，仅负责 UI 渲染与组件映射","directories":{},"sideEffects":["*.css"],"_nodeVersion":"24.13.0","dependencies":{"@admin-core/form-core":"1.0.1","@admin-core/shared-vue":"1.0.1","@admin-core/form-shared":"1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.27","vite":"^7.3.1","jsdom":"^26.1.0","eslint":"^9.39.2","vitest":"^4.0.17","vue-tsc":"^3.2.3","typescript":"^5.9.3","@types/node":"^25.0.9","@vue/test-utils":"^2.4.6","vite-plugin-dts":"^4.5.4","@vitejs/plugin-vue":"^6.0.3","@admin-core/tsconfig":"1.0.1"},"peerDependencies":{"vue":">=3.3.0"},"bundleDependencies":["@admin-core/form-core","@admin-core/form-shared","@admin-core/shared-vue"],"_npmOperationalInternal":{"tmp":"tmp/form-vue_1.0.1_1772288355981_0.6590359394657861","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@admin-core/form-vue","version":"1.0.2","description":"Vue 3 表单适配包，仅负责 UI 渲染与组件映射","type":"module","sideEffects":["*.css"],"main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","browser":"./dist/index.global.js","unpkg":"./dist/index.global.js","jsdelivr":"./dist/index.global.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.cjs"}},"./styles":"./dist/form-vue.css","./style.css":"./dist/form-vue.css"},"dependencies":{"@admin-core/form-core":"1.0.2","@admin-core/form-shared":"1.0.2","@admin-core/shared-vue":"1.0.1"},"devDependencies":{"@admin-core/tsconfig":"1.0.1","@types/node":"^25.0.9","@vitejs/plugin-vue":"^6.0.3","@vue/test-utils":"^2.4.6","eslint":"^9.39.2","jsdom":"^26.1.0","typescript":"^5.9.3","vite":"^7.3.1","vite-plugin-dts":"^4.5.4","vitest":"^4.0.17","vue":"^3.5.27","vue-tsc":"^3.2.3"},"peerDependencies":{"vue":">=3.3.0"},"keywords":["admin","form","vue","adapter"],"author":"","license":"MIT","repository":{"type":"git","url":"","directory":"packages/form/vue"},"publishConfig":{"access":"public"},"scripts":{"build":"vite build && vite build --config vite.cdn.config.ts --mode production && vite build --config vite.cdn.config.ts --mode development","dev":"vite build --watch","test":"vitest -c ../../../internal/build-config/configs/vitest/dom.config.ts","test:run":"vitest -c ../../../internal/build-config/configs/vitest/dom.config.ts run","lint":"eslint -c ../../../internal/build-config/configs/eslint/vue-disable-import-order.config.js src --max-warnings=0","typecheck":"vue-tsc --noEmit"},"_id":"@admin-core/form-vue@1.0.2","bundleDependencies":["@admin-core/form-core","@admin-core/form-shared","@admin-core/shared-vue"],"_integrity":"sha512-VCu2R2IUanKyacXSGBHWj+JEkcRKKjbWfhaAd3rh7VwSEgf8vrHXmD+KrmSIW/alTe5eY8yCYtfiN70UFbLvCw==","_resolved":"/private/var/folders/3p/zv0xm6450s12v1tvvxvxwr_80000gn/T/115a4f209757601379032f579f3ac036/admin-core-form-vue-1.0.2.tgz","_from":"file:admin-core-form-vue-1.0.2.tgz","_nodeVersion":"24.13.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-VCu2R2IUanKyacXSGBHWj+JEkcRKKjbWfhaAd3rh7VwSEgf8vrHXmD+KrmSIW/alTe5eY8yCYtfiN70UFbLvCw==","shasum":"78d630fbb8bee2751efbf3a72afcd98aa2bfad48","tarball":"https://registry.npmjs.org/@admin-core/form-vue/-/form-vue-1.0.2.tgz","fileCount":99,"unpackedSize":12430018,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD3WEsAaWH1JJ0xewl3GJGwTQLNr2NWpqg/8L19e9SDDAIhAKTJOUkYlgsWABvvgApF7nSI6xOykHBnwhMGjyLes2lD"}]},"_npmUser":{"name":"jackbo_vip","email":"jackbovip@163.com"},"directories":{},"maintainers":[{"name":"jackbo_vip","email":"jackbovip@163.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/form-vue_1.0.2_1772358963987_0.12051826015653666"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-28T09:43:09.295Z","modified":"2026-03-01T09:56:04.366Z","1.0.0":"2026-02-28T09:43:09.618Z","1.0.1":"2026-02-28T14:19:16.207Z","1.0.2":"2026-03-01T09:56:04.237Z"},"license":"MIT","keywords":["admin","form","vue","adapter"],"repository":{"type":"git","url":"","directory":"packages/form/vue"},"description":"Vue 3 表单适配包，仅负责 UI 渲染与组件映射","maintainers":[{"name":"jackbo_vip","email":"jackbovip@163.com"}],"readme":"# @admin-core/form-vue\n\n简体中文 | [English](./README.en.md)\n\n`@admin-core/form-core` 的 Vue 3 UI 适配层。Vue 包只负责渲染和事件/插槽适配，业务逻辑全部在 core。\n\n## 安装\n\n```bash\npnpm add @admin-core/form-vue\n```\n\n\n### CDN（生产/开发）\n\n```html\n<!-- jsDelivr（推荐） -->\n<script src=\"https://cdn.jsdelivr.net/npm/@admin-core/form-vue/dist/index.global.js\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/@admin-core/form-vue/dist/index.global.dev.js\"></script>\n\n<!-- unpkg -->\n<script src=\"https://unpkg.com/@admin-core/form-vue/dist/index.global.js\"></script>\n<script src=\"https://unpkg.com/@admin-core/form-vue/dist/index.global.dev.js\"></script>\n```\n\n## 导出 API（完整）\n\n## 组件与 Hooks\n\n| API | 签名 / 说明 |\n| --- | --- |\n| `AdminForm` | Vue 组件，渲染普通表单。 |\n| `AdminSearchForm` | Vue 查询表单组件（内置 `queryMode=true`）。 |\n| `AdminFormSubmitPage` | Vue 组件，渲染抽屉/弹窗分步提交页。 |\n| `useAdminForm(options)` | `options: AdminFormProps`，返回 `[Form, formApi]`。 |\n| `useAdminFormSubmitPage(options)` | `options: UseAdminFormSubmitPageOptions`，返回 `[FormSubmitPage, formApi, submitController]`。 |\n\n`useAdminFormSubmitPage` 的 `options` 本质上等于：\n\n- `AdminFormSubmitPageVueProps` 去掉 `formApi`、`open`\n- 再加上 `open?: boolean`\n\n## 适配器 API\n\n| API | 说明 |\n| --- | --- |\n| `setupAdminForm(options)` | 跨框架统一入口（推荐）。 |\n| `setupAdminFormVue(options)` | Vue 入口，设置 `library` / `libraries`。 |\n| `registerFormComponents(components, options?)` | 快速注册语义组件映射。 |\n| `getFormAdapterRegistry()` | 统一 registry 入口。 |\n| `getVueFormAdapterRegistry()` | Vue 命名入口。 |\n\n## Core 重导出 API\n\n可直接从 `@admin-core/form-vue` 使用：\n\n- `createFormApi`\n- `createRangeRule`\n- `setupAdminFormCore`\n- `registerFormRules`\n- `z`\n- core 关键类型：`AdminFormApi`、`AdminFormProps`、`AdminFormSchema`、`AdminFormCommonConfig`、`FormAdapterV1`、`AdapterCapabilities` 等\n\n## `AdminForm` Props（核心）\n\n`AdminForm` 在 `AdminFormProps` 基础上扩展：\n\n- `formApi?: AdminFormApi`\n- `values?: Record<string, any>`\n- `onValuesChange?: (values) => void`\n- `visibleFieldNames?: string[]`\n\nVue 场景还支持：\n\n- `v-model:values`\n- `@update:values`\n\n常用 `AdminFormProps` 字段：\n\n- `schema?: AdminFormSchema[]`\n- `commonConfig?: AdminFormCommonConfig`\n- `layout?: 'horizontal' | 'inline' | 'vertical'`\n- `queryMode?: boolean`（查询布局模式）\n- `gridColumns?: number`\n- `showDefaultActions?: boolean`\n- `showCollapseButton?: boolean`\n- `submitOnChange?: boolean`\n- `handleSubmit?` / `handleReset?` / `handleValuesChange?`\n\n常用 `AdminFormCommonConfig` 字段：\n\n- `labelAlign?: 'left' | 'right'`（默认 `right`）\n- `labelWidth?: number`\n- `hideLabel?: boolean`\n- `hideRequiredMark?: boolean`\n- `requiredMarkFollowTheme?: boolean`（默认 `false`，`true` 时必填 `*`、必填校验错误文案与必填字段错误态颜色均跟随主题危险色）\n\n## `AdminSearchForm`（查询模式快捷组件）\n\n默认注入：\n\n- `queryMode: true`\n- `gridColumns: 3`\n- `collapsedRows: 1`\n- `collapsed: true`\n- `showDefaultActions: true`\n- `showCollapseButton: true`（仅有溢出项时才显示“展开/收起”）\n- `submitButtonOptions.content`：跟随当前 locale（`zh-CN` 为 `查询`，`en-US` 为 `Search`，可覆盖）\n\n## `AdminFormSubmitPage` Props（核心）\n\n在表单 props 基础上，新增分步页字段：\n\n- `open: boolean`\n- `steps: AdminFormStepSchema[]`\n- `mode?: 'modal' | 'drawer'`\n- `drawerPlacement?: 'left' | 'right'`\n- `rowColumns?: number`\n- `animation?: 'fade' | 'slide'`\n- `stepDurationMs?: number`\n- `destroyOnClose?: boolean`\n- `resetOnClose?: boolean`（默认 `true`）\n- `resetOnSubmit?: boolean`（默认 `true`）\n- `onOpenChange?: (open: boolean) => void`\n- `onStepChange?: (payload) => void`\n- `onSubmit?: (values, context) => MaybeAsync<void>`\n\n## `submitController` API\n\n- `open()` / `close()` / `toggle(open?)` / `setOpen(open)`\n- `getOpen()`\n- `getFormApi()`\n- `getStep()` / `getTotalSteps()` / `goToStep(step)`\n- `next()` / `prev()`\n\n## 自带 UI 与第三方库映射\n\n- 内置 native 组件与样式，安装后可直接用 `input/select/switch` 等语义组件。\n- 需要接入第三方库时，通过 `setupAdminFormVue` 映射。\n- 语义组件解析顺序：`字段显式组件 -> 当前激活库 -> native 回退`。\n\n## 开箱即用（数据驱动）\n\n```vue\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { AdminForm } from '@admin-core/form-vue';\n\nconst values = ref({ name: '' });\n</script>\n\n<template>\n  <AdminForm\n    v-model:values=\"values\"\n    :schema=\"[{ component: 'input', fieldName: 'name', label: '名称' }]\"\n  />\n</template>\n```\n\n## 编辑场景（回填）\n\n```ts\nconst [SubmitPage, formApi, submitController] = useAdminFormSubmitPage({\n  steps,\n  mode: 'modal',\n  resetOnClose: true,\n  resetOnSubmit: true,\n});\n\nasync function openEdit(row: any) {\n  await formApi.resetForm({\n    name: row.name,\n    email: row.email,\n  });\n  await submitController.goToStep(0);\n  submitController.open();\n}\n```\n","readmeFilename":"README.md"}