@wix/patterns-fields 1.71.0 → 1.73.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 (283) hide show
  1. package/dist/cjs/components/address/input/address-input.st.css.js +3 -3
  2. package/dist/cjs/components/address/input/address-input.st.css.js.map +1 -1
  3. package/dist/cjs/components/address/input/form-address-input.js +5 -16
  4. package/dist/cjs/components/address/input/form-address-input.js.map +1 -1
  5. package/dist/cjs/components/audio/actions/actions-menu/actions-menu.st.css.js +3 -3
  6. package/dist/cjs/components/audio/actions/actions-menu/actions-menu.st.css.js.map +1 -1
  7. package/dist/cjs/components/audio/audio-field/form-audio-field.js +14 -13
  8. package/dist/cjs/components/audio/audio-field/form-audio-field.js.map +1 -1
  9. package/dist/cjs/components/audio/audio-field/form-audio-field.st.css.js +4 -4
  10. package/dist/cjs/components/audio/audio-field/form-audio-field.st.css.js.map +1 -1
  11. package/dist/cjs/components/audio/audio-field/form-audio.js +6 -1
  12. package/dist/cjs/components/audio/audio-field/form-audio.js.map +1 -1
  13. package/dist/cjs/components/audio/audio-player/audio-player.st.css.js +2 -2
  14. package/dist/cjs/components/audio/audio-player/audio-player.st.css.js.map +1 -1
  15. package/dist/cjs/components/color-view/cell-color-view.st.css.js +3 -3
  16. package/dist/cjs/components/color-view/cell-color-view.st.css.js.map +1 -1
  17. package/dist/cjs/components/color-view/color-view.st.css.js +4 -4
  18. package/dist/cjs/components/color-view/color-view.st.css.js.map +1 -1
  19. package/dist/cjs/components/delete-dialog/delete-dialog.st.css.js +3 -3
  20. package/dist/cjs/components/delete-dialog/delete-dialog.st.css.js.map +1 -1
  21. package/dist/cjs/components/document/form-document-field.js +7 -6
  22. package/dist/cjs/components/document/form-document-field.js.map +1 -1
  23. package/dist/cjs/components/document/form-document-field.st.css.js +7 -7
  24. package/dist/cjs/components/document/form-document-field.st.css.js.map +1 -1
  25. package/dist/cjs/components/document/form-document.js +6 -1
  26. package/dist/cjs/components/document/form-document.js.map +1 -1
  27. package/dist/cjs/components/exclamation/exclamation.st.css.js +5 -5
  28. package/dist/cjs/components/exclamation/exclamation.st.css.js.map +1 -1
  29. package/dist/cjs/components/highlighted-text/highlighted-text.st.css.js +5 -5
  30. package/dist/cjs/components/highlighted-text/highlighted-text.st.css.js.map +1 -1
  31. package/dist/cjs/components/image/form-image-input.js +6 -1
  32. package/dist/cjs/components/image/form-image-input.js.map +1 -1
  33. package/dist/cjs/components/image/thumbnail-replace-overlay.st.css.js +3 -3
  34. package/dist/cjs/components/image/thumbnail-replace-overlay.st.css.js.map +1 -1
  35. package/dist/cjs/components/json-input/form-json-input.js +2 -1
  36. package/dist/cjs/components/json-input/form-json-input.js.map +1 -1
  37. package/dist/cjs/components/json-input/json-input.js +2 -1
  38. package/dist/cjs/components/json-input/json-input.js.map +1 -1
  39. package/dist/cjs/components/media-control/cell-media-edit-shell.st.css.js +2 -2
  40. package/dist/cjs/components/media-control/cell-media-edit-shell.st.css.js.map +1 -1
  41. package/dist/cjs/components/media-control/paste-url-button.st.css.js +4 -4
  42. package/dist/cjs/components/media-control/paste-url-button.st.css.js.map +1 -1
  43. package/dist/cjs/components/media-gallery/form-media-gallery-field.js +24 -21
  44. package/dist/cjs/components/media-gallery/form-media-gallery-field.js.map +1 -1
  45. package/dist/cjs/components/media-gallery/form-media-gallery-field.st.css.js +10 -10
  46. package/dist/cjs/components/media-gallery/form-media-gallery-field.st.css.js.map +1 -1
  47. package/dist/cjs/components/media-gallery/form-media-gallery.js +6 -1
  48. package/dist/cjs/components/media-gallery/form-media-gallery.js.map +1 -1
  49. package/dist/cjs/components/media-image/media-image.st.css.js +4 -4
  50. package/dist/cjs/components/media-image/media-image.st.css.js.map +1 -1
  51. package/dist/cjs/components/media-image/overlays/overlay.st.css.js +3 -3
  52. package/dist/cjs/components/media-image/overlays/overlay.st.css.js.map +1 -1
  53. package/dist/cjs/components/media-loader/media-loader.st.css.js +3 -3
  54. package/dist/cjs/components/media-loader/media-loader.st.css.js.map +1 -1
  55. package/dist/cjs/components/media-tag/web-media-tag/media-tag.st.css.js +2 -2
  56. package/dist/cjs/components/media-tag/web-media-tag/media-tag.st.css.js.map +1 -1
  57. package/dist/cjs/components/multi-document/cell-multi-document-edit.st.css.js +3 -3
  58. package/dist/cjs/components/multi-document/cell-multi-document-edit.st.css.js.map +1 -1
  59. package/dist/cjs/components/multi-document/multi-document-input/form-multi-document-field.js +7 -6
  60. package/dist/cjs/components/multi-document/multi-document-input/form-multi-document-field.js.map +1 -1
  61. package/dist/cjs/components/multi-document/multi-document-input/form-multi-document.js +6 -1
  62. package/dist/cjs/components/multi-document/multi-document-input/form-multi-document.js.map +1 -1
  63. package/dist/cjs/components/multi-document/multi-document-input/form-multi-document.st.css.js +5 -5
  64. package/dist/cjs/components/multi-document/multi-document-input/form-multi-document.st.css.js.map +1 -1
  65. package/dist/cjs/components/object/cell-json-input.js +2 -1
  66. package/dist/cjs/components/object/cell-json-input.js.map +1 -1
  67. package/dist/cjs/components/reference/cell-multi-reference-input.st.css.js +2 -2
  68. package/dist/cjs/components/reference/cell-multi-reference-input.st.css.js.map +1 -1
  69. package/dist/cjs/components/reference/cell-reference-input.st.css.js +3 -3
  70. package/dist/cjs/components/reference/cell-reference-input.st.css.js.map +1 -1
  71. package/dist/cjs/components/rich-content/form-rich-content.js +20 -5
  72. package/dist/cjs/components/rich-content/form-rich-content.js.map +1 -1
  73. package/dist/cjs/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.js +4 -4
  74. package/dist/cjs/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.js.map +1 -1
  75. package/dist/cjs/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js +3 -3
  76. package/dist/cjs/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js.map +1 -1
  77. package/dist/cjs/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.js +2 -2
  78. package/dist/cjs/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.js.map +1 -1
  79. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js +3 -3
  80. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js.map +1 -1
  81. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js +3 -3
  82. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js.map +1 -1
  83. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js +2 -2
  84. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js.map +1 -1
  85. package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js +7 -7
  86. package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js.map +1 -1
  87. package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js +5 -5
  88. package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js.map +1 -1
  89. package/dist/cjs/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js +4 -4
  90. package/dist/cjs/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js.map +1 -1
  91. package/dist/cjs/components/rich-text/form-rich-text.js +18 -5
  92. package/dist/cjs/components/rich-text/form-rich-text.js.map +1 -1
  93. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js +18 -18
  94. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js.map +1 -1
  95. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js +4 -4
  96. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js.map +1 -1
  97. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.js +18 -18
  98. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.js.map +1 -1
  99. package/dist/cjs/components/text/text-view.st.css.js +3 -3
  100. package/dist/cjs/components/text/text-view.st.css.js.map +1 -1
  101. package/dist/cjs/hooks/index.js +12 -0
  102. package/dist/cjs/hooks/index.js.map +1 -1
  103. package/dist/cjs/hooks/use-merged-ref.js +27 -0
  104. package/dist/cjs/hooks/use-merged-ref.js.map +1 -0
  105. package/dist/cjs/hooks/use-scroll-to-error-ref.js +34 -0
  106. package/dist/cjs/hooks/use-scroll-to-error-ref.js.map +1 -0
  107. package/dist/cjs/styles.global.css +1 -1
  108. package/dist/esm/components/address/input/address-input.st.css.js +2 -2
  109. package/dist/esm/components/address/input/address-input.st.css.js.map +1 -1
  110. package/dist/esm/components/address/input/form-address-input.js +4 -15
  111. package/dist/esm/components/address/input/form-address-input.js.map +1 -1
  112. package/dist/esm/components/audio/actions/actions-menu/actions-menu.st.css.js +2 -2
  113. package/dist/esm/components/audio/audio-field/form-audio-field.js +4 -4
  114. package/dist/esm/components/audio/audio-field/form-audio-field.js.map +1 -1
  115. package/dist/esm/components/audio/audio-field/form-audio-field.st.css.js +2 -2
  116. package/dist/esm/components/audio/audio-field/form-audio-field.st.css.js.map +1 -1
  117. package/dist/esm/components/audio/audio-field/form-audio.js +9 -1
  118. package/dist/esm/components/audio/audio-field/form-audio.js.map +1 -1
  119. package/dist/esm/components/audio/audio-player/audio-player.st.css.js +2 -2
  120. package/dist/esm/components/color-view/cell-color-view.st.css.js +2 -2
  121. package/dist/esm/components/color-view/cell-color-view.st.css.js.map +1 -1
  122. package/dist/esm/components/color-view/color-view.st.css.js +2 -2
  123. package/dist/esm/components/delete-dialog/delete-dialog.st.css.js +2 -2
  124. package/dist/esm/components/document/form-document-field.js +4 -4
  125. package/dist/esm/components/document/form-document-field.js.map +1 -1
  126. package/dist/esm/components/document/form-document-field.st.css.js +2 -2
  127. package/dist/esm/components/document/form-document.js +9 -1
  128. package/dist/esm/components/document/form-document.js.map +1 -1
  129. package/dist/esm/components/exclamation/exclamation.st.css.js +2 -2
  130. package/dist/esm/components/highlighted-text/highlighted-text.st.css.js +3 -3
  131. package/dist/esm/components/highlighted-text/highlighted-text.st.css.js.map +1 -1
  132. package/dist/esm/components/image/form-image-input.js +9 -1
  133. package/dist/esm/components/image/form-image-input.js.map +1 -1
  134. package/dist/esm/components/image/thumbnail-replace-overlay.st.css.js +2 -2
  135. package/dist/esm/components/json-input/form-json-input.js +1 -0
  136. package/dist/esm/components/json-input/form-json-input.js.map +1 -1
  137. package/dist/esm/components/json-input/json-input.js +1 -0
  138. package/dist/esm/components/json-input/json-input.js.map +1 -1
  139. package/dist/esm/components/media-control/cell-media-edit-shell.st.css.js +2 -2
  140. package/dist/esm/components/media-control/paste-url-button.st.css.js +2 -2
  141. package/dist/esm/components/media-gallery/form-media-gallery-field.js +7 -5
  142. package/dist/esm/components/media-gallery/form-media-gallery-field.js.map +1 -1
  143. package/dist/esm/components/media-gallery/form-media-gallery-field.st.css.js +2 -2
  144. package/dist/esm/components/media-gallery/form-media-gallery.js +9 -1
  145. package/dist/esm/components/media-gallery/form-media-gallery.js.map +1 -1
  146. package/dist/esm/components/media-image/media-image.st.css.js +3 -3
  147. package/dist/esm/components/media-image/media-image.st.css.js.map +1 -1
  148. package/dist/esm/components/media-image/overlays/overlay.st.css.js +2 -2
  149. package/dist/esm/components/media-image/overlays/overlay.st.css.js.map +1 -1
  150. package/dist/esm/components/media-loader/media-loader.st.css.js +2 -2
  151. package/dist/esm/components/media-tag/web-media-tag/media-tag.st.css.js +2 -2
  152. package/dist/esm/components/multi-document/cell-multi-document-edit.st.css.js +2 -2
  153. package/dist/esm/components/multi-document/cell-multi-document-edit.st.css.js.map +1 -1
  154. package/dist/esm/components/multi-document/multi-document-input/form-multi-document-field.js +4 -4
  155. package/dist/esm/components/multi-document/multi-document-input/form-multi-document-field.js.map +1 -1
  156. package/dist/esm/components/multi-document/multi-document-input/form-multi-document.js +9 -1
  157. package/dist/esm/components/multi-document/multi-document-input/form-multi-document.js.map +1 -1
  158. package/dist/esm/components/multi-document/multi-document-input/form-multi-document.st.css.js +2 -2
  159. package/dist/esm/components/multi-document/multi-document-input/form-multi-document.st.css.js.map +1 -1
  160. package/dist/esm/components/object/cell-json-input.js +1 -0
  161. package/dist/esm/components/object/cell-json-input.js.map +1 -1
  162. package/dist/esm/components/reference/cell-multi-reference-input.st.css.js +2 -2
  163. package/dist/esm/components/reference/cell-reference-input.st.css.js +2 -2
  164. package/dist/esm/components/rich-content/form-rich-content.js +8 -3
  165. package/dist/esm/components/rich-content/form-rich-content.js.map +1 -1
  166. package/dist/esm/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.js +2 -2
  167. package/dist/esm/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js +2 -2
  168. package/dist/esm/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.js +2 -2
  169. package/dist/esm/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js +2 -2
  170. package/dist/esm/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js +2 -2
  171. package/dist/esm/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js +2 -2
  172. package/dist/esm/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js +2 -2
  173. package/dist/esm/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js +2 -2
  174. package/dist/esm/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js +2 -2
  175. package/dist/esm/components/rich-text/form-rich-text.js +7 -3
  176. package/dist/esm/components/rich-text/form-rich-text.js.map +1 -1
  177. package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js +2 -2
  178. package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js +2 -2
  179. package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js.map +1 -1
  180. package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.js +2 -2
  181. package/dist/esm/components/text/text-view.st.css.js +2 -2
  182. package/dist/esm/hooks/index.js +2 -0
  183. package/dist/esm/hooks/index.js.map +1 -1
  184. package/dist/esm/hooks/use-merged-ref.js +23 -0
  185. package/dist/esm/hooks/use-merged-ref.js.map +1 -0
  186. package/dist/esm/hooks/use-scroll-to-error-ref.js +26 -0
  187. package/dist/esm/hooks/use-scroll-to-error-ref.js.map +1 -0
  188. package/dist/esm/styles.global.css +1 -1
  189. package/dist/types/components/address/input/address-input.st.css.d.ts.map +1 -1
  190. package/dist/types/components/address/input/form-address-input.d.ts.map +1 -1
  191. package/dist/types/components/audio/audio-field/form-audio-field.d.ts.map +1 -1
  192. package/dist/types/components/audio/audio-field/form-audio-field.st.css.d.ts.map +1 -1
  193. package/dist/types/components/audio/audio-field/form-audio.d.ts.map +1 -1
  194. package/dist/types/components/color-view/cell-color-view.st.css.d.ts.map +1 -1
  195. package/dist/types/components/document/form-document-field.d.ts.map +1 -1
  196. package/dist/types/components/document/form-document.d.ts.map +1 -1
  197. package/dist/types/components/highlighted-text/highlighted-text.st.css.d.ts.map +1 -1
  198. package/dist/types/components/image/form-image-input.d.ts.map +1 -1
  199. package/dist/types/components/json-input/form-json-input.d.ts +1 -1
  200. package/dist/types/components/json-input/form-json-input.d.ts.map +1 -1
  201. package/dist/types/components/json-input/json-input.d.ts.map +1 -1
  202. package/dist/types/components/media-gallery/form-media-gallery-field.d.ts +3 -0
  203. package/dist/types/components/media-gallery/form-media-gallery-field.d.ts.map +1 -1
  204. package/dist/types/components/media-gallery/form-media-gallery.d.ts.map +1 -1
  205. package/dist/types/components/media-image/media-image.st.css.d.ts.map +1 -1
  206. package/dist/types/components/media-image/overlays/overlay.st.css.d.ts.map +1 -1
  207. package/dist/types/components/multi-document/cell-multi-document-edit.st.css.d.ts.map +1 -1
  208. package/dist/types/components/multi-document/multi-document-input/form-multi-document-field.d.ts.map +1 -1
  209. package/dist/types/components/multi-document/multi-document-input/form-multi-document.d.ts.map +1 -1
  210. package/dist/types/components/multi-document/multi-document-input/form-multi-document.st.css.d.ts.map +1 -1
  211. package/dist/types/components/object/cell-json-input.d.ts.map +1 -1
  212. package/dist/types/components/rich-content/form-rich-content.d.ts.map +1 -1
  213. package/dist/types/components/rich-text/form-rich-text.d.ts.map +1 -1
  214. package/dist/types/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.d.ts.map +1 -1
  215. package/dist/types/hooks/index.d.ts +2 -0
  216. package/dist/types/hooks/index.d.ts.map +1 -1
  217. package/dist/types/hooks/use-merged-ref.d.ts +11 -0
  218. package/dist/types/hooks/use-merged-ref.d.ts.map +1 -0
  219. package/dist/types/hooks/use-scroll-to-error-ref.d.ts +14 -0
  220. package/dist/types/hooks/use-scroll-to-error-ref.d.ts.map +1 -0
  221. package/package.json +7 -7
  222. package/src/__tests__/components/audio/form-audio.spec.tsx +22 -0
  223. package/src/__tests__/components/document/form-document.spec.tsx +22 -0
  224. package/src/__tests__/components/form-multi-document-field.spec.tsx +0 -8
  225. package/src/__tests__/components/image/form-image-input.spec.tsx +22 -0
  226. package/src/__tests__/components/media-gallery/form-media-gallery.spec.tsx +21 -0
  227. package/src/__tests__/components/multi-document/form-multi-document.spec.tsx +21 -0
  228. package/src/__tests__/components/rich-content/form-rich-content.spec.tsx +22 -0
  229. package/src/__tests__/components/rich-text/form-rich-text.spec.tsx +18 -0
  230. package/src/components/address/input/address-input.st.css.ts +2 -2
  231. package/src/components/address/input/form-address-input.tsx +5 -20
  232. package/src/components/audio/actions/actions-menu/actions-menu.st.css.ts +2 -2
  233. package/src/components/audio/audio-field/form-audio-field.st.css.ts +2 -2
  234. package/src/components/audio/audio-field/form-audio-field.tsx +4 -3
  235. package/src/components/audio/audio-field/form-audio.tsx +4 -0
  236. package/src/components/audio/audio-player/audio-player.st.css.ts +2 -2
  237. package/src/components/color-view/cell-color-view.st.css.ts +2 -2
  238. package/src/components/color-view/color-view.st.css.ts +2 -2
  239. package/src/components/delete-dialog/delete-dialog.st.css.ts +2 -2
  240. package/src/components/document/form-document-field.st.css.ts +2 -2
  241. package/src/components/document/form-document-field.tsx +4 -3
  242. package/src/components/document/form-document.tsx +4 -0
  243. package/src/components/exclamation/exclamation.st.css.ts +2 -2
  244. package/src/components/highlighted-text/highlighted-text.st.css.ts +3 -3
  245. package/src/components/image/form-image-input.tsx +4 -0
  246. package/src/components/image/thumbnail-replace-overlay.st.css.ts +2 -2
  247. package/src/components/json-input/form-json-input.tsx +4 -1
  248. package/src/components/json-input/json-input.tsx +4 -1
  249. package/src/components/media-control/cell-media-edit-shell.st.css.ts +2 -2
  250. package/src/components/media-control/paste-url-button.st.css.ts +2 -2
  251. package/src/components/media-gallery/form-media-gallery-field.st.css.ts +2 -2
  252. package/src/components/media-gallery/form-media-gallery-field.tsx +9 -4
  253. package/src/components/media-gallery/form-media-gallery.tsx +4 -0
  254. package/src/components/media-image/media-image.st.css.ts +3 -3
  255. package/src/components/media-image/overlays/overlay.st.css.ts +2 -2
  256. package/src/components/media-loader/media-loader.st.css.ts +2 -2
  257. package/src/components/media-tag/web-media-tag/media-tag.st.css.ts +2 -2
  258. package/src/components/multi-document/cell-multi-document-edit.st.css.ts +2 -2
  259. package/src/components/multi-document/multi-document-input/form-multi-document-field.tsx +4 -3
  260. package/src/components/multi-document/multi-document-input/form-multi-document.st.css.ts +2 -2
  261. package/src/components/multi-document/multi-document-input/form-multi-document.tsx +4 -0
  262. package/src/components/object/cell-json-input.tsx +4 -1
  263. package/src/components/reference/cell-multi-reference-input.st.css.ts +2 -2
  264. package/src/components/reference/cell-reference-input.st.css.ts +2 -2
  265. package/src/components/rich-content/form-rich-content.tsx +24 -14
  266. package/src/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.ts +2 -2
  267. package/src/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.ts +2 -2
  268. package/src/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.ts +2 -2
  269. package/src/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.ts +2 -2
  270. package/src/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.ts +2 -2
  271. package/src/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.ts +2 -2
  272. package/src/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.ts +2 -2
  273. package/src/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.ts +2 -2
  274. package/src/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.ts +2 -2
  275. package/src/components/rich-text/form-rich-text.tsx +18 -9
  276. package/src/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.ts +2 -2
  277. package/src/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.ts +2 -2
  278. package/src/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.ts +2 -2
  279. package/src/components/text/text-view.st.css.ts +2 -2
  280. package/src/hooks/index.ts +2 -0
  281. package/src/hooks/use-merged-ref.ts +30 -0
  282. package/src/hooks/use-scroll-to-error-ref.ts +34 -0
  283. package/src/styles.global.css +1 -1
