pdyform 2.0.2 → 2.1.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 (190) hide show
  1. package/package.json +9 -3
  2. package/packages/vue/dist/index.d.ts +2 -36
  3. package/packages/vue/dist/index.js +1 -28
  4. package/packages/vue/dist/index.mjs +267 -6512
  5. package/eslint.config.mjs +0 -53
  6. package/example/README.md +0 -36
  7. package/example/react-demo/index.html +0 -12
  8. package/example/react-demo/node_modules/.bin/browserslist +0 -17
  9. package/example/react-demo/node_modules/.bin/tsc +0 -17
  10. package/example/react-demo/node_modules/.bin/tsserver +0 -17
  11. package/example/react-demo/node_modules/.bin/vite +0 -17
  12. package/example/react-demo/node_modules/.vite/deps/@radix-ui_react-checkbox.js +0 -300
  13. package/example/react-demo/node_modules/.vite/deps/@radix-ui_react-checkbox.js.map +0 -7
  14. package/example/react-demo/node_modules/.vite/deps/@radix-ui_react-label.js +0 -194
  15. package/example/react-demo/node_modules/.vite/deps/@radix-ui_react-label.js.map +0 -7
  16. package/example/react-demo/node_modules/.vite/deps/@radix-ui_react-radio-group.js +0 -530
  17. package/example/react-demo/node_modules/.vite/deps/@radix-ui_react-radio-group.js.map +0 -7
  18. package/example/react-demo/node_modules/.vite/deps/@radix-ui_react-select.js +0 -4808
  19. package/example/react-demo/node_modules/.vite/deps/@radix-ui_react-select.js.map +0 -7
  20. package/example/react-demo/node_modules/.vite/deps/_metadata.json +0 -115
  21. package/example/react-demo/node_modules/.vite/deps/chunk-3D5PZ6F6.js +0 -49
  22. package/example/react-demo/node_modules/.vite/deps/chunk-3D5PZ6F6.js.map +0 -7
  23. package/example/react-demo/node_modules/.vite/deps/chunk-5Q2RBQLA.js +0 -127
  24. package/example/react-demo/node_modules/.vite/deps/chunk-5Q2RBQLA.js.map +0 -7
  25. package/example/react-demo/node_modules/.vite/deps/chunk-G3PMV62Z.js +0 -36
  26. package/example/react-demo/node_modules/.vite/deps/chunk-G3PMV62Z.js.map +0 -7
  27. package/example/react-demo/node_modules/.vite/deps/chunk-GX7YZ5KV.js +0 -370
  28. package/example/react-demo/node_modules/.vite/deps/chunk-GX7YZ5KV.js.map +0 -7
  29. package/example/react-demo/node_modules/.vite/deps/chunk-PUFJGYAC.js +0 -928
  30. package/example/react-demo/node_modules/.vite/deps/chunk-PUFJGYAC.js.map +0 -7
  31. package/example/react-demo/node_modules/.vite/deps/chunk-SIU35MPB.js +0 -21
  32. package/example/react-demo/node_modules/.vite/deps/chunk-SIU35MPB.js.map +0 -7
  33. package/example/react-demo/node_modules/.vite/deps/chunk-TOMGVNQP.js +0 -1906
  34. package/example/react-demo/node_modules/.vite/deps/chunk-TOMGVNQP.js.map +0 -7
  35. package/example/react-demo/node_modules/.vite/deps/chunk-YYN6DZAU.js +0 -21628
  36. package/example/react-demo/node_modules/.vite/deps/chunk-YYN6DZAU.js.map +0 -7
  37. package/example/react-demo/node_modules/.vite/deps/chunk-ZE5VSJFE.js +0 -144
  38. package/example/react-demo/node_modules/.vite/deps/chunk-ZE5VSJFE.js.map +0 -7
  39. package/example/react-demo/node_modules/.vite/deps/class-variance-authority.js +0 -51
  40. package/example/react-demo/node_modules/.vite/deps/class-variance-authority.js.map +0 -7
  41. package/example/react-demo/node_modules/.vite/deps/clsx.js +0 -10
  42. package/example/react-demo/node_modules/.vite/deps/clsx.js.map +0 -7
  43. package/example/react-demo/node_modules/.vite/deps/lucide-react.js +0 -29725
  44. package/example/react-demo/node_modules/.vite/deps/lucide-react.js.map +0 -7
  45. package/example/react-demo/node_modules/.vite/deps/package.json +0 -3
  46. package/example/react-demo/node_modules/.vite/deps/react-dom.js +0 -7
  47. package/example/react-demo/node_modules/.vite/deps/react-dom.js.map +0 -7
  48. package/example/react-demo/node_modules/.vite/deps/react-dom_client.js +0 -39
  49. package/example/react-demo/node_modules/.vite/deps/react-dom_client.js.map +0 -7
  50. package/example/react-demo/node_modules/.vite/deps/react.js +0 -6
  51. package/example/react-demo/node_modules/.vite/deps/react.js.map +0 -7
  52. package/example/react-demo/node_modules/.vite/deps/react_jsx-dev-runtime.js +0 -913
  53. package/example/react-demo/node_modules/.vite/deps/react_jsx-dev-runtime.js.map +0 -7
  54. package/example/react-demo/node_modules/.vite/deps/react_jsx-runtime.js +0 -7
  55. package/example/react-demo/node_modules/.vite/deps/react_jsx-runtime.js.map +0 -7
  56. package/example/react-demo/node_modules/.vite/deps/tailwind-merge.js +0 -2534
  57. package/example/react-demo/node_modules/.vite/deps/tailwind-merge.js.map +0 -7
  58. package/example/react-demo/package.json +0 -23
  59. package/example/react-demo/postcss.config.mjs +0 -6
  60. package/example/react-demo/src/App.tsx +0 -64
  61. package/example/react-demo/src/main.tsx +0 -10
  62. package/example/react-demo/src/styles.css +0 -102
  63. package/example/react-demo/tailwind.config.mjs +0 -50
  64. package/example/react-demo/tsconfig.json +0 -16
  65. package/example/react-demo/vite.config.ts +0 -14
  66. package/example/shared/defaultSchema.ts +0 -68
  67. package/example/vue-demo/index.html +0 -12
  68. package/example/vue-demo/node_modules/.bin/tsc +0 -17
  69. package/example/vue-demo/node_modules/.bin/tsserver +0 -17
  70. package/example/vue-demo/node_modules/.bin/vite +0 -17
  71. package/example/vue-demo/node_modules/.vite/deps/_metadata.json +0 -46
  72. package/example/vue-demo/node_modules/.vite/deps/chunk-PZ5AY32C.js +0 -10
  73. package/example/vue-demo/node_modules/.vite/deps/chunk-PZ5AY32C.js.map +0 -7
  74. package/example/vue-demo/node_modules/.vite/deps/chunk-TCXBSQ4M.js +0 -12877
  75. package/example/vue-demo/node_modules/.vite/deps/chunk-TCXBSQ4M.js.map +0 -7
  76. package/example/vue-demo/node_modules/.vite/deps/clsx.js +0 -22
  77. package/example/vue-demo/node_modules/.vite/deps/clsx.js.map +0 -7
  78. package/example/vue-demo/node_modules/.vite/deps/lucide-vue-next.js +0 -29720
  79. package/example/vue-demo/node_modules/.vite/deps/lucide-vue-next.js.map +0 -7
  80. package/example/vue-demo/node_modules/.vite/deps/package.json +0 -3
  81. package/example/vue-demo/node_modules/.vite/deps/radix-vue.js +0 -24321
  82. package/example/vue-demo/node_modules/.vite/deps/radix-vue.js.map +0 -7
  83. package/example/vue-demo/node_modules/.vite/deps/tailwind-merge.js +0 -2534
  84. package/example/vue-demo/node_modules/.vite/deps/tailwind-merge.js.map +0 -7
  85. package/example/vue-demo/node_modules/.vite/deps/vue.js +0 -348
  86. package/example/vue-demo/node_modules/.vite/deps/vue.js.map +0 -7
  87. package/example/vue-demo/package.json +0 -20
  88. package/example/vue-demo/postcss.config.mjs +0 -6
  89. package/example/vue-demo/src/App.vue +0 -61
  90. package/example/vue-demo/src/env.d.ts +0 -1
  91. package/example/vue-demo/src/main.ts +0 -5
  92. package/example/vue-demo/src/style.css +0 -102
  93. package/example/vue-demo/tailwind.config.mjs +0 -50
  94. package/example/vue-demo/tsconfig.json +0 -15
  95. package/example/vue-demo/vite.config.ts +0 -14
  96. package/packages/core/node_modules/.bin/api-extractor +0 -17
  97. package/packages/core/node_modules/.bin/esbuild +0 -14
  98. package/packages/core/node_modules/.bin/jiti +0 -17
  99. package/packages/core/node_modules/.bin/tsc +0 -17
  100. package/packages/core/node_modules/.bin/tsserver +0 -17
  101. package/packages/core/node_modules/.bin/tsup +0 -17
  102. package/packages/core/node_modules/.bin/tsup-node +0 -17
  103. package/packages/core/node_modules/.bin/vitest +0 -17
  104. package/packages/core/node_modules/.vite/vitest/results.json +0 -1
  105. package/packages/core/package.json +0 -37
  106. package/packages/core/src/formState.ts +0 -79
  107. package/packages/core/src/index.ts +0 -3
  108. package/packages/core/src/types.ts +0 -42
  109. package/packages/core/src/utils.ts +0 -104
  110. package/packages/core/test/formState.test.ts +0 -71
  111. package/packages/core/test/utils.test.ts +0 -178
  112. package/packages/core/tsconfig.json +0 -15
  113. package/packages/core/tsup.config.ts +0 -9
  114. package/packages/react/node_modules/.bin/api-extractor +0 -17
  115. package/packages/react/node_modules/.bin/browserslist +0 -17
  116. package/packages/react/node_modules/.bin/esbuild +0 -14
  117. package/packages/react/node_modules/.bin/jiti +0 -17
  118. package/packages/react/node_modules/.bin/tsc +0 -17
  119. package/packages/react/node_modules/.bin/tsserver +0 -17
  120. package/packages/react/node_modules/.bin/tsup +0 -17
  121. package/packages/react/node_modules/.bin/tsup-node +0 -17
  122. package/packages/react/node_modules/.bin/vite +0 -17
  123. package/packages/react/node_modules/.bin/vitest +0 -17
  124. package/packages/react/node_modules/.vite/vitest/results.json +0 -1
  125. package/packages/react/package.json +0 -57
  126. package/packages/react/postcss.config.mjs +0 -6
  127. package/packages/react/src/DynamicForm.tsx +0 -69
  128. package/packages/react/src/FormFieldRenderer.tsx +0 -50
  129. package/packages/react/src/components/Checkbox.tsx +0 -28
  130. package/packages/react/src/components/CheckboxRenderer.tsx +0 -37
  131. package/packages/react/src/components/Input.tsx +0 -24
  132. package/packages/react/src/components/InputRenderer.tsx +0 -25
  133. package/packages/react/src/components/Label.tsx +0 -24
  134. package/packages/react/src/components/RadioGroup.tsx +0 -42
  135. package/packages/react/src/components/RadioRenderer.tsx +0 -29
  136. package/packages/react/src/components/Select.tsx +0 -93
  137. package/packages/react/src/components/SelectRenderer.tsx +0 -27
  138. package/packages/react/src/components/Textarea.tsx +0 -23
  139. package/packages/react/src/components/TextareaRenderer.tsx +0 -17
  140. package/packages/react/src/components/index.ts +0 -55
  141. package/packages/react/src/components/types.ts +0 -17
  142. package/packages/react/src/index.tsx +0 -3
  143. package/packages/react/src/utils.ts +0 -7
  144. package/packages/react/tailwind.config.mjs +0 -10
  145. package/packages/react/test/DynamicForm.test.tsx +0 -25
  146. package/packages/react/test/FormFieldRenderer.test.tsx +0 -127
  147. package/packages/react/tsconfig.json +0 -15
  148. package/packages/react/vitest.config.ts +0 -16
  149. package/packages/vue/node_modules/.bin/rollup +0 -17
  150. package/packages/vue/node_modules/.bin/tsc +0 -17
  151. package/packages/vue/node_modules/.bin/tsserver +0 -17
  152. package/packages/vue/node_modules/.bin/vite +0 -17
  153. package/packages/vue/node_modules/.bin/vitest +0 -17
  154. package/packages/vue/node_modules/.bin/vue-tsc +0 -17
  155. package/packages/vue/node_modules/.vite/vitest/results.json +0 -1
  156. package/packages/vue/node_modules/.vue-global-types/vue_3.5_0_0_0.d.ts +0 -118
  157. package/packages/vue/node_modules/.vue-global-types/vue_3.5_false.d.ts +0 -128
  158. package/packages/vue/package.json +0 -53
  159. package/packages/vue/postcss.config.mjs +0 -6
  160. package/packages/vue/src/DynamicForm.vue +0 -63
  161. package/packages/vue/src/FormFieldRenderer.vue +0 -70
  162. package/packages/vue/src/components/Checkbox.vue +0 -28
  163. package/packages/vue/src/components/CheckboxRenderer.vue +0 -35
  164. package/packages/vue/src/components/Input.vue +0 -21
  165. package/packages/vue/src/components/InputRenderer.vue +0 -24
  166. package/packages/vue/src/components/Label.vue +0 -21
  167. package/packages/vue/src/components/RadioGroup.vue +0 -30
  168. package/packages/vue/src/components/RadioGroupItem.vue +0 -26
  169. package/packages/vue/src/components/RadioRenderer.vue +0 -24
  170. package/packages/vue/src/components/Select.vue +0 -40
  171. package/packages/vue/src/components/SelectContent.vue +0 -38
  172. package/packages/vue/src/components/SelectItem.vue +0 -43
  173. package/packages/vue/src/components/SelectRenderer.vue +0 -30
  174. package/packages/vue/src/components/SelectTrigger.vue +0 -27
  175. package/packages/vue/src/components/Textarea.vue +0 -19
  176. package/packages/vue/src/components/TextareaRenderer.vue +0 -18
  177. package/packages/vue/src/components/index.ts +0 -24
  178. package/packages/vue/src/env.d.ts +0 -7
  179. package/packages/vue/src/fieldComponentMap.ts +0 -34
  180. package/packages/vue/src/index.ts +0 -4
  181. package/packages/vue/src/utils.ts +0 -6
  182. package/packages/vue/tailwind.config.mjs +0 -10
  183. package/packages/vue/test/DynamicForm.test.ts +0 -19
  184. package/packages/vue/test/FormFieldRenderer.test.ts +0 -133
  185. package/packages/vue/tsconfig.json +0 -16
  186. package/packages/vue/vite.config.ts +0 -29
  187. package/packages/vue/vitest.config.ts +0 -16
  188. package/pnpm-workspace.yaml +0 -4
  189. package/tsconfig.json +0 -21
  190. package/turbo.json +0 -25
