@pixpilot/formily-shadcn 0.9.1 → 0.11.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/README.md +102 -1
- package/dist/components/array-base/components/array-item-label.cjs +1 -1
- package/dist/components/array-base/components/array-item-label.js +1 -1
- package/dist/components/checkbox.d.ts +2 -2
- package/dist/components/column.d.ts +2 -2
- package/dist/components/context/context.d.cts +1 -1
- package/dist/components/context/context.d.ts +1 -1
- package/dist/components/context/form-context.d.cts +52 -19
- package/dist/components/context/form-context.d.ts +52 -19
- package/dist/components/context/index.d.cts +1 -1
- package/dist/components/context/index.d.ts +1 -1
- package/dist/components/date-picker.d.cts +3 -3
- package/dist/components/date-picker.d.ts +3 -3
- package/dist/components/file-upload/file-upload-inline.d.cts +8 -8
- package/dist/components/file-upload/file-upload-inline.d.ts +8 -8
- package/dist/components/file-upload/file-upload.d.cts +8 -8
- package/dist/components/file-upload/file-upload.d.ts +8 -8
- package/dist/components/file-upload/use-file-upload-feedback.cjs +2 -2
- package/dist/components/file-upload/use-file-upload-feedback.js +2 -2
- package/dist/components/form-grid.d.cts +2 -2
- package/dist/components/form-grid.d.ts +2 -2
- package/dist/components/form-item/base-form-item.cjs +85 -0
- package/dist/components/form-item/base-form-item.d.cts +2 -0
- package/dist/components/form-item/base-form-item.d.ts +2 -0
- package/dist/components/form-item/base-form-item.js +80 -0
- package/dist/components/form-item/connected-form-item.cjs +47 -0
- package/dist/components/form-item/connected-form-item.d.cts +13 -0
- package/dist/components/form-item/connected-form-item.d.ts +13 -0
- package/dist/components/form-item/connected-form-item.js +44 -0
- package/dist/components/form-item/form-item-description-popover.cjs +42 -0
- package/dist/components/form-item/form-item-description-popover.js +37 -0
- package/dist/components/form-item/form-item-label.cjs +29 -0
- package/dist/components/form-item/form-item-label.js +25 -0
- package/dist/components/form-item/form-item-types.d.cts +23 -0
- package/dist/components/form-item/form-item-types.d.ts +23 -0
- package/dist/components/form-item/form-item.cjs +2 -0
- package/dist/components/form-item/form-item.d.cts +4 -0
- package/dist/components/form-item/form-item.d.ts +4 -0
- package/dist/components/form-item/form-item.js +2 -0
- package/dist/components/form-item/index.cjs +3 -0
- package/dist/components/form-item/index.d.cts +4 -0
- package/dist/components/form-item/index.d.ts +4 -0
- package/dist/components/form-item/index.js +3 -0
- package/dist/components/form-item/spacing-config.cjs +24 -0
- package/dist/components/form-item/spacing-config.js +23 -0
- package/dist/components/form-items-container.cjs +3 -5
- package/dist/components/form-items-container.js +3 -5
- package/dist/components/form.cjs +5 -14
- package/dist/components/form.d.cts +4 -7
- package/dist/components/form.d.ts +2 -5
- package/dist/components/form.js +5 -14
- package/dist/components/icon-picker.cjs +2 -2
- package/dist/components/icon-picker.d.cts +3 -3
- package/dist/components/icon-picker.d.ts +3 -3
- package/dist/components/icon-picker.js +2 -2
- package/dist/components/input.d.cts +2 -2
- package/dist/components/input.d.ts +2 -2
- package/dist/components/json-schema-form-renderer/index.cjs +4 -0
- package/dist/components/json-schema-form-renderer/index.d.cts +5 -0
- package/dist/components/json-schema-form-renderer/index.d.ts +5 -0
- package/dist/components/json-schema-form-renderer/index.js +4 -0
- package/dist/components/json-schema-form-renderer/json-schema-form-basic.cjs +35 -0
- package/dist/components/json-schema-form-renderer/json-schema-form-basic.d.cts +14 -0
- package/dist/components/json-schema-form-renderer/json-schema-form-basic.d.ts +14 -0
- package/dist/components/json-schema-form-renderer/json-schema-form-basic.js +32 -0
- package/dist/components/json-schema-form-renderer/json-schema-form-extended.cjs +35 -0
- package/dist/components/json-schema-form-renderer/json-schema-form-extended.d.cts +14 -0
- package/dist/components/json-schema-form-renderer/json-schema-form-extended.d.ts +14 -0
- package/dist/components/json-schema-form-renderer/json-schema-form-extended.js +32 -0
- package/dist/components/json-schema-form-renderer/json-schema-form-renderer.cjs +57 -0
- package/dist/components/json-schema-form-renderer/json-schema-form-renderer.d.cts +7 -0
- package/dist/components/json-schema-form-renderer/json-schema-form-renderer.d.ts +7 -0
- package/dist/components/json-schema-form-renderer/json-schema-form-renderer.js +51 -0
- package/dist/components/json-schema-form-renderer/json-schema-form.cjs +36 -0
- package/dist/components/json-schema-form-renderer/json-schema-form.d.cts +14 -0
- package/dist/components/json-schema-form-renderer/json-schema-form.d.ts +14 -0
- package/dist/components/json-schema-form-renderer/json-schema-form.js +33 -0
- package/dist/components/json-schema-form-renderer/types.d.cts +23 -0
- package/dist/components/json-schema-form-renderer/types.d.ts +23 -0
- package/dist/components/number-input.d.cts +2 -2
- package/dist/components/number-input.d.ts +2 -2
- package/dist/components/object-container.cjs +42 -9
- package/dist/components/object-container.js +43 -10
- package/dist/components/radio.d.cts +2 -2
- package/dist/components/radio.d.ts +2 -2
- package/dist/components/rich-text-editor.cjs +1 -1
- package/dist/components/rich-text-editor.js +1 -1
- package/dist/components/row.d.cts +2 -2
- package/dist/components/row.d.ts +2 -2
- package/dist/components/schema-field/index.d.cts +3 -3
- package/dist/components/schema-field/index.d.ts +3 -3
- package/dist/components/schema-field/index.js +3 -3
- package/dist/components/schema-field/schema-field-basics.cjs +67 -24
- package/dist/components/schema-field/schema-field-basics.d.cts +283 -198
- package/dist/components/schema-field/schema-field-basics.d.ts +283 -198
- package/dist/components/schema-field/schema-field-basics.js +65 -23
- package/dist/components/schema-field/schema-field-extended.cjs +23 -8
- package/dist/components/schema-field/schema-field-extended.d.cts +442 -307
- package/dist/components/schema-field/schema-field-extended.d.ts +442 -307
- package/dist/components/schema-field/schema-field-extended.js +23 -9
- package/dist/components/schema-field/schema-field.cjs +23 -8
- package/dist/components/schema-field/schema-field.d.cts +338 -237
- package/dist/components/schema-field/schema-field.d.ts +338 -237
- package/dist/components/schema-field/schema-field.js +23 -9
- package/dist/components/separator.d.ts +2 -2
- package/dist/components/slider.d.cts +2 -2
- package/dist/components/slider.d.ts +2 -2
- package/dist/components/switch.d.ts +2 -2
- package/dist/components/tags-input-inline.d.cts +2 -2
- package/dist/components/tags-input-inline.d.ts +2 -2
- package/dist/components/textarea.d.ts +2 -2
- package/dist/hooks/index.js +1 -1
- package/dist/hooks/use-form-context.cjs +5 -0
- package/dist/hooks/use-form-context.js +5 -1
- package/dist/hooks/use-label.cjs +9 -2
- package/dist/hooks/use-label.js +9 -2
- package/dist/index.cjs +17 -6
- package/dist/index.d.cts +14 -6
- package/dist/index.d.ts +14 -6
- package/dist/index.js +11 -6
- package/dist/types/form-item.d.cts +5 -0
- package/dist/types/form-item.d.ts +5 -0
- package/dist/types/form.d.cts +0 -6
- package/dist/types/form.d.ts +0 -6
- package/dist/utils/extract-components.cjs +11 -0
- package/dist/utils/extract-components.js +10 -0
- package/dist/utils/extract-fields-decorators.cjs +37 -0
- package/dist/utils/extract-fields-decorators.js +36 -0
- package/dist/utils/index.cjs +2 -0
- package/dist/utils/index.js +3 -1
- package/dist/utils/resolve-responsive-space.cjs +45 -89
- package/dist/utils/resolve-responsive-space.js +42 -83
- package/dist/utils/transform-schema.cjs +9 -2
- package/dist/utils/transform-schema.js +9 -2
- package/dist/utils/validate-schema-components.cjs +45 -0
- package/dist/utils/validate-schema-components.js +43 -0
- package/package.json +4 -3
- package/dist/components/form-item.cjs +0 -118
- package/dist/components/form-item.d.cts +0 -22
- package/dist/components/form-item.d.ts +0 -22
- package/dist/components/form-item.js +0 -112
- package/dist/components/json-schema-form-renderer.cjs +0 -31
- package/dist/components/json-schema-form-renderer.d.cts +0 -15
- package/dist/components/json-schema-form-renderer.d.ts +0 -15
- package/dist/components/json-schema-form-renderer.js +0 -27
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import { useFormContext } from "../hooks/use-form-context.js";
|
|
2
|
-
import { useLabel } from "../hooks/use-label.js";
|
|
3
|
-
import "../hooks/index.js";
|
|
4
|
-
import { connect, mapProps, useField } from "@formily/react";
|
|
5
|
-
import React from "react";
|
|
6
|
-
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
-
import { cn } from "@pixpilot/shadcn";
|
|
8
|
-
import { isVoidField } from "@formily/core";
|
|
9
|
-
|
|
10
|
-
//#region src/components/form-item.tsx
|
|
11
|
-
const BaseFormItem = ({ className, children, label, description, asterisk, feedbackStatus, feedbackText, labelPlacement = "top",...props }) => {
|
|
12
|
-
const field = useField();
|
|
13
|
-
const fieldProps = field?.componentProps ?? {};
|
|
14
|
-
const effectiveLabel = useLabel(label);
|
|
15
|
-
const { itemProps } = useFormContext();
|
|
16
|
-
const { className: itemPropsClassName } = itemProps || {};
|
|
17
|
-
const effectiveLabelPlacement = fieldProps.labelPlacement ?? labelPlacement;
|
|
18
|
-
const id = field?.componentProps?.id ?? `form-${field?.address?.toString()?.replace(/\./gu, "-")}`;
|
|
19
|
-
const descriptionId = React.useId();
|
|
20
|
-
const feedbackId = React.useId();
|
|
21
|
-
const ariaDescribedBy = [description != null ? descriptionId : void 0, feedbackText != null ? feedbackId : void 0].filter(Boolean).join(" ");
|
|
22
|
-
const labelElement = effectiveLabel != null && /* @__PURE__ */ jsxs("label", {
|
|
23
|
-
htmlFor: id,
|
|
24
|
-
"data-slot": "form-label",
|
|
25
|
-
"data-error": Boolean(feedbackStatus === "error"),
|
|
26
|
-
className: cn("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70", feedbackStatus === "error" && "text-destructive", (effectiveLabelPlacement === "end" || effectiveLabelPlacement === "start") && "shrink-0"),
|
|
27
|
-
children: [effectiveLabel, asterisk && /* @__PURE__ */ jsx("span", {
|
|
28
|
-
className: "text-destructive ml-1",
|
|
29
|
-
"aria-label": "required",
|
|
30
|
-
children: "*"
|
|
31
|
-
})]
|
|
32
|
-
});
|
|
33
|
-
const inputElement = /* @__PURE__ */ jsx("div", {
|
|
34
|
-
className: "relative",
|
|
35
|
-
children: React.isValidElement(children) ? React.cloneElement(children, {
|
|
36
|
-
id,
|
|
37
|
-
"aria-describedby": ariaDescribedBy || void 0,
|
|
38
|
-
"aria-invalid": feedbackStatus === "error" ? "true" : void 0
|
|
39
|
-
}) : children
|
|
40
|
-
});
|
|
41
|
-
const contentElement = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
42
|
-
effectiveLabelPlacement === "top" && labelElement,
|
|
43
|
-
description != null && effectiveLabelPlacement === "top" && /* @__PURE__ */ jsx("p", {
|
|
44
|
-
id: descriptionId,
|
|
45
|
-
className: "text-muted-foreground text-[0.8rem]",
|
|
46
|
-
children: description
|
|
47
|
-
}),
|
|
48
|
-
(effectiveLabelPlacement === "start" || effectiveLabelPlacement === "end") && /* @__PURE__ */ jsxs("div", {
|
|
49
|
-
className: cn("flex items-center gap-2", effectiveLabelPlacement === "start" && "flex-row"),
|
|
50
|
-
children: [
|
|
51
|
-
effectiveLabelPlacement === "start" && labelElement,
|
|
52
|
-
inputElement,
|
|
53
|
-
effectiveLabelPlacement === "end" && labelElement
|
|
54
|
-
]
|
|
55
|
-
}),
|
|
56
|
-
effectiveLabelPlacement === "top" && inputElement,
|
|
57
|
-
description != null && (effectiveLabelPlacement === "start" || effectiveLabelPlacement === "end") && /* @__PURE__ */ jsx("p", {
|
|
58
|
-
id: descriptionId,
|
|
59
|
-
className: "text-muted-foreground text-[0.8rem]",
|
|
60
|
-
children: description
|
|
61
|
-
})
|
|
62
|
-
] });
|
|
63
|
-
return /* @__PURE__ */ jsxs("div", {
|
|
64
|
-
"data-slot": "form-item",
|
|
65
|
-
className: cn("flex flex-col gap-2", itemPropsClassName, className),
|
|
66
|
-
...props,
|
|
67
|
-
children: [contentElement, Boolean(feedbackText) && /* @__PURE__ */ jsx("p", {
|
|
68
|
-
id: feedbackId,
|
|
69
|
-
className: cn("text-[0.8rem]", feedbackStatus === "error" && "text-destructive font-medium", feedbackStatus === "warning" && "text-amber-600", feedbackStatus === "success" && "text-green-600"),
|
|
70
|
-
children: typeof feedbackText === "string" ? feedbackText.split("\n").map((line, index) => /* @__PURE__ */ jsxs(React.Fragment, { children: [line, index < feedbackText.split("\n").length - 1 && /* @__PURE__ */ jsx("br", {})] }, index)) : feedbackText
|
|
71
|
-
})]
|
|
72
|
-
});
|
|
73
|
-
};
|
|
74
|
-
/**
|
|
75
|
-
* FormItem component connected to Formily field state
|
|
76
|
-
* Automatically maps field validation state to component props
|
|
77
|
-
*/
|
|
78
|
-
const FormItem = connect(BaseFormItem, mapProps((props, field) => {
|
|
79
|
-
if (isVoidField(field)) return {
|
|
80
|
-
label: field.title ?? props.label,
|
|
81
|
-
description: props.description ?? field.description,
|
|
82
|
-
asterisk: props.asterisk
|
|
83
|
-
};
|
|
84
|
-
const takeFeedbackStatus = () => {
|
|
85
|
-
if (field.validating) return void 0;
|
|
86
|
-
if (field.selfErrors?.length) return "error";
|
|
87
|
-
if (field.selfWarnings?.length) return "warning";
|
|
88
|
-
if (field.selfSuccesses?.length) return "success";
|
|
89
|
-
};
|
|
90
|
-
const takeFeedbackText = () => {
|
|
91
|
-
if (field.validating) return void 0;
|
|
92
|
-
if (props.feedbackText != null) return props.feedbackText;
|
|
93
|
-
if (field.selfErrors?.length) return field.selfErrors.join(", ");
|
|
94
|
-
if (field.selfWarnings?.length) return field.selfWarnings.join(", ");
|
|
95
|
-
if (field.selfSuccesses?.length) return field.selfSuccesses.join(", ");
|
|
96
|
-
};
|
|
97
|
-
const takeAsterisk = () => {
|
|
98
|
-
if (field.required && field.pattern !== "readPretty") return true;
|
|
99
|
-
if ("asterisk" in props) return Boolean(props.asterisk);
|
|
100
|
-
return false;
|
|
101
|
-
};
|
|
102
|
-
return {
|
|
103
|
-
label: props.label ?? field.title,
|
|
104
|
-
description: props.description ?? field.description,
|
|
105
|
-
feedbackStatus: takeFeedbackStatus(),
|
|
106
|
-
feedbackText: takeFeedbackText(),
|
|
107
|
-
asterisk: takeAsterisk()
|
|
108
|
-
};
|
|
109
|
-
}));
|
|
110
|
-
|
|
111
|
-
//#endregion
|
|
112
|
-
export { FormItem };
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
|
|
2
|
-
const require_transform_schema = require('../utils/transform-schema.cjs');
|
|
3
|
-
require('../utils/index.cjs');
|
|
4
|
-
const require_form = require('./form.cjs');
|
|
5
|
-
const require_schema_field = require('./schema-field/schema-field.cjs');
|
|
6
|
-
require('./schema-field/index.cjs');
|
|
7
|
-
let react = require("react");
|
|
8
|
-
react = require_rolldown_runtime.__toESM(react);
|
|
9
|
-
let react_jsx_runtime = require("react/jsx-runtime");
|
|
10
|
-
react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
|
|
11
|
-
let __formily_core = require("@formily/core");
|
|
12
|
-
__formily_core = require_rolldown_runtime.__toESM(__formily_core);
|
|
13
|
-
|
|
14
|
-
//#region src/components/json-schema-form-renderer.tsx
|
|
15
|
-
const JsonSchemaFormRenderer = (props) => {
|
|
16
|
-
const { schema, children, schemaField,...rest } = props;
|
|
17
|
-
const form = (0, react.useMemo)(() => (0, __formily_core.createForm)(), []);
|
|
18
|
-
const formSchema = (0, react.useMemo)(() => {
|
|
19
|
-
return require_transform_schema.transformSchema(schema);
|
|
20
|
-
}, [schema]);
|
|
21
|
-
const SchemaFieldComponent = schemaField || require_schema_field.SchemaField;
|
|
22
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_form.Form, {
|
|
23
|
-
...rest,
|
|
24
|
-
form,
|
|
25
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(SchemaFieldComponent, { schema: formSchema }), children]
|
|
26
|
-
});
|
|
27
|
-
};
|
|
28
|
-
JsonSchemaFormRenderer.displayName = "JsonSchemaFormRenderer";
|
|
29
|
-
|
|
30
|
-
//#endregion
|
|
31
|
-
exports.JsonSchemaFormRenderer = JsonSchemaFormRenderer;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { Form } from "./form.cjs";
|
|
2
|
-
import { ISchema } from "@formily/react";
|
|
3
|
-
import React from "react";
|
|
4
|
-
|
|
5
|
-
//#region src/components/json-schema-form-renderer.d.ts
|
|
6
|
-
interface JsonSchemaFormRendererProps extends Omit<React.ComponentProps<typeof Form>, 'form'> {
|
|
7
|
-
schema: ISchema;
|
|
8
|
-
children?: React.ReactNode;
|
|
9
|
-
schemaField?: React.FC<{
|
|
10
|
-
schema: ISchema;
|
|
11
|
-
}>;
|
|
12
|
-
}
|
|
13
|
-
declare const JsonSchemaFormRenderer: React.FC<JsonSchemaFormRendererProps>;
|
|
14
|
-
//#endregion
|
|
15
|
-
export { JsonSchemaFormRenderer, JsonSchemaFormRendererProps };
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { Form } from "./form.js";
|
|
2
|
-
import { ISchema } from "@formily/react";
|
|
3
|
-
import React from "react";
|
|
4
|
-
|
|
5
|
-
//#region src/components/json-schema-form-renderer.d.ts
|
|
6
|
-
interface JsonSchemaFormRendererProps extends Omit<React.ComponentProps<typeof Form>, 'form'> {
|
|
7
|
-
schema: ISchema;
|
|
8
|
-
children?: React.ReactNode;
|
|
9
|
-
schemaField?: React.FC<{
|
|
10
|
-
schema: ISchema;
|
|
11
|
-
}>;
|
|
12
|
-
}
|
|
13
|
-
declare const JsonSchemaFormRenderer: React.FC<JsonSchemaFormRendererProps>;
|
|
14
|
-
//#endregion
|
|
15
|
-
export { JsonSchemaFormRenderer, JsonSchemaFormRendererProps };
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { transformSchema } from "../utils/transform-schema.js";
|
|
2
|
-
import "../utils/index.js";
|
|
3
|
-
import { Form as Form$1 } from "./form.js";
|
|
4
|
-
import { SchemaField } from "./schema-field/schema-field.js";
|
|
5
|
-
import "./schema-field/index.js";
|
|
6
|
-
import React, { useMemo } from "react";
|
|
7
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
-
import { createForm } from "@formily/core";
|
|
9
|
-
|
|
10
|
-
//#region src/components/json-schema-form-renderer.tsx
|
|
11
|
-
const JsonSchemaFormRenderer = (props) => {
|
|
12
|
-
const { schema, children, schemaField,...rest } = props;
|
|
13
|
-
const form = useMemo(() => createForm(), []);
|
|
14
|
-
const formSchema = useMemo(() => {
|
|
15
|
-
return transformSchema(schema);
|
|
16
|
-
}, [schema]);
|
|
17
|
-
const SchemaFieldComponent = schemaField || SchemaField;
|
|
18
|
-
return /* @__PURE__ */ jsxs(Form$1, {
|
|
19
|
-
...rest,
|
|
20
|
-
form,
|
|
21
|
-
children: [/* @__PURE__ */ jsx(SchemaFieldComponent, { schema: formSchema }), children]
|
|
22
|
-
});
|
|
23
|
-
};
|
|
24
|
-
JsonSchemaFormRenderer.displayName = "JsonSchemaFormRenderer";
|
|
25
|
-
|
|
26
|
-
//#endregion
|
|
27
|
-
export { JsonSchemaFormRenderer };
|