@@ -63,6 +63,10 @@ const _FormImageInput = (props: FormImageInputProps) => {
63
63
  >
64
64
  <Box width="100%" maxWidth={MEDIA_MAX_WIDTH}>
65
65
  <ImageViewer
66
+ // ImageViewer keeps its focus node on whichever button is live, so
67
+ // one ref serves both the empty and filled states. Lets
68
+ // react-hook-form's shouldFocusError reach this field.
69
+ ref={controller.field.ref}
66
70
  imageUrl={imageUrl}
67
71
  dataHook={`image-${field.id}`}
68
72
  onAddImage={isMobile ? undefined : () => openMedia()}
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "thumbnailreplaceoverlay1764449080";
8
+ var _namespace_ = "thumbnailreplaceoverlay1250295104";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"thumbnailreplaceoverlay1764449080__root","icon":"thumbnailreplaceoverlay1764449080__icon"};
16
+ export var classes = {"root":"thumbnailreplaceoverlay1250295104__root","icon":"thumbnailreplaceoverlay1250295104__icon"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -8,7 +8,10 @@ import { useAutoFocus } from '../../hooks';
8
8
 
9
9
  export type FormJsonInputProps = FormInputProps<any> & JsonInputProps;
10
10
 
11
- export const FormJsonInput = React.forwardRef<InputArea, FormJsonInputProps>(
11
+ // Explicit type without it, .d.ts emit inlines WDS's internal class (TS4094).
12
+ export const FormJsonInput: React.ForwardRefExoticComponent<
13
+ FormJsonInputProps & React.RefAttributes<InputArea>
14
+ > = React.forwardRef<InputArea, FormJsonInputProps>(
12
15
  ({ data, onChange, onInput, autoFocus, readOnly, dataHook }, ref) => {
13
16
  const inputRef = useRef<InputArea | null>(null);
14
17
  useAutoFocus(inputRef, autoFocus);
@@ -12,7 +12,10 @@ export interface JsonInputProps
12
12
  onInput?: () => void;
13
13
  }
14
14
 
15
- export const JsonInput = forwardRef<InputArea, JsonInputProps>(
15
+ // Explicit type without it, .d.ts emit inlines WDS's internal class (TS4094).
16
+ export const JsonInput: React.ForwardRefExoticComponent<
17
+ JsonInputProps & React.RefAttributes<InputArea>
18
+ > = forwardRef<InputArea, JsonInputProps>(
16
19
  ({ value, onChange, onInput, onBlur, readOnly, disabled, ...props }, ref) => {
17
20
  const [json, setJson] = useControlledInput(safeStringify(value, true));
18
21
  const onJsonChange = useCallback(
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "cellmediaeditshell679088465";
8
+ var _namespace_ = "cellmediaeditshell222630220";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"cellmediaeditshell679088465__root"};
16
+ export var classes = {"root":"cellmediaeditshell222630220__root"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "pasteurlbutton277900972";
8
+ var _namespace_ = "pasteurlbutton285657028";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"pasteurlbutton277900972__root","iconButtonTooltip":"pasteurlbutton277900972__iconButtonTooltip","iconButton":"pasteurlbutton277900972__iconButton"};
16
+ export var classes = {"root":"pasteurlbutton285657028__root","iconButtonTooltip":"pasteurlbutton285657028__iconButtonTooltip","iconButton":"pasteurlbutton285657028__iconButton"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "formmediagalleryfield1468350743";
8
+ var _namespace_ = "formmediagalleryfield2943984590";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"formmediagalleryfield1468350743__root","container":"formmediagalleryfield1468350743__container","viewBox":"formmediagalleryfield1468350743__viewBox","addItemWrapper":"formmediagalleryfield1468350743__addItemWrapper","addItem":"formmediagalleryfield1468350743__addItem","overlay":"formmediagalleryfield1468350743__overlay","image":"formmediagalleryfield1468350743__image","previewImage":"formmediagalleryfield1468350743__previewImage","previewVideo":"formmediagalleryfield1468350743__previewVideo"};
16
+ export var classes = {"root":"formmediagalleryfield2943984590__root","container":"formmediagalleryfield2943984590__container","viewBox":"formmediagalleryfield2943984590__viewBox","addItemWrapper":"formmediagalleryfield2943984590__addItemWrapper","addItem":"formmediagalleryfield2943984590__addItem","overlay":"formmediagalleryfield2943984590__overlay","image":"formmediagalleryfield2943984590__image","previewImage":"formmediagalleryfield2943984590__previewImage","previewVideo":"formmediagalleryfield2943984590__previewVideo"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -14,7 +14,7 @@ import {
14
14
  Maximize as MaximizeIcon,
15
15
  } from '@wix/wix-ui-icons-common/lazy';
16
16
  import type { WixCodeGalleryItem } from '../../auto-field-types';
17
- import { useTranslations } from '../../hooks';
17
+ import { useMergedRef, useTranslations } from '../../hooks';
18
18
  import { executeDownloading } from '../../utils/media-utils';
19
19
  import { getMediaURL } from '../../auto-field-types';
20
20
  import { files } from '@wix/media';
@@ -33,6 +33,8 @@ export interface FormMediaGalleryFieldProps {
33
33
  invalid?: boolean;
34
34
  autoFocus?: boolean;
35
35
  dataHook?: string;
36
+ /** Caller's ref to the add button, filled alongside the internal one. */
37
+ inputRef?: React.Ref<AddItemActions>;
36
38
  }
37
39
 
38
40
  const mediaGalleryPreviewTextKeys = {
@@ -49,10 +51,11 @@ export const FormMediaGalleryField: React.FC<FormMediaGalleryFieldProps> = ({
49
51
  invalid,
50
52
  autoFocus,
51
53
  dataHook,
54
+ inputRef: forwardedRef,
52
55
  }) => {
53
56
  const { t } = useTranslations();
54
57
  const boxRef = useRef<HTMLDivElement>(null);
55
- const inputRef = useRef<AddItemActions>(null);
58
+ const [inputRef, setInputRef] = useMergedRef<AddItemActions>(forwardedRef);
56
59
  const [boxWidth, setBoxWidth] = useState(0);
57
60
  const [hovered, setHovered] = useState(false);
58
61
  const [isPreviewOpen, setIsPreviewOpen] = useState(false);
@@ -66,7 +69,9 @@ export const FormMediaGalleryField: React.FC<FormMediaGalleryFieldProps> = ({
66
69
  }
67
70
  boxRef.current?.focus();
68
71
  inputRef.current?.focus();
69
- }, [autoFocus]);
72
+ // inputRef comes from useMergedRef and is stable, but eslint only knows
73
+ // that about a bare useRef.
74
+ }, [autoFocus, inputRef]);
70
75
 
71
76
  // Responsive width tracking
72
77
  useEffect(() => {
@@ -137,7 +142,7 @@ export const FormMediaGalleryField: React.FC<FormMediaGalleryFieldProps> = ({
137
142
  {!hasValue ? (
138
143
  <div className={classes.addItemWrapper}>
139
144
  <AddItem
140
- ref={inputRef}
145
+ ref={setInputRef}
141
146
  className={style(classes.addItem, { error: invalid })}
142
147
  size="tiny"
143
148
  theme="dashes"
@@ -40,6 +40,10 @@ const _FormMediaGallery = (props: FormMediaGalleryProps) => {
40
40
  dataHook={dataHook}
41
41
  >
42
42
  <FormMediaGalleryField
43
+ // Hand the add button to react-hook-form so
44
+ // shouldFocusError scrolls to + focuses this field when it
45
+ // blocks save.
46
+ inputRef={controller.field.ref}
43
47
  data={controller.field.value}
44
48
  onChange={(value) => controller.field.onChange(value)}
45
49
  onClear={() => controller.field.onChange([])}
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "mediaimage32296048";
8
+ var _namespace_ = "mediaimage1081502549";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,12 +13,12 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"mediaimage32296048__root"};
16
+ export var classes = {"root":"mediaimage1081502549__root"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
20
20
  export var stVars = {};
21
- export var vars = {"wds-color-red-200":"--wds-color-red-200","wsr-color-R20":"--wsr-color-R20","wds-color-black-550":"--wds-color-black-550","wsr-color-D55":"--wsr-color-D55","from":"--mediaimage32296048-from","to":"--mediaimage32296048-to"};
21
+ export var vars = {"wds-color-red-200":"--wds-color-red-200","wsr-color-R20":"--wsr-color-R20","wds-color-black-550":"--wds-color-black-550","wsr-color-D55":"--wsr-color-D55","from":"--mediaimage1081502549-from","to":"--mediaimage1081502549-to"};
22
22
 
23
23
 
24
24
 
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../../stylable-esm-runtime.js"
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "overlay604534348";
8
+ var _namespace_ = "overlay1338093693";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"overlay604534348__root","iconOverlay":"overlay604534348__iconOverlay"};
16
+ export var classes = {"root":"overlay1338093693__root","iconOverlay":"overlay1338093693__iconOverlay"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "medialoader737517012";
8
+ var _namespace_ = "medialoader142891810";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"medialoader737517012__root","loader":"medialoader737517012__loader"};
16
+ export var classes = {"root":"medialoader142891810__root","loader":"medialoader142891810__loader"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../../stylable-esm-runtime.js"
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "mediatag3986082280";
8
+ var _namespace_ = "mediatag1597208276";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"mediatag3986082280__root"};
16
+ export var classes = {"root":"mediatag1597208276__root"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "cellmultidocumentedit30390028";
8
+ var _namespace_ = "cellmultidocumentedit2776735104";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"cellmultidocumentedit30390028__root","chipTrigger":"cellmultidocumentedit30390028__chipTrigger"};
16
+ export var classes = {"root":"cellmultidocumentedit2776735104__root","chipTrigger":"cellmultidocumentedit2776735104__chipTrigger"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -10,7 +10,7 @@ import {
10
10
  usePasteURLForm,
11
11
  } from '../../media-control';
12
12
  import { FormDocumentInput } from '../../document/form';
13
- import { useTranslations, useWithCallback } from '../../../hooks';
13
+ import { useMergedRef, useTranslations, useWithCallback } from '../../../hooks';
14
14
 
15
15
  import { FormMultiDocumentView } from './form-multi-document-view';
16
16
 
@@ -24,12 +24,13 @@ export const FormMultiDocumentField: React.FC<
24
24
  readOnly,
25
25
  invalid,
26
26
  dataHook,
27
+ inputRef: forwardedRef,
27
28
  }) => {
28
29
  const { t } = useTranslations();
29
30
 
30
31
  const onChange = useWithCallback(onChangeMultiDocument, onInput);
31
32
 
32
- const inputRef = useRef<AddItemActions>(null);
33
+ const [inputRef, setInputRef] = useMergedRef<AddItemActions>(forwardedRef);
33
34
  const firstDocumentViewRef = useRef<HTMLDivElement>(null);
34
35
 
35
36
  const { callMedia, loading, downloadMedia } = useMediaControl({
@@ -77,7 +78,7 @@ export const FormMultiDocumentField: React.FC<
77
78
  ) : (
78
79
  <FormDocumentInput
79
80
  dataHook={dataHook}
80
- ref={inputRef}
81
+ ref={setInputRef}
81
82
  theme="dashes"
82
83
  disabled={readOnly}
83
84
  loading={loading}
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../../stylable-esm-runtime.js"
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "formmultidocument1609371478";
8
+ var _namespace_ = "formmultidocument857357206";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"formmultidocument1609371478__root","viewRoot":"formmultidocument1609371478__viewRoot","singleViewWrapper":"formmultidocument1609371478__singleViewWrapper","addDocumentButton":"formmultidocument1609371478__addDocumentButton"};
16
+ export var classes = {"root":"formmultidocument857357206__root","viewRoot":"formmultidocument857357206__viewRoot","singleViewWrapper":"formmultidocument857357206__singleViewWrapper","addDocumentButton":"formmultidocument857357206__addDocumentButton"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -39,6 +39,10 @@ const _FormMultiDocument = (props: FormMultiDocumentProps) => {
39
39
  dataHook={dataHook}
40
40
  >
41
41
  <FormMultiDocumentField
42
+ // Hand the add button to react-hook-form so
43
+ // shouldFocusError scrolls to + focuses this field when it
44
+ // blocks save.
45
+ inputRef={controller.field.ref}
42
46
  data={controller.field.value}
43
47
  onChange={(value) => controller.field.onChange(value)}
44
48
  dataHook={`multi-document-${field.id}`}
@@ -23,7 +23,10 @@ export interface CellJsonInputProps
23
23
  * by the EditableTable commit pipeline to mean "no edit happened," so emitting
24
24
  * `null` here is what lets the user clear a cell to empty.
25
25
  */
26
- export const CellJsonInput = forwardRef<InputArea, CellJsonInputProps>(
26
+ // Explicit type without it, .d.ts emit inlines WDS's internal class (TS4094).
27
+ export const CellJsonInput: React.ForwardRefExoticComponent<
28
+ CellJsonInputProps & React.RefAttributes<InputArea>
29
+ > = forwardRef<InputArea, CellJsonInputProps>(
27
30
  ({ value, onChange, onBlur, readOnly, disabled, ...props }, ref) => {
28
31
  const [json, setJson] = useControlledInput(
29
32
  value == null ? '' : safeStringify(value, true),
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "cellmultireferenceinput2603991496";
8
+ var _namespace_ = "cellmultireferenceinput2676689456";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"cellmultireferenceinput2603991496__root"};
16
+ export var classes = {"root":"cellmultireferenceinput2676689456__root"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "cellreferenceinput1254621145";
8
+ var _namespace_ = "cellreferenceinput1109486214";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"cellreferenceinput1254621145__root","autocomplete":"cellreferenceinput1254621145__autocomplete"};
16
+ export var classes = {"root":"cellreferenceinput1109486214__root","autocomplete":"cellreferenceinput1109486214__autocomplete"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { FormField } from '@wix/design-system';
2
+ import { Box, FormField } from '@wix/design-system';
3
3
  import { observer } from 'mobx-react-lite';
4
4
  import type {
5
5
  RichContent as RichContentType,
@@ -11,7 +11,7 @@ import { useWixPatternsContainer } from '@wix/bex-core/react';
11
11
  import { useController } from '@wix/bex-core/form';
12
12
 
13
13
  import { BaseInputProps } from '../../types/base-input';
14
- import { useTranslations } from '../../hooks';
14
+ import { useScrollToErrorRef, useTranslations } from '../../hooks';
15
15
  import { isEmpty } from '../../validations/string';
16
16
  import {
17
17
  isDataValidOrNotSet,
@@ -49,6 +49,14 @@ const _FormRichContent = (props: FormRichContentProps) => {
49
49
  richContentValidation,
50
50
  );
51
51
 
52
+ // The editor is lazy and exposes no focus handle, so hand react-hook-form
53
+ // a wrapper it can bring into view instead. The wrapper stays mounted even
54
+ // when the value is the wrong type and the editor is not rendered.
55
+ const setScrollToErrorRef = useScrollToErrorRef<HTMLDivElement>(
56
+ controller.field.ref,
57
+ '[contenteditable]',
58
+ );
59
+
52
60
  return (
53
61
  <FormField
54
62
  label={field.displayName}
@@ -78,18 +86,20 @@ const _FormRichContent = (props: FormRichContentProps) => {
78
86
  )
79
87
  }
80
88
  >
81
- {isValueValid ? (
82
- <FormRichContentInput
83
- autoFocus={false}
84
- data={controller.field.value}
85
- onChange={(value) => controller.field.onChange?.(value)}
86
- dataHook={`rich-content-${field.id}`}
87
- field={field.id}
88
- theme={theme}
89
- experiments={ricosExperiments}
90
- isSiteMetadataLoading={false}
91
- />
92
- ) : null}
89
+ <Box direction="vertical" width="100%" ref={setScrollToErrorRef}>
90
+ {isValueValid ? (
91
+ <FormRichContentInput
92
+ autoFocus={false}
93
+ data={controller.field.value}
94
+ onChange={(value) => controller.field.onChange?.(value)}
95
+ dataHook={`rich-content-${field.id}`}
96
+ field={field.id}
97
+ theme={theme}
98
+ experiments={ricosExperiments}
99
+ isSiteMetadataLoading={false}
100
+ />
101
+ ) : null}
102
+ </Box>
93
103
  </FormField>
94
104
  );
95
105
  };
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../../../stylable-esm-runtime.
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "richcontentdefaultvalueinput2923565181";
8
+ var _namespace_ = "richcontentdefaultvalueinput4174470607";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"richcontentdefaultvalueinput2923565181__root","richContentEditorContainer":"richcontentdefaultvalueinput2923565181__richContentEditorContainer","editor":"richcontentdefaultvalueinput2923565181__editor"};
16
+ export var classes = {"root":"richcontentdefaultvalueinput4174470607__root","richContentEditorContainer":"richcontentdefaultvalueinput4174470607__richContentEditorContainer","editor":"richcontentdefaultvalueinput4174470607__editor"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../../../stylable-esm-runtime.
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "richcontentforminput1152158009";
8
+ var _namespace_ = "richcontentforminput1903671592";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"richcontentforminput1152158009__root","editor":"richcontentforminput1152158009__editor"};
16
+ export var classes = {"root":"richcontentforminput1903671592__root","editor":"richcontentforminput1903671592__editor"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../../../stylable-esm-runtime.
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "richcontentformreadonlyinput755695367";
8
+ var _namespace_ = "richcontentformreadonlyinput172558332";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"richcontentformreadonlyinput755695367__root"};
16
+ export var classes = {"root":"richcontentformreadonlyinput172558332__root"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../../../../stylable-esm-runti
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "fullscreenmodal740246259";
8
+ var _namespace_ = "fullscreenmodal208254918";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"fullscreenmodal740246259__root","modalContent":"fullscreenmodal740246259__modalContent"};
16
+ export var classes = {"root":"fullscreenmodal208254918__root","modalContent":"fullscreenmodal208254918__modalContent"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../../../../stylable-esm-runti
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "publishloader2959702806";
8
+ var _namespace_ = "publishloader1461570400";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"publishloader2959702806__root","publishLoader":"publishloader2959702806__publishLoader"};
16
+ export var classes = {"root":"publishloader1461570400__root","publishLoader":"publishloader1461570400__publishLoader"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../../../../stylable-esm-runti
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "togglefullscreenbutton1348532638";
8
+ var _namespace_ = "togglefullscreenbutton2385173147";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"togglefullscreenbutton1348532638__root"};
16
+ export var classes = {"root":"togglefullscreenbutton2385173147__root"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../../../stylable-esm-runtime.
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "richcontenteditor1768344113";
8
+ var _namespace_ = "richcontenteditor3535846372";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"richcontenteditor1768344113__root","toolbarContainer":"richcontenteditor1768344113__toolbarContainer","footerToolbarContainer":"richcontenteditor1768344113__footerToolbarContainer","toolbarAndFullScreenButtonWrapper":"richcontenteditor1768344113__toolbarAndFullScreenButtonWrapper","editor":"richcontenteditor1768344113__editor","modalEditor":"richcontenteditor1768344113__modalEditor"};
16
+ export var classes = {"root":"richcontenteditor3535846372__root","toolbarContainer":"richcontenteditor3535846372__toolbarContainer","footerToolbarContainer":"richcontenteditor3535846372__footerToolbarContainer","toolbarAndFullScreenButtonWrapper":"richcontenteditor3535846372__toolbarAndFullScreenButtonWrapper","editor":"richcontenteditor3535846372__editor","modalEditor":"richcontenteditor3535846372__modalEditor"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../../../stylable-esm-runtime.
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "richcontenttoolbar1954829146";
8
+ var _namespace_ = "richcontenttoolbar2126134109";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"richcontenttoolbar1954829146__root","toolbar":"richcontenttoolbar1954829146__toolbar","toolbarButton":"richcontenttoolbar1954829146__toolbarButton","separator":"richcontenttoolbar1954829146__separator"};
16
+ export var classes = {"root":"richcontenttoolbar2126134109__root","toolbar":"richcontenttoolbar2126134109__toolbar","toolbarButton":"richcontenttoolbar2126134109__toolbarButton","separator":"richcontenttoolbar2126134109__separator"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../../../stylable-esm-runtime.
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "richcontentviewer1006954306";
8
+ var _namespace_ = "richcontentviewer3587365751";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"richcontentviewer1006954306__root","viewer":"richcontentviewer1006954306__viewer","modalViewer":"richcontentviewer1006954306__modalViewer"};
16
+ export var classes = {"root":"richcontentviewer3587365751__root","viewer":"richcontentviewer3587365751__viewer","modalViewer":"richcontentviewer3587365751__modalViewer"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};