@dxos/react-ui-form 0.11.1 → 0.12.0-next-73daef452f1464b62efdbca75fb0067c1066f264

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 (155) hide show
  1. package/dist/lib/annotations.mjs +25 -0
  2. package/dist/lib/annotations.mjs.map +1 -0
  3. package/dist/lib/index.mjs +489 -401
  4. package/dist/lib/index.mjs.map +1 -1
  5. package/dist/types/src/annotations.d.ts +2 -2
  6. package/dist/types/src/annotations.d.ts.map +1 -1
  7. package/dist/types/src/components/FieldEditor/FieldEditor.stories.d.ts +6 -5
  8. package/dist/types/src/components/FieldEditor/FieldEditor.stories.d.ts.map +1 -1
  9. package/dist/types/src/components/Form/Card.stories.d.ts +6 -5
  10. package/dist/types/src/components/Form/Card.stories.d.ts.map +1 -1
  11. package/dist/types/src/components/Form/Form.d.ts +10 -34
  12. package/dist/types/src/components/Form/Form.d.ts.map +1 -1
  13. package/dist/types/src/components/Form/Form.stories.d.ts +34 -35
  14. package/dist/types/src/components/Form/Form.stories.d.ts.map +1 -1
  15. package/dist/types/src/components/Form/Form.theme.d.ts.map +1 -1
  16. package/dist/types/src/components/Form/FormControls.d.ts +16 -7
  17. package/dist/types/src/components/Form/FormControls.d.ts.map +1 -1
  18. package/dist/types/src/components/Form/FormField/FormField.d.ts +2 -2
  19. package/dist/types/src/components/Form/FormField/FormField.d.ts.map +1 -1
  20. package/dist/types/src/components/Form/FormField/FormRow.d.ts +5 -3
  21. package/dist/types/src/components/Form/FormField/FormRow.d.ts.map +1 -1
  22. package/dist/types/src/components/Form/FormField/fields/ArrayField/ArrayField.d.ts.map +1 -1
  23. package/dist/types/src/components/Form/FormField/fields/ArrayField/ArrayField.stories.d.ts +4 -4
  24. package/dist/types/src/components/Form/FormField/fields/ArrayField/ArrayField.stories.d.ts.map +1 -1
  25. package/dist/types/src/components/Form/FormField/fields/ArrayField/default-value.d.ts +1 -1
  26. package/dist/types/src/components/Form/FormField/fields/ArrayField/default-value.d.ts.map +1 -1
  27. package/dist/types/src/components/Form/FormField/fields/BooleanField/BooleanField.stories.d.ts +6 -5
  28. package/dist/types/src/components/Form/FormField/fields/BooleanField/BooleanField.stories.d.ts.map +1 -1
  29. package/dist/types/src/components/Form/FormField/fields/DateField/DateField.stories.d.ts +6 -5
  30. package/dist/types/src/components/Form/FormField/fields/DateField/DateField.stories.d.ts.map +1 -1
  31. package/dist/types/src/components/Form/FormField/fields/GeoPointField/GeoPointField.stories.d.ts +6 -5
  32. package/dist/types/src/components/Form/FormField/fields/GeoPointField/GeoPointField.stories.d.ts.map +1 -1
  33. package/dist/types/src/components/Form/FormField/fields/MarkdownField/MarkdownField.stories.d.ts +4 -4
  34. package/dist/types/src/components/Form/FormField/fields/NumberField/NumberField.stories.d.ts +6 -5
  35. package/dist/types/src/components/Form/FormField/fields/NumberField/NumberField.stories.d.ts.map +1 -1
  36. package/dist/types/src/components/Form/FormField/fields/NumberField/numeric-constraints.d.ts +6 -3
  37. package/dist/types/src/components/Form/FormField/fields/NumberField/numeric-constraints.d.ts.map +1 -1
  38. package/dist/types/src/components/Form/FormField/fields/PasswordField/PasswordField.stories.d.ts +6 -5
  39. package/dist/types/src/components/Form/FormField/fields/PasswordField/PasswordField.stories.d.ts.map +1 -1
  40. package/dist/types/src/components/Form/FormField/fields/RefField/RefField.d.ts.map +1 -1
  41. package/dist/types/src/components/Form/FormField/fields/RefField/RefField.stories.d.ts +8 -7
  42. package/dist/types/src/components/Form/FormField/fields/RefField/RefField.stories.d.ts.map +1 -1
  43. package/dist/types/src/components/Form/FormField/fields/SelectField/SelectField.stories.d.ts +6 -5
  44. package/dist/types/src/components/Form/FormField/fields/SelectField/SelectField.stories.d.ts.map +1 -1
  45. package/dist/types/src/components/Form/FormField/fields/SelectOptionField/SelectOptionField.stories.d.ts +6 -5
  46. package/dist/types/src/components/Form/FormField/fields/SelectOptionField/SelectOptionField.stories.d.ts.map +1 -1
  47. package/dist/types/src/components/Form/FormField/fields/TextAreaField/TextAreaField.stories.d.ts +6 -5
  48. package/dist/types/src/components/Form/FormField/fields/TextAreaField/TextAreaField.stories.d.ts.map +1 -1
  49. package/dist/types/src/components/Form/FormField/fields/TextField/TextField.stories.d.ts +6 -5
  50. package/dist/types/src/components/Form/FormField/fields/TextField/TextField.stories.d.ts.map +1 -1
  51. package/dist/types/src/components/Form/FormField/fields/TupleField/TupleField.stories.d.ts +6 -5
  52. package/dist/types/src/components/Form/FormField/fields/TupleField/TupleField.stories.d.ts.map +1 -1
  53. package/dist/types/src/components/Form/FormFieldSet/FormFieldSet.d.ts +3 -1
  54. package/dist/types/src/components/Form/FormFieldSet/FormFieldSet.d.ts.map +1 -1
  55. package/dist/types/src/components/Form/FormFieldSet/FormFieldSetContainer.d.ts.map +1 -1
  56. package/dist/types/src/components/Form/FormLayout/FormLayout.d.ts +3 -1
  57. package/dist/types/src/components/Form/FormLayout/FormLayout.d.ts.map +1 -1
  58. package/dist/types/src/components/Form/FormLayout/FormLayout.stories.d.ts +7 -6
  59. package/dist/types/src/components/Form/FormLayout/FormLayout.stories.d.ts.map +1 -1
  60. package/dist/types/src/components/Form/FormLayout/resolve-layout-field.d.ts +1 -1
  61. package/dist/types/src/components/Form/FormLayout/resolve-layout-field.d.ts.map +1 -1
  62. package/dist/types/src/components/Form/meta-tags.d.ts +35 -1
  63. package/dist/types/src/components/Form/meta-tags.d.ts.map +1 -1
  64. package/dist/types/src/components/ObjectForm/ObjectForm.d.ts +1 -1
  65. package/dist/types/src/components/ObjectForm/ObjectForm.d.ts.map +1 -1
  66. package/dist/types/src/components/ObjectForm/ObjectForm.stories.d.ts +6 -5
  67. package/dist/types/src/components/ObjectForm/ObjectForm.stories.d.ts.map +1 -1
  68. package/dist/types/src/components/ObjectPicker/ObjectPicker.d.ts +1 -1
  69. package/dist/types/src/components/ObjectPicker/ObjectPicker.d.ts.map +1 -1
  70. package/dist/types/src/components/ObjectPicker/ObjectPicker.stories.d.ts +6 -5
  71. package/dist/types/src/components/ObjectPicker/ObjectPicker.stories.d.ts.map +1 -1
  72. package/dist/types/src/components/ObjectProperties/ObjectProperties.d.ts.map +1 -1
  73. package/dist/types/src/components/ObjectProperties/ObjectProperties.stories.d.ts +4 -4
  74. package/dist/types/src/components/ObjectTree/ObjectTree.d.ts +1 -1
  75. package/dist/types/src/components/ObjectTree/ObjectTree.d.ts.map +1 -1
  76. package/dist/types/src/components/ObjectTree/ObjectTree.stories.d.ts +4 -4
  77. package/dist/types/src/components/ObjectTree/ObjectTree.stories.d.ts.map +1 -1
  78. package/dist/types/src/components/RefEditor/RefEditor.stories.d.ts +6 -5
  79. package/dist/types/src/components/RefEditor/RefEditor.stories.d.ts.map +1 -1
  80. package/dist/types/src/components/ViewEditor/ViewEditor.d.ts.map +1 -1
  81. package/dist/types/src/components/ViewEditor/ViewEditor.stories.d.ts +6 -5
  82. package/dist/types/src/components/ViewEditor/ViewEditor.stories.d.ts.map +1 -1
  83. package/dist/types/src/hooks/useFormContext.d.ts.map +1 -1
  84. package/dist/types/src/hooks/useFormHandler.d.ts +2 -3
  85. package/dist/types/src/hooks/useFormHandler.d.ts.map +1 -1
  86. package/dist/types/src/index.d.ts +1 -1
  87. package/dist/types/src/index.d.ts.map +1 -1
  88. package/dist/types/src/translations.d.ts +4 -4
  89. package/dist/types/src/translations.d.ts.map +1 -1
  90. package/dist/types/src/types.d.ts +4 -4
  91. package/dist/types/src/types.d.ts.map +1 -1
  92. package/dist/types/src/util/omit.d.ts +3 -3
  93. package/dist/types/src/util/omit.d.ts.map +1 -1
  94. package/dist/types/src/util/properties.d.ts +9 -2
  95. package/dist/types/src/util/properties.d.ts.map +1 -1
  96. package/dist/types/src/util/refs.d.ts +1 -1
  97. package/dist/types/src/util/refs.d.ts.map +1 -1
  98. package/dist/types/tsconfig.tsbuildinfo +1 -1
  99. package/package.json +42 -43
  100. package/src/annotations.ts +2 -2
  101. package/src/components/FieldEditor/FieldEditor.test.tsx +1 -1
  102. package/src/components/Form/Card.stories.tsx +3 -3
  103. package/src/components/Form/Form.stories.tsx +84 -90
  104. package/src/components/Form/Form.theme.test.ts +5 -0
  105. package/src/components/Form/Form.theme.ts +9 -3
  106. package/src/components/Form/FormControls.tsx +10 -5
  107. package/src/components/Form/FormField/FormField.tsx +22 -17
  108. package/src/components/Form/FormField/fields/ArrayField/ArrayField.stories.tsx +18 -16
  109. package/src/components/Form/FormField/fields/ArrayField/ArrayField.tsx +4 -7
  110. package/src/components/Form/FormField/fields/ArrayField/default-value.ts +10 -17
  111. package/src/components/Form/FormField/fields/BooleanField/BooleanField.stories.tsx +3 -2
  112. package/src/components/Form/FormField/fields/DateField/DateField.stories.tsx +5 -4
  113. package/src/components/Form/FormField/fields/GeoPointField/GeoPointField.stories.tsx +3 -2
  114. package/src/components/Form/FormField/fields/MarkdownField/MarkdownField.stories.tsx +3 -3
  115. package/src/components/Form/FormField/fields/MarkdownField/MarkdownField.tsx +1 -1
  116. package/src/components/Form/FormField/fields/NumberField/NumberField.stories.tsx +3 -2
  117. package/src/components/Form/FormField/fields/NumberField/NumberField.test.ts +9 -3
  118. package/src/components/Form/FormField/fields/NumberField/numeric-constraints.ts +46 -23
  119. package/src/components/Form/FormField/fields/PasswordField/PasswordField.stories.tsx +3 -2
  120. package/src/components/Form/FormField/fields/RefField/InlineRefField.tsx +1 -1
  121. package/src/components/Form/FormField/fields/RefField/RefField.stories.tsx +6 -5
  122. package/src/components/Form/FormField/fields/RefField/RefField.tsx +12 -3
  123. package/src/components/Form/FormField/fields/SelectField/SelectField.stories.tsx +3 -2
  124. package/src/components/Form/FormField/fields/SelectOptionField/SelectOptionField.stories.tsx +2 -1
  125. package/src/components/Form/FormField/fields/TextAreaField/TextAreaField.stories.tsx +3 -2
  126. package/src/components/Form/FormField/fields/TextField/TextField.stories.tsx +3 -2
  127. package/src/components/Form/FormField/fields/TupleField/TupleField.stories.tsx +3 -2
  128. package/src/components/Form/FormFieldSet/FormFieldSetContainer.tsx +7 -1
  129. package/src/components/Form/FormLayout/FormLayout.stories.test.tsx +13 -7
  130. package/src/components/Form/FormLayout/FormLayout.stories.tsx +20 -20
  131. package/src/components/Form/FormLayout/FormLayout.test.ts +5 -2
  132. package/src/components/Form/FormLayout/resolve-layout-field.ts +9 -8
  133. package/src/components/Form/meta-tags.test.ts +90 -10
  134. package/src/components/Form/meta-tags.ts +81 -5
  135. package/src/components/ObjectForm/ObjectForm.tsx +16 -9
  136. package/src/components/ObjectPicker/ObjectPicker.stories.tsx +3 -4
  137. package/src/components/ObjectPicker/ObjectPicker.tsx +5 -2
  138. package/src/components/ObjectProperties/ObjectProperties.test.tsx +1 -1
  139. package/src/components/ObjectProperties/ObjectProperties.tsx +16 -9
  140. package/src/components/ObjectTree/ObjectTree.stories.tsx +49 -20
  141. package/src/components/ObjectTree/ObjectTree.tsx +13 -18
  142. package/src/components/ViewEditor/ViewEditor.test.tsx +1 -1
  143. package/src/components/ViewEditor/ViewEditor.tsx +15 -11
  144. package/src/hooks/useAsyncFieldEffect.ts +1 -1
  145. package/src/hooks/useFormContext.ts +1 -2
  146. package/src/hooks/useFormHandler.test.ts +5 -6
  147. package/src/hooks/useFormHandler.ts +15 -9
  148. package/src/index.ts +1 -1
  149. package/src/testing/schema.ts +20 -20
  150. package/src/types.ts +4 -4
  151. package/src/util/omit.ts +15 -15
  152. package/src/util/properties.test.ts +12 -13
  153. package/src/util/properties.ts +31 -5
  154. package/src/util/refs.ts +1 -3
  155. package/src/vitest-setup.ts +21 -0
