@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.
Files changed (145) hide show
  1. package/README.md +102 -1
  2. package/dist/components/array-base/components/array-item-label.cjs +1 -1
  3. package/dist/components/array-base/components/array-item-label.js +1 -1
  4. package/dist/components/checkbox.d.ts +2 -2
  5. package/dist/components/column.d.ts +2 -2
  6. package/dist/components/context/context.d.cts +1 -1
  7. package/dist/components/context/context.d.ts +1 -1
  8. package/dist/components/context/form-context.d.cts +52 -19
  9. package/dist/components/context/form-context.d.ts +52 -19
  10. package/dist/components/context/index.d.cts +1 -1
  11. package/dist/components/context/index.d.ts +1 -1
  12. package/dist/components/date-picker.d.cts +3 -3
  13. package/dist/components/date-picker.d.ts +3 -3
  14. package/dist/components/file-upload/file-upload-inline.d.cts +8 -8
  15. package/dist/components/file-upload/file-upload-inline.d.ts +8 -8
  16. package/dist/components/file-upload/file-upload.d.cts +8 -8
  17. package/dist/components/file-upload/file-upload.d.ts +8 -8
  18. package/dist/components/file-upload/use-file-upload-feedback.cjs +2 -2
  19. package/dist/components/file-upload/use-file-upload-feedback.js +2 -2
  20. package/dist/components/form-grid.d.cts +2 -2
  21. package/dist/components/form-grid.d.ts +2 -2
  22. package/dist/components/form-item/base-form-item.cjs +85 -0
  23. package/dist/components/form-item/base-form-item.d.cts +2 -0
  24. package/dist/components/form-item/base-form-item.d.ts +2 -0
  25. package/dist/components/form-item/base-form-item.js +80 -0
  26. package/dist/components/form-item/connected-form-item.cjs +47 -0
  27. package/dist/components/form-item/connected-form-item.d.cts +13 -0
  28. package/dist/components/form-item/connected-form-item.d.ts +13 -0
  29. package/dist/components/form-item/connected-form-item.js +44 -0
  30. package/dist/components/form-item/form-item-description-popover.cjs +42 -0
  31. package/dist/components/form-item/form-item-description-popover.js +37 -0
  32. package/dist/components/form-item/form-item-label.cjs +29 -0
  33. package/dist/components/form-item/form-item-label.js +25 -0
  34. package/dist/components/form-item/form-item-types.d.cts +23 -0
  35. package/dist/components/form-item/form-item-types.d.ts +23 -0
  36. package/dist/components/form-item/form-item.cjs +2 -0
  37. package/dist/components/form-item/form-item.d.cts +4 -0
  38. package/dist/components/form-item/form-item.d.ts +4 -0
  39. package/dist/components/form-item/form-item.js +2 -0
  40. package/dist/components/form-item/index.cjs +3 -0
  41. package/dist/components/form-item/index.d.cts +4 -0
  42. package/dist/components/form-item/index.d.ts +4 -0
  43. package/dist/components/form-item/index.js +3 -0
  44. package/dist/components/form-item/spacing-config.cjs +24 -0
  45. package/dist/components/form-item/spacing-config.js +23 -0
  46. package/dist/components/form-items-container.cjs +3 -5
  47. package/dist/components/form-items-container.js +3 -5
  48. package/dist/components/form.cjs +5 -14
  49. package/dist/components/form.d.cts +4 -7
  50. package/dist/components/form.d.ts +2 -5
  51. package/dist/components/form.js +5 -14
  52. package/dist/components/icon-picker.cjs +2 -2
  53. package/dist/components/icon-picker.d.cts +3 -3
  54. package/dist/components/icon-picker.d.ts +3 -3
  55. package/dist/components/icon-picker.js +2 -2
  56. package/dist/components/input.d.cts +2 -2
  57. package/dist/components/input.d.ts +2 -2
  58. package/dist/components/json-schema-form-renderer/index.cjs +4 -0
  59. package/dist/components/json-schema-form-renderer/index.d.cts +5 -0
  60. package/dist/components/json-schema-form-renderer/index.d.ts +5 -0
  61. package/dist/components/json-schema-form-renderer/index.js +4 -0
  62. package/dist/components/json-schema-form-renderer/json-schema-form-basic.cjs +35 -0
  63. package/dist/components/json-schema-form-renderer/json-schema-form-basic.d.cts +14 -0
  64. package/dist/components/json-schema-form-renderer/json-schema-form-basic.d.ts +14 -0
  65. package/dist/components/json-schema-form-renderer/json-schema-form-basic.js +32 -0
  66. package/dist/components/json-schema-form-renderer/json-schema-form-extended.cjs +35 -0
  67. package/dist/components/json-schema-form-renderer/json-schema-form-extended.d.cts +14 -0
  68. package/dist/components/json-schema-form-renderer/json-schema-form-extended.d.ts +14 -0
  69. package/dist/components/json-schema-form-renderer/json-schema-form-extended.js +32 -0
  70. package/dist/components/json-schema-form-renderer/json-schema-form-renderer.cjs +57 -0
  71. package/dist/components/json-schema-form-renderer/json-schema-form-renderer.d.cts +7 -0
  72. package/dist/components/json-schema-form-renderer/json-schema-form-renderer.d.ts +7 -0
  73. package/dist/components/json-schema-form-renderer/json-schema-form-renderer.js +51 -0
  74. package/dist/components/json-schema-form-renderer/json-schema-form.cjs +36 -0
  75. package/dist/components/json-schema-form-renderer/json-schema-form.d.cts +14 -0
  76. package/dist/components/json-schema-form-renderer/json-schema-form.d.ts +14 -0
  77. package/dist/components/json-schema-form-renderer/json-schema-form.js +33 -0
  78. package/dist/components/json-schema-form-renderer/types.d.cts +23 -0
  79. package/dist/components/json-schema-form-renderer/types.d.ts +23 -0
  80. package/dist/components/number-input.d.cts +2 -2
  81. package/dist/components/number-input.d.ts +2 -2
  82. package/dist/components/object-container.cjs +42 -9
  83. package/dist/components/object-container.js +43 -10
  84. package/dist/components/radio.d.cts +2 -2
  85. package/dist/components/radio.d.ts +2 -2
  86. package/dist/components/rich-text-editor.cjs +1 -1
  87. package/dist/components/rich-text-editor.js +1 -1
  88. package/dist/components/row.d.cts +2 -2
  89. package/dist/components/row.d.ts +2 -2
  90. package/dist/components/schema-field/index.d.cts +3 -3
  91. package/dist/components/schema-field/index.d.ts +3 -3
  92. package/dist/components/schema-field/index.js +3 -3
  93. package/dist/components/schema-field/schema-field-basics.cjs +67 -24
  94. package/dist/components/schema-field/schema-field-basics.d.cts +283 -198
  95. package/dist/components/schema-field/schema-field-basics.d.ts +283 -198
  96. package/dist/components/schema-field/schema-field-basics.js +65 -23
  97. package/dist/components/schema-field/schema-field-extended.cjs +23 -8
  98. package/dist/components/schema-field/schema-field-extended.d.cts +442 -307
  99. package/dist/components/schema-field/schema-field-extended.d.ts +442 -307
  100. package/dist/components/schema-field/schema-field-extended.js +23 -9
  101. package/dist/components/schema-field/schema-field.cjs +23 -8
  102. package/dist/components/schema-field/schema-field.d.cts +338 -237
  103. package/dist/components/schema-field/schema-field.d.ts +338 -237
  104. package/dist/components/schema-field/schema-field.js +23 -9
  105. package/dist/components/separator.d.ts +2 -2
  106. package/dist/components/slider.d.cts +2 -2
  107. package/dist/components/slider.d.ts +2 -2
  108. package/dist/components/switch.d.ts +2 -2
  109. package/dist/components/tags-input-inline.d.cts +2 -2
  110. package/dist/components/tags-input-inline.d.ts +2 -2
  111. package/dist/components/textarea.d.ts +2 -2
  112. package/dist/hooks/index.js +1 -1
  113. package/dist/hooks/use-form-context.cjs +5 -0
  114. package/dist/hooks/use-form-context.js +5 -1
  115. package/dist/hooks/use-label.cjs +9 -2
  116. package/dist/hooks/use-label.js +9 -2
  117. package/dist/index.cjs +17 -6
  118. package/dist/index.d.cts +14 -6
  119. package/dist/index.d.ts +14 -6
  120. package/dist/index.js +11 -6
  121. package/dist/types/form-item.d.cts +5 -0
  122. package/dist/types/form-item.d.ts +5 -0
  123. package/dist/types/form.d.cts +0 -6
  124. package/dist/types/form.d.ts +0 -6
  125. package/dist/utils/extract-components.cjs +11 -0
  126. package/dist/utils/extract-components.js +10 -0
  127. package/dist/utils/extract-fields-decorators.cjs +37 -0
  128. package/dist/utils/extract-fields-decorators.js +36 -0
  129. package/dist/utils/index.cjs +2 -0
  130. package/dist/utils/index.js +3 -1
  131. package/dist/utils/resolve-responsive-space.cjs +45 -89
  132. package/dist/utils/resolve-responsive-space.js +42 -83
  133. package/dist/utils/transform-schema.cjs +9 -2
  134. package/dist/utils/transform-schema.js +9 -2
  135. package/dist/utils/validate-schema-components.cjs +45 -0
  136. package/dist/utils/validate-schema-components.js +43 -0
  137. package/package.json +4 -3
  138. package/dist/components/form-item.cjs +0 -118
  139. package/dist/components/form-item.d.cts +0 -22
  140. package/dist/components/form-item.d.ts +0 -22
  141. package/dist/components/form-item.js +0 -112
  142. package/dist/components/json-schema-form-renderer.cjs +0 -31
  143. package/dist/components/json-schema-form-renderer.d.cts +0 -15
  144. package/dist/components/json-schema-form-renderer.d.ts +0 -15
  145. 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 };