@schemx/vue 1.0.0-next.1 → 1.0.0-next.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +37 -7
- package/dist/analyze.html +1 -1
- package/dist/components/Button/index.d.ts +3 -0
- package/dist/components/Button/index.d.ts.map +1 -0
- package/dist/components/Button/types.d.ts +21 -0
- package/dist/components/Button/types.d.ts.map +1 -0
- package/dist/components/FormItem/index.d.ts +1 -1
- package/dist/components/FormItem/index.d.ts.map +1 -1
- package/dist/config/appConfig.d.ts.map +1 -1
- package/dist/formBridge.d.ts +188 -0
- package/dist/formBridge.d.ts.map +1 -0
- package/dist/hooks/index.d.ts +4 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/provideFormContext.d.ts +4 -3
- package/dist/hooks/provideFormContext.d.ts.map +1 -1
- package/dist/hooks/useField.d.ts +4 -30
- package/dist/hooks/useField.d.ts.map +1 -1
- package/dist/hooks/useForm.d.ts +3 -2
- package/dist/hooks/useForm.d.ts.map +1 -1
- package/dist/hooks/useFormSelector.d.ts +38 -0
- package/dist/hooks/useFormSelector.d.ts.map +1 -0
- package/dist/hooks/useViewSchemas.d.ts +23 -3
- package/dist/hooks/useViewSchemas.d.ts.map +1 -1
- package/dist/hooks/useWatch.d.ts.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +604 -107
- package/dist/index.mjs.map +1 -1
- package/dist/style.css +1 -1
- package/dist/types/field.d.ts +1 -1
- package/dist/types/form.d.ts +33 -1
- package/dist/types/form.d.ts.map +1 -1
- package/package.json +3 -3
package/dist/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{--schemx-primary-color: #2f6bff;--schemx-primary-color-light: #eaf2ff;--schemx-text-color: #323233;--schemx-text-color-secondary: #666666;--schemx-text-color-placeholder: #c8c9cc;--schemx-readonly-color: #969799;--schemx-disabled-color: #c8c9cc;--schemx-disabled-opacity: .6;--schemx-background-color: #ffffff;--schemx-background-color-light: #f3f4f6;--schemx-border-color: #ebedf0;--schemx-danger-color: #ee0a24;--schemx-success-color: #07c160;--schemx-warning-color: #ff976a;--schemx-padding-base: 4px;--schemx-padding-xs: 8px;--schemx-padding-sm: 12px;--schemx-padding-md: 16px;--schemx-padding-lg: 24px;--schemx-font-size-xs: 10px;--schemx-font-size-sm: 12px;--schemx-font-size-md: 14px;--schemx-font-size-lg: 16px;--schemx-border-radius-xs: 2px;--schemx-border-radius-sm: 4px;--schemx-border-radius-md: 8px;--schemx-border-radius-lg: 12px;--schemx-form-padding-bottom: 15px;--schemx-schemas-padding-inline: 6px;--schemx-item-gap: 16px;--schemx-item-line-height: 1.6;--schemx-item-error-line-height: 1.5714285714285714;--schemx-item-label-color: #666666;--schemx-item-label-top-gap: 4px;--schemx-item-content-padding-inline: 6px;--schemx-item-required-gap: 2px;--schemx-item-error-gap: 6px;--schemx-content-align: right;--schemx-error-align: right;--schemx-group-arrow-size: 5px;--schemx-group-arrow-duration: .2s}.schemx-item-wrapper{position:relative;background-color:var(--schemx-background-color)}.schemx-item-wrapper--first{border-top-left-radius:var(--schemx-border-radius-md);border-top-right-radius:var(--schemx-border-radius-md)}.schemx-item-wrapper--last{border-bottom-left-radius:var(--schemx-border-radius-md);border-bottom-right-radius:var(--schemx-border-radius-md)
|
|
1
|
+
:root{--schemx-primary-color: #2f6bff;--schemx-primary-color-light: #eaf2ff;--schemx-text-color: #323233;--schemx-text-color-secondary: #666666;--schemx-text-color-placeholder: #c8c9cc;--schemx-readonly-color: #969799;--schemx-disabled-color: #c8c9cc;--schemx-disabled-opacity: .6;--schemx-background-color: #ffffff;--schemx-background-color-light: #f3f4f6;--schemx-border-color: #ebedf0;--schemx-danger-color: #ee0a24;--schemx-success-color: #07c160;--schemx-warning-color: #ff976a;--schemx-padding-base: 4px;--schemx-padding-xs: 8px;--schemx-padding-sm: 12px;--schemx-padding-md: 16px;--schemx-padding-lg: 24px;--schemx-font-size-xs: 10px;--schemx-font-size-sm: 12px;--schemx-font-size-md: 14px;--schemx-font-size-lg: 16px;--schemx-border-radius-xs: 2px;--schemx-border-radius-sm: 4px;--schemx-border-radius-md: 8px;--schemx-border-radius-lg: 12px;--schemx-form-padding-bottom: 15px;--schemx-schemas-padding-inline: 6px;--schemx-item-gap: 16px;--schemx-item-line-height: 1.6;--schemx-item-error-line-height: 1.5714285714285714;--schemx-item-label-color: #666666;--schemx-item-label-top-gap: 4px;--schemx-item-content-padding-inline: 6px;--schemx-item-required-gap: 2px;--schemx-item-error-gap: 6px;--schemx-content-align: right;--schemx-error-align: right;--schemx-group-arrow-size: 5px;--schemx-group-arrow-duration: .2s}.schemx-item-wrapper{position:relative;background-color:var(--schemx-background-color)}.schemx-item-wrapper--first{border-top-left-radius:var(--schemx-border-radius-md);border-top-right-radius:var(--schemx-border-radius-md)}.schemx-item-wrapper--last{border-bottom-left-radius:var(--schemx-border-radius-md);border-bottom-right-radius:var(--schemx-border-radius-md)}.is-disabled{opacity:.65}.is-readonly{opacity:1}.schemx-item{display:flex;align-items:flex-start;justify-content:space-between;padding-inline:var(--schemx-padding-md);padding-block:var(--schemx-padding-md);line-height:var(--schemx-item-line-height);gap:var(--schemx-item-gap)}.schemx-item:after{position:absolute;box-sizing:border-box;content:" ";pointer-events:none;right:var(--schemx-padding-md);bottom:0;left:var(--schemx-padding-md);border-bottom:1px solid var(--schemx-border-color);transform:scaleY(.5)}.schemx-item-wrapper--last .schemx-item:after{display:none}.schemx-item--label-left{flex-direction:row}.schemx-item--label-right{flex-direction:row-reverse}.schemx-item--label-right .schemx-item__label{margin-right:0;margin-left:var(--schemx-padding-xs)}.schemx-item--label-top{flex-direction:column}.schemx-item--label-top .schemx-item__label{margin-right:0;margin-bottom:var(--schemx-item-label-top-gap);width:auto}.schemx-item__label{position:relative;display:flex;align-items:center;flex-shrink:0;color:var(--schemx-item-label-color);font-size:var(--schemx-font-size-md);margin-right:var(--schemx-padding-xs);line-height:var(--schemx-item-line-height)}.schemx-item__required{color:var(--schemx-danger-color);margin-right:var(--schemx-item-required-gap);position:absolute;top:2px;left:-8px}.schemx-item__content{flex:1;min-width:0;max-width:70%;padding:0 var(--schemx-item-content-padding-inline)}.schemx-item__control{text-align:var(--schemx-content-align)}.schemx-item__control .schemx-renderer{width:100%}.schemx-item__error{color:var(--schemx-danger-color);font-size:var(--schemx-font-size-sm);text-align:var(--schemx-error-align, right);line-height:var(--schemx-item-error-line-height);margin-top:var(--schemx-item-error-gap)}.schemx-item--label-top>.schemx-item__content{box-sizing:border-box;width:100%;max-width:none}.schemx-group{margin-bottom:var(--schemx-padding-sm);background-color:var(--schemx-background-color);padding:var(--schemx-padding-base) var(--schemx-padding-md);border-radius:var(--schemx-border-radius-md)}.schemx-group__header{display:flex;align-items:center;justify-content:space-between;padding-block:var(--schemx-padding-sm);-webkit-user-select:none;user-select:none}.schemx-group__header--clickable{cursor:pointer}.schemx-group__title{font-size:var(--schemx-font-size-lg);font-weight:500;color:var(--schemx-text-color)}.schemx-group__arrow{display:inline-block;width:0;height:0;border-left:var(--schemx-group-arrow-size) solid transparent;border-right:var(--schemx-group-arrow-size) solid transparent;border-bottom:var(--schemx-group-arrow-size) solid var(--schemx-text-color-secondary);transition:transform var(--schemx-group-arrow-duration) ease}.schemx-group__arrow--down{transform:rotate(180deg)}.schemx-group__body>.schemx-item-wrapper:last-child .schemx-item:after{display:none}.schemx-group__body>.schemx-item-wrapper>.schemx-item{padding-inline:var(--schemx-padding-xs)}.schemx{box-sizing:border-box;padding-bottom:var(--schemx-form-padding-bottom)}.schemx-actions{display:flex;align-items:center;justify-content:flex-end;gap:var(--schemx-padding-sm);padding:var(--schemx-padding-md) var(--schemx-schemas-padding-inline) 0}.schemx-schemas{background-color:var(--schemx-background-color);padding:var(--schemx-padding-md) var(--schemx-schemas-padding-inline);border-radius:var(--schemx-border-radius-lg)}.schemx-schemas-title{display:flex;align-items:center;padding-left:var(--schemx-padding-md);padding-bottom:var(--schemx-padding-xs)}.schemx-schemas-title-icon{margin-right:var(--schemx-padding-xs)}.schemx-schemas-title-label{font-size:var(--schemx-font-size-md);color:var(--schemx-text-color)}.schemx-renderer-readonly{color:var(--schemx-readonly-color);cursor:default}.schemx-button{box-sizing:content-box;flex:1;display:inline-flex;align-items:center;justify-content:center;gap:var(--schemx-padding-xs);min-width:72px;height:24px;padding:var(--schemx-padding-xs) var(--schemx-padding-md);border:1px solid var(--schemx-border-color);border-radius:var(--schemx-border-radius-sm);background:var(--schemx-background-color);color:var(--schemx-text-color);cursor:pointer;transition:border-color .15s ease,background-color .15s ease,color .15s ease,transform .1s ease}.schemx-button:not(:disabled):hover{opacity:.8}.schemx-button:not(:disabled):active{transform:scale(.98)}.schemx-button--small{min-width:56px;height:20px;padding:var(--schemx-padding-base) var(--schemx-padding-sm);font-size:var(--schemx-font-size-sm)}.schemx-button--large{min-width:88px;height:28px;padding:var(--schemx-padding-sm) var(--schemx-padding-lg);font-size:var(--schemx-font-size-lg)}.schemx-button__loading{display:inline-block;border-radius:50%;vertical-align:-.15em;animation:schemx-button-loading .8s linear infinite}.schemx-actions-button--submit{border-color:var(--schemx-primary-color);background:var(--schemx-primary-color);color:#fff}.schemx-actions-button--submit:not(:disabled):hover{filter:brightness(.92);color:#fff}.schemx-button:disabled{cursor:not-allowed;opacity:var(--schemx-disabled-opacity)}@keyframes schemx-button-loading{to{transform:rotate(360deg)}}
|
package/dist/types/field.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ export interface FieldInstance<TValues extends Values = Values> extends SchemxFi
|
|
|
15
15
|
*/
|
|
16
16
|
readonly name: NamePath<TValues>;
|
|
17
17
|
/**
|
|
18
|
-
* 当前字段值(Vue shallowRef
|
|
18
|
+
* 当前字段值(Vue shallowRef,由共享 Field Bridge 驱动)。
|
|
19
19
|
*/
|
|
20
20
|
value: Ref<FieldValue<TValues, NamePath<TValues>> | undefined>;
|
|
21
21
|
/**
|
package/dist/types/form.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { StyleValue } from 'vue';
|
|
2
2
|
import { DefinedFieldValue, FormCallbackOptions, FormLifecycleOptions, NamePath, RequiredRule, SchemxConfig, SchemxInstance, SchemxSchemasInput, ValidationTrigger, Values } from '@schemx/core';
|
|
3
|
+
import { SchemxButtonProps } from '../components/Button';
|
|
3
4
|
/**
|
|
4
5
|
* Vue 需要在编译 `defineProps` 时直接读取 Props 的字段列表。
|
|
5
6
|
*
|
|
@@ -21,12 +22,31 @@ interface SchemxFormSchemaConfigProps<TValues extends Values = Values> {
|
|
|
21
22
|
colon?: boolean;
|
|
22
23
|
showRequiredMark?: boolean;
|
|
23
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* 内置表单操作按钮的显示配置。
|
|
27
|
+
*
|
|
28
|
+
* `buttonProps` 会透传到内置 Button;`type` 和 `onClick` 由表单组件管理,不能覆盖。
|
|
29
|
+
*/
|
|
30
|
+
export interface SchemxFormActionConfig {
|
|
31
|
+
/**
|
|
32
|
+
* 按钮展示文本;未提供时使用操作的默认文案。
|
|
33
|
+
*/
|
|
34
|
+
text?: string;
|
|
35
|
+
/**
|
|
36
|
+
* 透传给内置 Button 的属性。
|
|
37
|
+
*/
|
|
38
|
+
buttonProps?: Omit<SchemxButtonProps, "type" | "onClick">;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* 内置表单操作按钮的启用配置。
|
|
42
|
+
*/
|
|
43
|
+
export type SchemxFormAction = boolean | SchemxFormActionConfig;
|
|
24
44
|
/**
|
|
25
45
|
* schemx 组件 Props
|
|
26
46
|
*
|
|
27
47
|
* @typeParam TValues - 表单值类型
|
|
28
48
|
*/
|
|
29
|
-
export interface SchemxFormProps<TValues extends Values = Values> extends Omit<SchemxConfig
|
|
49
|
+
export interface SchemxFormProps<TValues extends Values = Values> extends Omit<SchemxConfig<TValues>, "schemaConfig">, FormCallbackOptions<TValues>, FormLifecycleOptions<TValues>, SchemxFormSchemaConfigProps<TValues> {
|
|
30
50
|
/**
|
|
31
51
|
* 初始 Schema 列表。
|
|
32
52
|
*/
|
|
@@ -43,6 +63,18 @@ export interface SchemxFormProps<TValues extends Values = Values> extends Omit<S
|
|
|
43
63
|
* 外部传入的表单实例;传入后由组件复用该实例。
|
|
44
64
|
*/
|
|
45
65
|
form?: SchemxInstance<TValues>;
|
|
66
|
+
/**
|
|
67
|
+
* 覆盖内置操作区展示的提交状态;不改变 Core 的真实提交状态。
|
|
68
|
+
*/
|
|
69
|
+
loading?: boolean;
|
|
70
|
+
/**
|
|
71
|
+
* 提交按钮配置;未提供时不渲染。
|
|
72
|
+
*/
|
|
73
|
+
submitter?: SchemxFormAction;
|
|
74
|
+
/**
|
|
75
|
+
* 重置按钮配置;未提供时不渲染。
|
|
76
|
+
*/
|
|
77
|
+
resetter?: SchemxFormAction;
|
|
46
78
|
/**
|
|
47
79
|
* 自定义 CSS 类名
|
|
48
80
|
*/
|
package/dist/types/form.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../src/types/form.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAErC,OAAO,KAAK,EACV,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,MAAM,EACP,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../src/types/form.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAErC,OAAO,KAAK,EACV,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,MAAM,EACP,MAAM,cAAc,CAAA;AACrB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAE7D;;;;;;GAMG;AACH,UAAU,2BAA2B,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM;IACnE,QAAQ,CAAC,EAAE,YAAY,CAAC,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IACtE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAA;IACxC,aAAa,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO,CAAA;IACxC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAA;IAC1C,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,iBAAiB,EAAE,CAAA;IAC3D,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,WAAW,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;CAC1D;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,sBAAsB,CAAA;AAE/D;;;;GAIG;AACH,MAAM,WAAW,eAAe,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,CAC9D,SACE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,EAC3C,mBAAmB,CAAC,OAAO,CAAC,EAC5B,oBAAoB,CAAC,OAAO,CAAC,EAC7B,2BAA2B,CAAC,OAAO,CAAC;IACtC;;OAEG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAA;IAErC;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IAEvB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IAEpB;;OAEG;IACH,IAAI,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAA;IAE9B;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB;;OAEG;IACH,SAAS,CAAC,EAAE,gBAAgB,CAAA;IAE5B;;OAEG;IACH,QAAQ,CAAC,EAAE,gBAAgB,CAAA;IAE3B;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd;;OAEG;IACH,KAAK,CAAC,EAAE,UAAU,CAAA;CACnB"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "@schemx/vue",
|
|
4
|
-
"version": "1.0.0-next.
|
|
4
|
+
"version": "1.0.0-next.2",
|
|
5
5
|
"description": "基于 JSON Schema 配置的 Vue 3 动态表单引擎(UI 无关核心)",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"schemx",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
],
|
|
49
49
|
"peerDependencies": {
|
|
50
50
|
"vue": "^3.0.0",
|
|
51
|
-
"@schemx/core": "1.0.0-next.
|
|
51
|
+
"@schemx/core": "1.0.0-next.2"
|
|
52
52
|
},
|
|
53
53
|
"dependencies": {
|
|
54
54
|
"classnames": "^2.5.1",
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"vue": "^3.4.0",
|
|
62
62
|
"vue-tsc": "^3.3.9",
|
|
63
63
|
"zod": "^4.3.6",
|
|
64
|
-
"@schemx/core": "1.0.0-next.
|
|
64
|
+
"@schemx/core": "1.0.0-next.2"
|
|
65
65
|
},
|
|
66
66
|
"scripts": {
|
|
67
67
|
"build": "pnpm run type-check && vite build",
|