@@ -0,0 +1,25 @@
1
+ import { createAnnotationHelper } from "@dxos/echo/internal";
2
+ //#region src/annotations.ts
3
+ var OptionsLookupAnnotationId = "@dxos/schema/annotation/OptionsLookup";
4
+ var OptionsLookupAnnotation = createAnnotationHelper(OptionsLookupAnnotationId);
5
+ /**
6
+ * Builds an {@link OptionsLookup} typed against a schema's value type `Values`: `deps` is checked
7
+ * against its field names, and `load` receives only those fields, narrowed. Pass `{ combobox: true }` to
8
+ * render an editable combobox.
9
+ */
10
+ var optionsLookup = () => (deps, load, options) => ({
11
+ deps,
12
+ load,
13
+ combobox: options?.combobox
14
+ });
15
+ var AutofillAnnotationId = "@dxos/schema/annotation/Autofill";
16
+ var AutofillAnnotation = createAnnotationHelper(AutofillAnnotationId);
17
+ /** Builds an {@link Autofill} typed against a schema's value type `Values` (see {@link optionsLookup}). */
18
+ var autofill = () => (deps, derive) => ({
19
+ deps,
20
+ derive
21
+ });
22
+ //#endregion
23
+ export { AutofillAnnotation, AutofillAnnotationId, OptionsLookupAnnotation, OptionsLookupAnnotationId, autofill, optionsLookup };
24
+
25
+ //# sourceMappingURL=annotations.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotations.mjs","names":[],"sources":["../../src/annotations.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport type * as Effect from 'effect/Effect';\n\nimport { createAnnotationHelper } from '@dxos/echo/internal';\n\n/** One selectable option produced by an {@link OptionsLookup}. */\nexport type OptionsLookupEntry = { value: string; label?: string; secondaryLabel?: string; icon?: string };\n\n/**\n * Loads a select field's options dynamically from a declared subset of the form values, so a select can\n * depend on a sibling field (e.g. publications for a typed handle). `deps` are the field names the loader\n * reads; the form re-runs it only when one of those values changes. The returned Effect must be\n * self-contained (`R = never`): it provides its own dependencies (network layer, etc.) in the closure.\n * Construct via {@link optionsLookup} for typed `deps`/`values`. Pass `{ combobox: true }` to render\n * an editable combobox (type-to-search) instead of a constrained select.\n */\nexport type OptionsLookup = {\n readonly deps: readonly string[];\n readonly load: (values: any) => Effect.Effect<readonly OptionsLookupEntry[], unknown>;\n readonly combobox?: boolean;\n};\n\nexport const OptionsLookupAnnotationId = '@dxos/schema/annotation/OptionsLookup';\nexport const OptionsLookupAnnotation = createAnnotationHelper<OptionsLookup>(OptionsLookupAnnotationId);\n\n/**\n * Builds an {@link OptionsLookup} typed against a schema's value type `Values`: `deps` is checked\n * against its field names, and `load` receives only those fields, narrowed. Pass `{ combobox: true }` to\n * render an editable combobox.\n */\nexport const optionsLookup =\n <Values>() =>\n <const Deps extends readonly (keyof Values & string)[]>(\n deps: Deps,\n load: (values: Pick<Values, Deps[number]>) => Effect.Effect<readonly OptionsLookupEntry[], unknown>,\n options?: { combobox?: boolean },\n ): OptionsLookup => ({ deps, load, combobox: options?.combobox });\n\n/**\n * Derives a (text) field's value from a declared subset of the form values, so a field can be pre-filled\n * from a sibling (e.g. a feed name fetched from a typed URL). `deps` are the field names the derivation\n * reads; the form re-runs it only when one of those changes. The returned Effect must be self-contained\n * (`R = never`); `undefined` means \"no value to fill\". The form pre-fills only while the user has not\n * typed their own value, so a manual edit is never clobbered. Construct via {@link autofill}.\n */\nexport type Autofill = {\n readonly deps: readonly string[];\n readonly derive: (values: any) => Effect.Effect<string | undefined, unknown>;\n};\n\nexport const AutofillAnnotationId = '@dxos/schema/annotation/Autofill';\nexport const AutofillAnnotation = createAnnotationHelper<Autofill>(AutofillAnnotationId);\n\n/** Builds an {@link Autofill} typed against a schema's value type `Values` (see {@link optionsLookup}). */\nexport const autofill =\n <Values>() =>\n <const Deps extends readonly (keyof Values & string)[]>(\n deps: Deps,\n derive: (values: Pick<Values, Deps[number]>) => Effect.Effect<string | undefined, unknown>,\n ): Autofill => ({ deps, derive });\n"],"mappings":";;AAyBA,IAAa,4BAA4B;AACzC,IAAa,0BAA0B,uBAAsC,yBAAyB;;;;;;AAOtG,IAAa,uBAGT,MACA,MACA,aACmB;CAAE;CAAM;CAAM,UAAU,SAAS;AAAS;AAcjE,IAAa,uBAAuB;AACpC,IAAa,qBAAqB,uBAAiC,oBAAoB;;AAGvF,IAAa,kBAGT,MACA,YACc;CAAE;CAAM;AAAO"}