@silver-formily/vue 0.0.1-beta.0
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/esm/components/ArrayField.d.ts +56 -0
- package/esm/components/ArrayField.mjs +24 -0
- package/esm/components/ArrayField.mjs.map +1 -0
- package/esm/components/ExpressionScope.d.ts +16 -0
- package/esm/components/ExpressionScope.mjs +25 -0
- package/esm/components/ExpressionScope.mjs.map +1 -0
- package/esm/components/Field.d.ts +56 -0
- package/esm/components/Field.mjs +24 -0
- package/esm/components/Field.mjs.map +1 -0
- package/esm/components/FormConsumer.d.ts +4 -0
- package/esm/components/FormConsumer.mjs +19 -0
- package/esm/components/FormConsumer.mjs.map +1 -0
- package/esm/components/FormProvider.d.ts +16 -0
- package/esm/components/FormProvider.mjs +27 -0
- package/esm/components/FormProvider.mjs.map +1 -0
- package/esm/components/ObjectField.d.ts +56 -0
- package/esm/components/ObjectField.mjs +24 -0
- package/esm/components/ObjectField.mjs.map +1 -0
- package/esm/components/ReactiveField.d.ts +16 -0
- package/esm/components/ReactiveField.mjs +75 -0
- package/esm/components/ReactiveField.mjs.map +1 -0
- package/esm/components/RecursionField.d.ts +22 -0
- package/esm/components/RecursionField.mjs +129 -0
- package/esm/components/RecursionField.mjs.map +1 -0
- package/esm/components/SchemaField.d.ts +2900 -0
- package/esm/components/SchemaField.mjs +106 -0
- package/esm/components/SchemaField.mjs.map +1 -0
- package/esm/components/VoidField.d.ts +40 -0
- package/esm/components/VoidField.mjs +24 -0
- package/esm/components/VoidField.mjs.map +1 -0
- package/esm/components/index.d.ts +9 -0
- package/esm/components/index.mjs +21 -0
- package/esm/components/index.mjs.map +1 -0
- package/esm/global.d.mjs +2 -0
- package/esm/global.d.mjs.map +1 -0
- package/esm/hooks/index.d.ts +5 -0
- package/esm/hooks/index.mjs +13 -0
- package/esm/hooks/index.mjs.map +1 -0
- package/esm/hooks/useAttach.d.ts +7 -0
- package/esm/hooks/useAttach.mjs +14 -0
- package/esm/hooks/useAttach.mjs.map +1 -0
- package/esm/hooks/useField.d.ts +3 -0
- package/esm/hooks/useField.mjs +9 -0
- package/esm/hooks/useField.mjs.map +1 -0
- package/esm/hooks/useFieldSchema.d.ts +1 -0
- package/esm/hooks/useFieldSchema.mjs +9 -0
- package/esm/hooks/useFieldSchema.mjs.map +1 -0
- package/esm/hooks/useForm.d.ts +3 -0
- package/esm/hooks/useForm.mjs +9 -0
- package/esm/hooks/useForm.mjs.map +1 -0
- package/esm/hooks/useFormEffects.d.ts +2 -0
- package/esm/hooks/useFormEffects.mjs +16 -0
- package/esm/hooks/useFormEffects.mjs.map +1 -0
- package/esm/hooks/useInjectionCleaner.d.ts +2 -0
- package/esm/hooks/useInjectionCleaner.mjs +8 -0
- package/esm/hooks/useInjectionCleaner.mjs.map +1 -0
- package/esm/hooks/useParentForm.d.ts +3 -0
- package/esm/hooks/useParentForm.mjs +12 -0
- package/esm/hooks/useParentForm.mjs.map +1 -0
- package/esm/index.d.ts +4 -0
- package/esm/index.mjs +42 -0
- package/esm/index.mjs.map +1 -0
- package/esm/shared/connect.d.ts +9 -0
- package/esm/shared/connect.mjs +66 -0
- package/esm/shared/connect.mjs.map +1 -0
- package/esm/shared/context.d.ts +10 -0
- package/esm/shared/context.mjs +10 -0
- package/esm/shared/context.mjs.map +1 -0
- package/esm/shared/index.d.ts +2 -0
- package/esm/shared/index.mjs +14 -0
- package/esm/shared/index.mjs.map +1 -0
- package/esm/types/index.d.ts +64 -0
- package/esm/types/index.mjs +2 -0
- package/esm/types/index.mjs.map +1 -0
- package/esm/utils/fieldProps.d.ts +49 -0
- package/esm/utils/fieldProps.mjs +51 -0
- package/esm/utils/fieldProps.mjs.map +1 -0
- package/esm/utils/getRawComponent.d.ts +8 -0
- package/esm/utils/getRawComponent.mjs +13 -0
- package/esm/utils/getRawComponent.mjs.map +1 -0
- package/esm/utils/reactiveFieldHelpers.d.ts +16 -0
- package/esm/utils/reactiveFieldHelpers.mjs +106 -0
- package/esm/utils/reactiveFieldHelpers.mjs.map +1 -0
- package/esm/utils/recursionFieldProps.d.ts +67 -0
- package/esm/utils/recursionFieldProps.mjs +14 -0
- package/esm/utils/recursionFieldProps.mjs.map +1 -0
- package/esm/utils/resolveSchemaProps.d.ts +1 -0
- package/esm/utils/resolveSchemaProps.mjs +11 -0
- package/esm/utils/resolveSchemaProps.mjs.map +1 -0
- package/esm/utils/runtimeProps.d.ts +8 -0
- package/esm/utils/runtimeProps.mjs +17 -0
- package/esm/utils/runtimeProps.mjs.map +1 -0
- package/esm/utils/schemaFieldProps.d.ts +231 -0
- package/esm/utils/schemaFieldProps.mjs +63 -0
- package/esm/utils/schemaFieldProps.mjs.map +1 -0
- package/package.json +69 -0
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { Schema as S } from "@formily/json-schema";
|
|
2
|
+
import { lazyMerge as E, isValid as x, isFn as w } from "@formily/shared";
|
|
3
|
+
import { defineComponent as A, inject as j, computed as B, markRaw as C, shallowRef as M, watch as V, provide as $, h as u, Fragment as z } from "vue";
|
|
4
|
+
import { useField as I } from "../hooks/useField.mjs";
|
|
5
|
+
import { SchemaOptionsSymbol as K, SchemaExpressionScopeSymbol as q, SchemaSymbol as D } from "../shared/context.mjs";
|
|
6
|
+
import "@formily/core";
|
|
7
|
+
import "@formily/reactive-vue";
|
|
8
|
+
import { recursionFieldProps as G } from "../utils/recursionFieldProps.mjs";
|
|
9
|
+
import H from "./ArrayField.mjs";
|
|
10
|
+
import J from "./Field.mjs";
|
|
11
|
+
import L from "./ObjectField.mjs";
|
|
12
|
+
import N from "./VoidField.mjs";
|
|
13
|
+
function F(e) {
|
|
14
|
+
const c = Object.keys(e);
|
|
15
|
+
if (!c.length)
|
|
16
|
+
return;
|
|
17
|
+
const i = c.reduce((s, y) => {
|
|
18
|
+
const t = e[y];
|
|
19
|
+
if (!t)
|
|
20
|
+
return s;
|
|
21
|
+
const f = t();
|
|
22
|
+
if (!f?.length)
|
|
23
|
+
return s;
|
|
24
|
+
const p = f.filter((P) => x(P));
|
|
25
|
+
return s.push(...p), s;
|
|
26
|
+
}, []);
|
|
27
|
+
if (i.length)
|
|
28
|
+
return u(z, null, i);
|
|
29
|
+
}
|
|
30
|
+
const Q = A({
|
|
31
|
+
name: "RecursionField",
|
|
32
|
+
inheritAttrs: !1,
|
|
33
|
+
props: G,
|
|
34
|
+
setup(e) {
|
|
35
|
+
const c = I(), i = j(K), s = j(q);
|
|
36
|
+
if (!i || !s)
|
|
37
|
+
throw new Error("RecursionField must be used under SchemaField.");
|
|
38
|
+
const y = (r) => C(S.isSchemaInstance(r) ? r : new S(r)), t = B(() => y(e.schema)), f = (r) => r?.toFieldProps?.({
|
|
39
|
+
...i.value,
|
|
40
|
+
get scope() {
|
|
41
|
+
return E(
|
|
42
|
+
{},
|
|
43
|
+
i.value.scope ?? {},
|
|
44
|
+
s.value
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
}), p = M(f(t.value));
|
|
48
|
+
V([t, i], () => {
|
|
49
|
+
p.value = f(t.value);
|
|
50
|
+
});
|
|
51
|
+
const P = () => e.onlyRenderProperties ? e.basePath ?? c?.value?.address.concat(e.name) : e.basePath ?? c?.value?.address;
|
|
52
|
+
return $(D, t), () => {
|
|
53
|
+
const r = P(), v = p.value, d = (R = !1) => {
|
|
54
|
+
if (e.onlyRenderSelf)
|
|
55
|
+
return {};
|
|
56
|
+
const b = S.getOrderProperties(t.value);
|
|
57
|
+
if (!b.length)
|
|
58
|
+
return {};
|
|
59
|
+
const h = {}, k = (o, a) => {
|
|
60
|
+
h[o] || (h[o] = []), h[o].push(a);
|
|
61
|
+
};
|
|
62
|
+
for (const [o, { schema: a, key: l }] of b.entries()) {
|
|
63
|
+
let n = a;
|
|
64
|
+
if (w(e.mapProperties)) {
|
|
65
|
+
const m = e.mapProperties(a, l);
|
|
66
|
+
m && (n = m);
|
|
67
|
+
}
|
|
68
|
+
w(e.filterProperties) && e.filterProperties(n, l) === !1 || k(n["x-slot"] ?? "default", (m) => u(Q, {
|
|
69
|
+
key: `${o}-${l}`,
|
|
70
|
+
schema: n,
|
|
71
|
+
name: l,
|
|
72
|
+
basePath: m?.address ?? r,
|
|
73
|
+
slot: n["x-slot"]
|
|
74
|
+
}));
|
|
75
|
+
}
|
|
76
|
+
const g = {};
|
|
77
|
+
for (const o of Object.keys(h)) {
|
|
78
|
+
const a = h[o], l = R ? (n) => a.map((m) => m(n?.field)) : () => a.map((n) => n());
|
|
79
|
+
g[o] = l;
|
|
80
|
+
}
|
|
81
|
+
return g;
|
|
82
|
+
}, O = () => {
|
|
83
|
+
if (!x(e.name))
|
|
84
|
+
return F(d());
|
|
85
|
+
if (t.value.type === "object")
|
|
86
|
+
return e.onlyRenderProperties ? F(d()) : u(
|
|
87
|
+
L,
|
|
88
|
+
{
|
|
89
|
+
...v,
|
|
90
|
+
name: e.name,
|
|
91
|
+
basePath: r
|
|
92
|
+
},
|
|
93
|
+
d(!0)
|
|
94
|
+
);
|
|
95
|
+
if (t.value.type === "array")
|
|
96
|
+
return u(H, {
|
|
97
|
+
...v,
|
|
98
|
+
name: e.name,
|
|
99
|
+
basePath: r
|
|
100
|
+
});
|
|
101
|
+
if (t.value.type === "void") {
|
|
102
|
+
if (e.onlyRenderProperties)
|
|
103
|
+
return F(d());
|
|
104
|
+
const R = d(!0);
|
|
105
|
+
return u(
|
|
106
|
+
N,
|
|
107
|
+
{
|
|
108
|
+
...v,
|
|
109
|
+
name: e.name,
|
|
110
|
+
basePath: r
|
|
111
|
+
},
|
|
112
|
+
R
|
|
113
|
+
);
|
|
114
|
+
}
|
|
115
|
+
return u(J, {
|
|
116
|
+
...v,
|
|
117
|
+
name: e.name,
|
|
118
|
+
basePath: r
|
|
119
|
+
});
|
|
120
|
+
};
|
|
121
|
+
if (t.value)
|
|
122
|
+
return O();
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
export {
|
|
127
|
+
Q as default
|
|
128
|
+
};
|
|
129
|
+
//# sourceMappingURL=RecursionField.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RecursionField.mjs","sources":["../../src/components/RecursionField.ts"],"sourcesContent":["import type { GeneralField } from '@formily/core'\nimport type { Slots, VNode } from 'vue'\nimport type { IRecursionFieldProps, SchemaExpressionScope } from '../types'\nimport { Schema } from '@formily/json-schema'\nimport { isFn, isValid, lazyMerge } from '@formily/shared'\nimport { computed, defineComponent, Fragment, h, inject, markRaw, provide, shallowRef, watch } from 'vue'\nimport { useField } from '../hooks'\nimport { SchemaExpressionScopeSymbol, SchemaOptionsSymbol, SchemaSymbol } from '../shared'\nimport { recursionFieldProps } from '../utils/recursionFieldProps'\nimport ArrayField from './ArrayField'\nimport Field from './Field'\n\nimport ObjectField from './ObjectField'\nimport VoidField from './VoidField'\n\ntype PropertyRenderFn = (field?: GeneralField) => VNode\ninterface ScopedSlotPayload { field?: GeneralField }\ntype SlotRender = (payload?: ScopedSlotPayload) => VNode[] | undefined\ntype SlotMap = Record<string, SlotRender>\n\nfunction resolveEmptySlot(slots: SlotMap) {\n const slotKeys = Object.keys(slots)\n if (!slotKeys.length)\n return undefined\n const children = slotKeys.reduce<VNode[]>((acc, key) => {\n const slot = slots[key]\n if (!slot)\n return acc\n const result = slot()\n if (!result?.length)\n return acc\n const validChildren = result.filter(child => isValid(child))\n acc.push(...validChildren)\n return acc\n }, [])\n if (!children.length)\n return undefined\n return h(Fragment, null, children)\n}\n\nconst RecursionField = defineComponent({\n name: 'RecursionField',\n inheritAttrs: false,\n props: recursionFieldProps,\n setup(props: IRecursionFieldProps) {\n const parentRef = useField()\n const optionsRef = inject(SchemaOptionsSymbol)\n const scopeRef = inject(SchemaExpressionScopeSymbol)\n\n if (!optionsRef || !scopeRef) {\n throw new Error('RecursionField must be used under SchemaField.')\n }\n const createSchema = (schemaProp: IRecursionFieldProps['schema']) =>\n markRaw(Schema.isSchemaInstance(schemaProp) ? schemaProp : new Schema(schemaProp))\n const fieldSchemaRef = computed(() => createSchema(props.schema))\n\n const getPropsFromSchema = (schema: Schema) =>\n schema?.toFieldProps?.({\n ...optionsRef.value,\n get scope() {\n return lazyMerge(\n {} as SchemaExpressionScope,\n optionsRef.value.scope ?? {},\n scopeRef.value,\n )\n },\n })\n const fieldPropsRef = shallowRef(getPropsFromSchema(fieldSchemaRef.value))\n\n watch([fieldSchemaRef, optionsRef], () => {\n fieldPropsRef.value = getPropsFromSchema(fieldSchemaRef.value)\n })\n\n const getBasePath = () => {\n if (props.onlyRenderProperties) {\n return props.basePath ?? parentRef?.value?.address.concat(props.name!)\n }\n return props.basePath ?? parentRef?.value?.address\n }\n\n provide(SchemaSymbol, fieldSchemaRef)\n\n return () => {\n const basePath = getBasePath()\n const fieldProps = fieldPropsRef.value\n\n const generateSlotsByProperties = (scoped = false): SlotMap => {\n if (props.onlyRenderSelf)\n return {}\n const properties = Schema.getOrderProperties(fieldSchemaRef.value)\n if (!properties.length)\n return {}\n const renderMap: Record<string, PropertyRenderFn[]> = {}\n const setRender = (key: string, value: PropertyRenderFn) => {\n if (!renderMap[key]) {\n renderMap[key] = []\n }\n renderMap[key].push(value)\n }\n for (const [index, { schema: item, key: name }] of properties.entries()) {\n let schema: Schema = item\n if (isFn(props.mapProperties)) {\n const mapped = props.mapProperties(item, name)\n if (mapped) {\n schema = mapped\n }\n }\n if (isFn(props.filterProperties) && props.filterProperties(schema, name) === false) {\n continue\n }\n setRender(schema['x-slot'] ?? 'default', (field?: GeneralField) =>\n h(RecursionField, {\n key: `${index}-${name}`,\n schema,\n name,\n basePath: field?.address ?? basePath,\n slot: schema['x-slot'],\n }))\n }\n const slots: SlotMap = {}\n for (const key of Object.keys(renderMap)) {\n const renderFns = renderMap[key]\n const slotRender: SlotRender = scoped\n ? payload => renderFns!.map(fn => fn(payload?.field))\n : () => renderFns!.map(fn => fn())\n slots[key] = slotRender\n }\n return slots\n }\n\n const render = () => {\n if (!isValid(props.name))\n return resolveEmptySlot(generateSlotsByProperties())\n if (fieldSchemaRef.value.type === 'object') {\n if (props.onlyRenderProperties)\n return resolveEmptySlot(generateSlotsByProperties())\n return h(\n ObjectField,\n {\n ...fieldProps,\n name: props.name!,\n basePath,\n },\n generateSlotsByProperties(true) as Slots,\n )\n }\n else if (fieldSchemaRef.value.type === 'array') {\n return h(ArrayField, {\n ...fieldProps,\n name: props.name!,\n basePath,\n })\n }\n else if (fieldSchemaRef.value.type === 'void') {\n if (props.onlyRenderProperties)\n return resolveEmptySlot(generateSlotsByProperties())\n const slots = generateSlotsByProperties(true)\n return h(\n VoidField,\n {\n ...fieldProps,\n name: props.name!,\n basePath,\n },\n slots as Slots,\n )\n }\n\n return h(Field, {\n ...fieldProps,\n name: props.name!,\n basePath,\n })\n }\n\n if (!fieldSchemaRef.value)\n return\n\n return render()\n }\n },\n})\n\nexport default RecursionField\n"],"names":["resolveEmptySlot","slots","slotKeys","children","acc","key","slot","result","validChildren","child","isValid","h","Fragment","RecursionField","defineComponent","recursionFieldProps","props","parentRef","useField","optionsRef","inject","SchemaOptionsSymbol","scopeRef","SchemaExpressionScopeSymbol","createSchema","schemaProp","markRaw","Schema","fieldSchemaRef","computed","getPropsFromSchema","schema","lazyMerge","fieldPropsRef","shallowRef","watch","getBasePath","provide","SchemaSymbol","basePath","fieldProps","generateSlotsByProperties","scoped","properties","renderMap","setRender","value","index","item","name","isFn","mapped","field","renderFns","slotRender","payload","fn","render","ObjectField","ArrayField","VoidField","Field"],"mappings":"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"}
|