@@ -1,17 +0,0 @@
1
- #!/bin/sh
2
- basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
-
4
- case `uname` in
5
- *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
6
- esac
7
-
8
- if [ -z "$NODE_PATH" ]; then
9
- export NODE_PATH="/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/browserslist@4.28.1/node_modules/browserslist/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/browserslist@4.28.1/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/node_modules"
10
- else
11
- export NODE_PATH="/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/browserslist@4.28.1/node_modules/browserslist/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/browserslist@4.28.1/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/node_modules:$NODE_PATH"
12
- fi
13
- if [ -x "$basedir/node" ]; then
14
- exec "$basedir/node" "$basedir/../../../../node_modules/.pnpm/browserslist@4.28.1/node_modules/browserslist/cli.js" "$@"
15
- else
16
- exec node "$basedir/../../../../node_modules/.pnpm/browserslist@4.28.1/node_modules/browserslist/cli.js" "$@"
17
- fi
@@ -1,14 +0,0 @@
1
- #!/bin/sh
2
- basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
-
4
- case `uname` in
5
- *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
6
- esac
7
-
8
- if [ -z "$NODE_PATH" ]; then
9
- export NODE_PATH="/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/esbuild@0.27.3/node_modules/esbuild/bin/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/esbuild@0.27.3/node_modules/esbuild/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/esbuild@0.27.3/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/node_modules"
10
- else
11
- export NODE_PATH="/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/esbuild@0.27.3/node_modules/esbuild/bin/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/esbuild@0.27.3/node_modules/esbuild/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/esbuild@0.27.3/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/node_modules:$NODE_PATH"
12
- fi
13
- "$basedir/../../../../node_modules/.pnpm/esbuild@0.27.3/node_modules/esbuild/bin/esbuild" "$@"
14
- exit $?
@@ -1,17 +0,0 @@
1
- #!/bin/sh
2
- basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
-
4
- case `uname` in
5
- *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
6
- esac
7
-
8
- if [ -z "$NODE_PATH" ]; then
9
- export NODE_PATH="/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/jiti@1.21.7/node_modules/jiti/bin/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/jiti@1.21.7/node_modules/jiti/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/jiti@1.21.7/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/node_modules"
10
- else
11
- export NODE_PATH="/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/jiti@1.21.7/node_modules/jiti/bin/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/jiti@1.21.7/node_modules/jiti/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/jiti@1.21.7/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/node_modules:$NODE_PATH"
12
- fi
13
- if [ -x "$basedir/node" ]; then
14
- exec "$basedir/node" "$basedir/../../../../node_modules/.pnpm/jiti@1.21.7/node_modules/jiti/bin/jiti.js" "$@"
15
- else
16
- exec node "$basedir/../../../../node_modules/.pnpm/jiti@1.21.7/node_modules/jiti/bin/jiti.js" "$@"
17
- fi
@@ -1,17 +0,0 @@
1
- #!/bin/sh
2
- basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
-
4
- case `uname` in
5
- *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
6
- esac
7
-
8
- if [ -z "$NODE_PATH" ]; then
9
- export NODE_PATH="/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/typescript@5.9.3/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/node_modules"
10
- else
11
- export NODE_PATH="/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/typescript@5.9.3/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/node_modules:$NODE_PATH"
12
- fi
13
- if [ -x "$basedir/node" ]; then
14
- exec "$basedir/node" "$basedir/../typescript/bin/tsc" "$@"
15
- else
16
- exec node "$basedir/../typescript/bin/tsc" "$@"
17
- fi
@@ -1,17 +0,0 @@
1
- #!/bin/sh
2
- basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
-
4
- case `uname` in
5
- *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
6
- esac
7
-
8
- if [ -z "$NODE_PATH" ]; then
9
- export NODE_PATH="/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/typescript@5.9.3/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/node_modules"
10
- else
11
- export NODE_PATH="/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/typescript@5.9.3/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/node_modules:$NODE_PATH"
12
- fi
13
- if [ -x "$basedir/node" ]; then
14
- exec "$basedir/node" "$basedir/../typescript/bin/tsserver" "$@"
15
- else
16
- exec node "$basedir/../typescript/bin/tsserver" "$@"
17
- fi
@@ -1,17 +0,0 @@
1
- #!/bin/sh
2
- basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
-
4
- case `uname` in
5
- *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
6
- esac
7
-
8
- if [ -z "$NODE_PATH" ]; then
9
- export NODE_PATH="/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/tsup@8.5.1_@microsoft+api-extractor@7.57.6_@types+node@20.19.35__jiti@1.21.7_postcss@8.5.8_typescript@5.9.3/node_modules/tsup/dist/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/tsup@8.5.1_@microsoft+api-extractor@7.57.6_@types+node@20.19.35__jiti@1.21.7_postcss@8.5.8_typescript@5.9.3/node_modules/tsup/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/tsup@8.5.1_@microsoft+api-extractor@7.57.6_@types+node@20.19.35__jiti@1.21.7_postcss@8.5.8_typescript@5.9.3/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/node_modules"
10
- else
11
- export NODE_PATH="/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/tsup@8.5.1_@microsoft+api-extractor@7.57.6_@types+node@20.19.35__jiti@1.21.7_postcss@8.5.8_typescript@5.9.3/node_modules/tsup/dist/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/tsup@8.5.1_@microsoft+api-extractor@7.57.6_@types+node@20.19.35__jiti@1.21.7_postcss@8.5.8_typescript@5.9.3/node_modules/tsup/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/tsup@8.5.1_@microsoft+api-extractor@7.57.6_@types+node@20.19.35__jiti@1.21.7_postcss@8.5.8_typescript@5.9.3/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/node_modules:$NODE_PATH"
12
- fi
13
- if [ -x "$basedir/node" ]; then
14
- exec "$basedir/node" "$basedir/../tsup/dist/cli-default.js" "$@"
15
- else
16
- exec node "$basedir/../tsup/dist/cli-default.js" "$@"
17
- fi
@@ -1,17 +0,0 @@
1
- #!/bin/sh
2
- basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
-
4
- case `uname` in
5
- *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
6
- esac
7
-
8
- if [ -z "$NODE_PATH" ]; then
9
- export NODE_PATH="/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/tsup@8.5.1_@microsoft+api-extractor@7.57.6_@types+node@20.19.35__jiti@1.21.7_postcss@8.5.8_typescript@5.9.3/node_modules/tsup/dist/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/tsup@8.5.1_@microsoft+api-extractor@7.57.6_@types+node@20.19.35__jiti@1.21.7_postcss@8.5.8_typescript@5.9.3/node_modules/tsup/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/tsup@8.5.1_@microsoft+api-extractor@7.57.6_@types+node@20.19.35__jiti@1.21.7_postcss@8.5.8_typescript@5.9.3/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/node_modules"
10
- else
11
- export NODE_PATH="/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/tsup@8.5.1_@microsoft+api-extractor@7.57.6_@types+node@20.19.35__jiti@1.21.7_postcss@8.5.8_typescript@5.9.3/node_modules/tsup/dist/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/tsup@8.5.1_@microsoft+api-extractor@7.57.6_@types+node@20.19.35__jiti@1.21.7_postcss@8.5.8_typescript@5.9.3/node_modules/tsup/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/tsup@8.5.1_@microsoft+api-extractor@7.57.6_@types+node@20.19.35__jiti@1.21.7_postcss@8.5.8_typescript@5.9.3/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/node_modules:$NODE_PATH"
12
- fi
13
- if [ -x "$basedir/node" ]; then
14
- exec "$basedir/node" "$basedir/../tsup/dist/cli-node.js" "$@"
15
- else
16
- exec node "$basedir/../tsup/dist/cli-node.js" "$@"
17
- fi
@@ -1,17 +0,0 @@
1
- #!/bin/sh
2
- basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
-
4
- case `uname` in
5
- *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
6
- esac
7
-
8
- if [ -z "$NODE_PATH" ]; then
9
- export NODE_PATH="/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/vite@7.3.1_@types+node@20.19.35_jiti@1.21.7/node_modules/vite/bin/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/vite@7.3.1_@types+node@20.19.35_jiti@1.21.7/node_modules/vite/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/vite@7.3.1_@types+node@20.19.35_jiti@1.21.7/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/node_modules"
10
- else
11
- export NODE_PATH="/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/vite@7.3.1_@types+node@20.19.35_jiti@1.21.7/node_modules/vite/bin/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/vite@7.3.1_@types+node@20.19.35_jiti@1.21.7/node_modules/vite/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/vite@7.3.1_@types+node@20.19.35_jiti@1.21.7/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/node_modules:$NODE_PATH"
12
- fi
13
- if [ -x "$basedir/node" ]; then
14
- exec "$basedir/node" "$basedir/../../../../node_modules/.pnpm/vite@7.3.1_@types+node@20.19.35_jiti@1.21.7/node_modules/vite/bin/vite.js" "$@"
15
- else
16
- exec node "$basedir/../../../../node_modules/.pnpm/vite@7.3.1_@types+node@20.19.35_jiti@1.21.7/node_modules/vite/bin/vite.js" "$@"
17
- fi
@@ -1,17 +0,0 @@
1
- #!/bin/sh
2
- basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
-
4
- case `uname` in
5
- *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
6
- esac
7
-
8
- if [ -z "$NODE_PATH" ]; then
9
- export NODE_PATH="/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/vitest@1.6.1_@types+node@20.19.35_jsdom@22.1.0/node_modules/vitest/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/vitest@1.6.1_@types+node@20.19.35_jsdom@22.1.0/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/node_modules"
10
- else
11
- export NODE_PATH="/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/vitest@1.6.1_@types+node@20.19.35_jsdom@22.1.0/node_modules/vitest/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/vitest@1.6.1_@types+node@20.19.35_jsdom@22.1.0/node_modules:/Users/pidan/Work/Learn/dynamic-form/node_modules/.pnpm/node_modules:$NODE_PATH"
12
- fi
13
- if [ -x "$basedir/node" ]; then
14
- exec "$basedir/node" "$basedir/../vitest/vitest.mjs" "$@"
15
- else
16
- exec node "$basedir/../vitest/vitest.mjs" "$@"
17
- fi
@@ -1 +0,0 @@
1
- {"version":"1.6.1","results":[[":test/DynamicForm.test.tsx",{"duration":29,"failed":false}],[":test/FormFieldRenderer.test.tsx",{"duration":129,"failed":false}]]}
@@ -1,57 +0,0 @@
1
- {
2
- "name": "pdyform-react",
3
- "version": "1.0.0",
4
- "description": "React components for pdyform based on Shadcn UI.",
5
- "keywords": [
6
- "dynamic-form",
7
- "schema-form",
8
- "react",
9
- "shadcn"
10
- ],
11
- "type": "module",
12
- "main": "./dist/index.js",
13
- "module": "./dist/index.mjs",
14
- "types": "./dist/index.d.ts",
15
- "files": [
16
- "dist"
17
- ],
18
- "homepage": "https://github.com/LaoChen1994/pdyform",
19
- "repository": {
20
- "type": "git",
21
- "url": "https://github.com/LaoChen1994/pdyform"
22
- },
23
- "scripts": {
24
- "build": "tsup src/index.tsx --format cjs,esm --dts --clean --external react --external pdyform",
25
- "dev": "tsup src/index.tsx --format cjs,esm --watch --dts --external react --external pdyform",
26
- "test": "vitest run",
27
- "lint": "eslint src/**/*.{ts,tsx} --no-error-on-unmatched-pattern"
28
- },
29
- "dependencies": {
30
- "@radix-ui/react-checkbox": "^1.3.3",
31
- "@radix-ui/react-label": "^2.1.8",
32
- "@radix-ui/react-radio-group": "^1.3.8",
33
- "@radix-ui/react-select": "^2.2.6",
34
- "class-variance-authority": "^0.7.1",
35
- "clsx": "^2.1.1",
36
- "lucide-react": "^0.300.0",
37
- "pdyform": "workspace:*",
38
- "tailwind-merge": "^2.6.1"
39
- },
40
- "peerDependencies": {
41
- "react": "^18.0.0",
42
- "react-dom": "^18.0.0"
43
- },
44
- "devDependencies": {
45
- "@testing-library/jest-dom": "^6.9.1",
46
- "@testing-library/react": "^16.3.2",
47
- "@types/react": "^18.0.0",
48
- "@types/react-dom": "^18.0.0",
49
- "@vitejs/plugin-react": "^5.1.4",
50
- "jsdom": "^22.1.0",
51
- "react": "^18.0.0",
52
- "react-dom": "^18.0.0",
53
- "tsup": "^8.0.0",
54
- "typescript": "^5.0.0",
55
- "vitest": "^1.0.0"
56
- }
57
- }
@@ -1,6 +0,0 @@
1
- export default {
2
- plugins: {
3
- tailwindcss: {},
4
- autoprefixer: {},
5
- },
6
- }
@@ -1,69 +0,0 @@
1
- import React, { useState } from 'react';
2
- import {
3
- FormSchema,
4
- FormRuntimeState,
5
- createFormRuntimeState,
6
- applyFieldChange,
7
- applyFieldBlur,
8
- runSubmitValidation,
9
- setSubmitting,
10
- } from 'pdyform/core';
11
- import { FormFieldRenderer } from './FormFieldRenderer';
12
-
13
- interface DynamicFormProps {
14
- schema: FormSchema;
15
- onSubmit: (values: Record<string, any>) => void;
16
- className?: string;
17
- }
18
-
19
- export const DynamicForm: React.FC<DynamicFormProps> = ({ schema, onSubmit, className }) => {
20
- const [formState, setFormState] = useState<FormRuntimeState>(() => createFormRuntimeState(schema.fields));
21
-
22
- const handleFieldChange = (name: string, value: any) => {
23
- setFormState((prev) => applyFieldChange(schema.fields, prev, name, value));
24
- };
25
-
26
- const handleFieldBlur = (name: string) => {
27
- setFormState((prev) => applyFieldBlur(schema.fields, prev, name));
28
- };
29
-
30
- const handleSubmit = (e: React.FormEvent) => {
31
- e.preventDefault();
32
- const submittingState = setSubmitting(formState, true);
33
- const { state: validatedState, hasError } = runSubmitValidation(schema.fields, submittingState);
34
- setFormState(validatedState);
35
- if (!hasError) {
36
- onSubmit(validatedState.values);
37
- }
38
- };
39
-
40
- return (
41
- <form onSubmit={handleSubmit} className={`space-y-6 ${className || ''}`}>
42
- {schema.title && <h2 className="text-2xl font-bold tracking-tight">{schema.title}</h2>}
43
- {schema.description && <p className="text-muted-foreground">{schema.description}</p>}
44
-
45
- <div className="space-y-4">
46
- {schema.fields.map((field) => (
47
- !field.hidden && (
48
- <FormFieldRenderer
49
- key={field.name}
50
- field={field}
51
- value={formState.values[field.name]}
52
- onChange={(val) => handleFieldChange(field.name, val)}
53
- onBlur={() => handleFieldBlur(field.name)}
54
- error={formState.errors[field.name]}
55
- />
56
- )
57
- ))}
58
- </div>
59
-
60
- <button
61
- type="submit"
62
- disabled={formState.isSubmitting}
63
- className="inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 bg-primary text-primary-foreground hover:bg-primary/90 h-10 px-4 py-2 w-full"
64
- >
65
- {formState.isSubmitting ? 'Submitting...' : (schema.submitButtonText || 'Submit')}
66
- </button>
67
- </form>
68
- );
69
- };
@@ -1,50 +0,0 @@
1
- import React from 'react';
2
- import type { FormField } from 'pdyform/core';
3
- import { Label, defaultComponentMap, InputRenderer } from './components';
4
- import type { FieldComponentMap } from './components';
5
-
6
- export interface FormFieldRendererProps {
7
- field: FormField;
8
- value: any;
9
- onChange: (value: any) => void;
10
- onBlur?: () => void;
11
- error?: string;
12
- /**
13
- * Custom component map merged with the default map — external entries win.
14
- *
15
- * @example
16
- * ```tsx
17
- * import { defaultComponentMap } from 'pdyform-react';
18
- * const myMap = { ...defaultComponentMap, text: MyInput, rating: StarRating };
19
- * <FormFieldRenderer componentMap={myMap} ... />
20
- * ```
21
- */
22
- componentMap?: FieldComponentMap;
23
- }
24
-
25
- export const FormFieldRenderer: React.FC<FormFieldRendererProps> = ({
26
- field,
27
- value,
28
- onChange,
29
- onBlur,
30
- error,
31
- componentMap,
32
- }) => {
33
- const { label, description, name, type } = field;
34
- const fieldId = `field-${name}`;
35
-
36
- const resolvedMap: FieldComponentMap = componentMap
37
- ? { ...defaultComponentMap, ...componentMap }
38
- : defaultComponentMap;
39
-
40
- const FieldComponent = resolvedMap[type] ?? InputRenderer;
41
-
42
- return (
43
- <div className={`space-y-2 ${field.className || ''}`}>
44
- {label && <Label htmlFor={fieldId}>{label}</Label>}
45
- <FieldComponent field={field} value={value} onChange={onChange} onBlur={onBlur} fieldId={fieldId} />
46
- {description && <p className="text-[0.8rem] text-muted-foreground">{description}</p>}
47
- {error && <p className="text-[0.8rem] font-medium text-destructive">{error}</p>}
48
- </div>
49
- );
50
- };
@@ -1,28 +0,0 @@
1
- import * as React from "react"
2
- import * as CheckboxPrimitive from "@radix-ui/react-checkbox"
3
- import { Check } from "lucide-react"
4
-
5
- import { cn } from "../utils"
6
-
7
- const Checkbox = React.forwardRef<
8
- React.ElementRef<typeof CheckboxPrimitive.Root>,
9
- React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>
10
- >(({ className, ...props }, ref) => (
11
- <CheckboxPrimitive.Root
12
- ref={ref}
13
- className={cn(
14
- "peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",
15
- className
16
- )}
17
- {...props}
18
- >
19
- <CheckboxPrimitive.Indicator
20
- className={cn("flex items-center justify-center text-current")}
21
- >
22
- <Check className="h-4 w-4" />
23
- </CheckboxPrimitive.Indicator>
24
- </CheckboxPrimitive.Root>
25
- ))
26
- Checkbox.displayName = CheckboxPrimitive.Root.displayName
27
-
28
- export { Checkbox }
@@ -1,37 +0,0 @@
1
- import React from 'react';
2
- import type { FieldRenderContext } from './types';
3
- import { Checkbox } from './Checkbox';
4
- import { Label } from './Label';
5
-
6
- const CheckboxRenderer: React.FC<FieldRenderContext> = ({ field, value, onChange, onBlur }) => (
7
- <div className="flex flex-wrap gap-4">
8
- {field.options?.map((opt) => {
9
- const checked = Array.isArray(value) && value.includes(opt.value);
10
- return (
11
- <div key={opt.value} className="flex items-center space-x-2">
12
- <Checkbox
13
- id={`checkbox-${field.name}-${opt.value}`}
14
- checked={checked}
15
- disabled={field.disabled}
16
- onCheckedChange={(c) => {
17
- const next = Array.isArray(value) ? [...value] : [];
18
- if (c) {
19
- next.push(opt.value);
20
- } else {
21
- const idx = next.indexOf(opt.value);
22
- if (idx > -1) next.splice(idx, 1);
23
- }
24
- onChange(next);
25
- }}
26
- onBlur={onBlur}
27
- />
28
- <Label htmlFor={`checkbox-${field.name}-${opt.value}`} className="font-normal">
29
- {opt.label}
30
- </Label>
31
- </div>
32
- );
33
- })}
34
- </div>
35
- );
36
-
37
- export default CheckboxRenderer;
@@ -1,24 +0,0 @@
1
- import * as React from "react"
2
- import { cn } from "../utils"
3
-
4
- export interface InputProps
5
- extends React.InputHTMLAttributes<HTMLInputElement> {}
6
-
7
- const Input = React.forwardRef<HTMLInputElement, InputProps>(
8
- ({ className, type, ...props }, ref) => {
9
- return (
10
- <input
11
- type={type}
12
- className={cn(
13
- "flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
14
- className
15
- )}
16
- ref={ref}
17
- {...props}
18
- />
19
- )
20
- }
21
- )
22
- Input.displayName = "Input"
23
-
24
- export { Input }
@@ -1,25 +0,0 @@
1
- import React from 'react';
2
- import { normalizeFieldValue } from 'pdyform/core';
3
- import type { FieldRenderContext } from './types';
4
- import { Input } from './Input';
5
-
6
- const InputRenderer: React.FC<FieldRenderContext> = ({ field, value, onChange, onBlur, fieldId }) => {
7
- const handleChange = (nextValue: string) => {
8
- onChange(normalizeFieldValue(field, nextValue));
9
- };
10
-
11
- return (
12
- <Input
13
- id={fieldId}
14
- type={field.type}
15
- placeholder={field.placeholder}
16
- value={value ?? ''}
17
- onChange={(e) => handleChange(e.target.value)}
18
- onBlur={onBlur}
19
- disabled={field.disabled}
20
- name={field.name}
21
- />
22
- );
23
- };
24
-
25
- export default InputRenderer;
@@ -1,24 +0,0 @@
1
- import * as React from "react"
2
- import * as LabelPrimitive from "@radix-ui/react-label"
3
- import { cva, type VariantProps } from "class-variance-authority"
4
-
5
- import { cn } from "../utils"
6
-
7
- const labelVariants = cva(
8
- "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
9
- )
10
-
11
- const Label = React.forwardRef<
12
- React.ElementRef<typeof LabelPrimitive.Root>,
13
- React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &
14
- VariantProps<typeof labelVariants>
15
- >(({ className, ...props }, ref) => (
16
- <LabelPrimitive.Root
17
- ref={ref}
18
- className={cn(labelVariants(), className)}
19
- {...props}
20
- />
21
- ))
22
- Label.displayName = LabelPrimitive.Root.displayName
23
-
24
- export { Label }
@@ -1,42 +0,0 @@
1
- import * as React from "react"
2
- import * as RadioGroupPrimitive from "@radix-ui/react-radio-group"
3
- import { Circle } from "lucide-react"
4
-
5
- import { cn } from "../utils"
6
-
7
- const RadioGroup = React.forwardRef<
8
- React.ElementRef<typeof RadioGroupPrimitive.Root>,
9
- React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>
10
- >(({ className, ...props }, ref) => {
11
- return (
12
- <RadioGroupPrimitive.Root
13
- className={cn("grid gap-2", className)}
14
- {...props}
15
- ref={ref}
16
- />
17
- )
18
- })
19
- RadioGroup.displayName = RadioGroupPrimitive.Root.displayName
20
-
21
- const RadioGroupItem = React.forwardRef<
22
- React.ElementRef<typeof RadioGroupPrimitive.Item>,
23
- React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>
24
- >(({ className, ...props }, ref) => {
25
- return (
26
- <RadioGroupPrimitive.Item
27
- ref={ref}
28
- className={cn(
29
- "aspect-square h-4 w-4 rounded-full border border-primary text-primary ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
30
- className
31
- )}
32
- {...props}
33
- >
34
- <RadioGroupPrimitive.Indicator className="flex items-center justify-center">
35
- <Circle className="h-2.5 w-2.5 fill-current text-current" />
36
- </RadioGroupPrimitive.Indicator>
37
- </RadioGroupPrimitive.Item>
38
- )
39
- })
40
- RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName
41
-
42
- export { RadioGroup, RadioGroupItem }
@@ -1,29 +0,0 @@
1
- import React from 'react';
2
- import type { FieldRenderContext } from './types';
3
- import { RadioGroup, RadioGroupItem } from './RadioGroup';
4
- import { Label } from './Label';
5
-
6
- const RadioRenderer: React.FC<FieldRenderContext> = ({ field, value, onChange, onBlur }) => (
7
- <RadioGroup
8
- value={value != null ? String(value) : ''}
9
- onValueChange={onChange}
10
- disabled={field.disabled}
11
- name={field.name}
12
- className="flex flex-wrap gap-4"
13
- >
14
- {field.options?.map((opt) => (
15
- <div key={opt.value} className="flex items-center space-x-2">
16
- <RadioGroupItem
17
- value={String(opt.value)}
18
- id={`radio-${field.name}-${opt.value}`}
19
- onBlur={onBlur}
20
- />
21
- <Label htmlFor={`radio-${field.name}-${opt.value}`} className="font-normal">
22
- {opt.label}
23
- </Label>
24
- </div>
25
- ))}
26
- </RadioGroup>
27
- );
28
-
29
- export default RadioRenderer;