@wix/patterns-fields 1.72.0 → 1.74.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 (335) hide show
  1. package/dist/cjs/components/address/form-address.js +5 -3
  2. package/dist/cjs/components/address/form-address.js.map +1 -1
  3. package/dist/cjs/components/address/input/address-input.st.css.js +3 -3
  4. package/dist/cjs/components/address/input/address-input.st.css.js.map +1 -1
  5. package/dist/cjs/components/address/input/form-address-input.js +5 -16
  6. package/dist/cjs/components/address/input/form-address-input.js.map +1 -1
  7. package/dist/cjs/components/audio/actions/actions-menu/actions-menu.st.css.js +3 -3
  8. package/dist/cjs/components/audio/actions/actions-menu/actions-menu.st.css.js.map +1 -1
  9. package/dist/cjs/components/audio/audio-field/form-audio-field.js +14 -13
  10. package/dist/cjs/components/audio/audio-field/form-audio-field.js.map +1 -1
  11. package/dist/cjs/components/audio/audio-field/form-audio-field.st.css.js +4 -4
  12. package/dist/cjs/components/audio/audio-field/form-audio-field.st.css.js.map +1 -1
  13. package/dist/cjs/components/audio/audio-field/form-audio.js +10 -3
  14. package/dist/cjs/components/audio/audio-field/form-audio.js.map +1 -1
  15. package/dist/cjs/components/audio/audio-player/audio-player.st.css.js +2 -2
  16. package/dist/cjs/components/audio/audio-player/audio-player.st.css.js.map +1 -1
  17. package/dist/cjs/components/color-view/cell-color-view.st.css.js +3 -3
  18. package/dist/cjs/components/color-view/cell-color-view.st.css.js.map +1 -1
  19. package/dist/cjs/components/color-view/color-input.js +6 -5
  20. package/dist/cjs/components/color-view/color-input.js.map +1 -1
  21. package/dist/cjs/components/color-view/color-view.st.css.js +4 -4
  22. package/dist/cjs/components/color-view/color-view.st.css.js.map +1 -1
  23. package/dist/cjs/components/color-view/form-color.driver.js +8 -2
  24. package/dist/cjs/components/color-view/form-color.driver.js.map +1 -1
  25. package/dist/cjs/components/datetime-input/form-date-time.driver.js +4 -1
  26. package/dist/cjs/components/datetime-input/form-date-time.driver.js.map +1 -1
  27. package/dist/cjs/components/datetime-input/form-date-time.js +1 -0
  28. package/dist/cjs/components/datetime-input/form-date-time.js.map +1 -1
  29. package/dist/cjs/components/delete-dialog/delete-dialog.st.css.js +3 -3
  30. package/dist/cjs/components/delete-dialog/delete-dialog.st.css.js.map +1 -1
  31. package/dist/cjs/components/document/form-document-field.js +7 -6
  32. package/dist/cjs/components/document/form-document-field.js.map +1 -1
  33. package/dist/cjs/components/document/form-document-field.st.css.js +7 -7
  34. package/dist/cjs/components/document/form-document-field.st.css.js.map +1 -1
  35. package/dist/cjs/components/document/form-document.js +10 -3
  36. package/dist/cjs/components/document/form-document.js.map +1 -1
  37. package/dist/cjs/components/exclamation/exclamation.st.css.js +5 -5
  38. package/dist/cjs/components/exclamation/exclamation.st.css.js.map +1 -1
  39. package/dist/cjs/components/highlighted-text/highlighted-text.st.css.js +5 -5
  40. package/dist/cjs/components/highlighted-text/highlighted-text.st.css.js.map +1 -1
  41. package/dist/cjs/components/image/form-image-input.js +11 -4
  42. package/dist/cjs/components/image/form-image-input.js.map +1 -1
  43. package/dist/cjs/components/image/thumbnail-replace-overlay.st.css.js +3 -3
  44. package/dist/cjs/components/image/thumbnail-replace-overlay.st.css.js.map +1 -1
  45. package/dist/cjs/components/media-control/cell-media-edit-shell.st.css.js +2 -2
  46. package/dist/cjs/components/media-control/cell-media-edit-shell.st.css.js.map +1 -1
  47. package/dist/cjs/components/media-control/paste-url-button.st.css.js +4 -4
  48. package/dist/cjs/components/media-control/paste-url-button.st.css.js.map +1 -1
  49. package/dist/cjs/components/media-gallery/form-media-gallery-field.js +24 -21
  50. package/dist/cjs/components/media-gallery/form-media-gallery-field.js.map +1 -1
  51. package/dist/cjs/components/media-gallery/form-media-gallery-field.st.css.js +10 -10
  52. package/dist/cjs/components/media-gallery/form-media-gallery-field.st.css.js.map +1 -1
  53. package/dist/cjs/components/media-gallery/form-media-gallery.js +10 -3
  54. package/dist/cjs/components/media-gallery/form-media-gallery.js.map +1 -1
  55. package/dist/cjs/components/media-image/media-image.st.css.js +4 -4
  56. package/dist/cjs/components/media-image/media-image.st.css.js.map +1 -1
  57. package/dist/cjs/components/media-image/overlays/overlay.st.css.js +3 -3
  58. package/dist/cjs/components/media-image/overlays/overlay.st.css.js.map +1 -1
  59. package/dist/cjs/components/media-loader/media-loader.st.css.js +3 -3
  60. package/dist/cjs/components/media-loader/media-loader.st.css.js.map +1 -1
  61. package/dist/cjs/components/media-tag/web-media-tag/media-tag.st.css.js +2 -2
  62. package/dist/cjs/components/media-tag/web-media-tag/media-tag.st.css.js.map +1 -1
  63. package/dist/cjs/components/multi-document/cell-multi-document-edit.st.css.js +3 -3
  64. package/dist/cjs/components/multi-document/cell-multi-document-edit.st.css.js.map +1 -1
  65. package/dist/cjs/components/multi-document/multi-document-input/form-multi-document-field.js +7 -6
  66. package/dist/cjs/components/multi-document/multi-document-input/form-multi-document-field.js.map +1 -1
  67. package/dist/cjs/components/multi-document/multi-document-input/form-multi-document.js +10 -3
  68. package/dist/cjs/components/multi-document/multi-document-input/form-multi-document.js.map +1 -1
  69. package/dist/cjs/components/multi-document/multi-document-input/form-multi-document.st.css.js +5 -5
  70. package/dist/cjs/components/multi-document/multi-document-input/form-multi-document.st.css.js.map +1 -1
  71. package/dist/cjs/components/reference/cell-multi-reference-input.st.css.js +2 -2
  72. package/dist/cjs/components/reference/cell-multi-reference-input.st.css.js.map +1 -1
  73. package/dist/cjs/components/reference/cell-reference-input.st.css.js +3 -3
  74. package/dist/cjs/components/reference/cell-reference-input.st.css.js.map +1 -1
  75. package/dist/cjs/components/rich-content/form-rich-content.js +20 -5
  76. package/dist/cjs/components/rich-content/form-rich-content.js.map +1 -1
  77. package/dist/cjs/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.js +4 -4
  78. package/dist/cjs/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.js.map +1 -1
  79. package/dist/cjs/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css +15 -7
  80. package/dist/cjs/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js +11 -7
  81. package/dist/cjs/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js.map +1 -1
  82. package/dist/cjs/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.js +2 -2
  83. 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
  84. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js +3 -3
  85. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js.map +1 -1
  86. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js +3 -3
  87. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js.map +1 -1
  88. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js +2 -2
  89. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js.map +1 -1
  90. package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js +7 -7
  91. package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js.map +1 -1
  92. package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js +5 -5
  93. package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js.map +1 -1
  94. package/dist/cjs/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js +4 -4
  95. package/dist/cjs/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js.map +1 -1
  96. package/dist/cjs/components/rich-text/form-rich-text.js +18 -5
  97. package/dist/cjs/components/rich-text/form-rich-text.js.map +1 -1
  98. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js +18 -18
  99. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js.map +1 -1
  100. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css +32 -19
  101. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js +20 -12
  102. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js.map +1 -1
  103. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.js +18 -18
  104. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.js.map +1 -1
  105. package/dist/cjs/components/text/text-view.st.css.js +3 -3
  106. package/dist/cjs/components/text/text-view.st.css.js.map +1 -1
  107. package/dist/cjs/components/time-input/form-time.js +9 -10
  108. package/dist/cjs/components/time-input/form-time.js.map +1 -1
  109. package/dist/cjs/components/video/form-video.js +30 -29
  110. package/dist/cjs/components/video/form-video.js.map +1 -1
  111. package/dist/cjs/hooks/index.js +18 -0
  112. package/dist/cjs/hooks/index.js.map +1 -1
  113. package/dist/cjs/hooks/pr-5746-kobiburnley-comments.md +54 -0
  114. package/dist/cjs/hooks/use-field-ref.js +60 -0
  115. package/dist/cjs/hooks/use-field-ref.js.map +1 -0
  116. package/dist/cjs/hooks/use-merged-ref.js +27 -0
  117. package/dist/cjs/hooks/use-merged-ref.js.map +1 -0
  118. package/dist/cjs/hooks/use-scroll-to-error-ref.js +34 -0
  119. package/dist/cjs/hooks/use-scroll-to-error-ref.js.map +1 -0
  120. package/dist/cjs/styles.global.css +1 -1
  121. package/dist/esm/components/address/form-address.js +3 -1
  122. package/dist/esm/components/address/form-address.js.map +1 -1
  123. package/dist/esm/components/address/input/address-input.st.css.js +2 -2
  124. package/dist/esm/components/address/input/address-input.st.css.js.map +1 -1
  125. package/dist/esm/components/address/input/form-address-input.js +4 -15
  126. package/dist/esm/components/address/input/form-address-input.js.map +1 -1
  127. package/dist/esm/components/audio/actions/actions-menu/actions-menu.st.css.js +2 -2
  128. package/dist/esm/components/audio/actions/actions-menu/actions-menu.st.css.js.map +1 -1
  129. package/dist/esm/components/audio/audio-field/form-audio-field.js +4 -4
  130. package/dist/esm/components/audio/audio-field/form-audio-field.js.map +1 -1
  131. package/dist/esm/components/audio/audio-field/form-audio-field.st.css.js +2 -2
  132. package/dist/esm/components/audio/audio-field/form-audio.js +11 -1
  133. package/dist/esm/components/audio/audio-field/form-audio.js.map +1 -1
  134. package/dist/esm/components/audio/audio-player/audio-player.st.css.js +2 -2
  135. package/dist/esm/components/color-view/cell-color-view.st.css.js +2 -2
  136. package/dist/esm/components/color-view/color-input.js +1 -1
  137. package/dist/esm/components/color-view/color-input.js.map +1 -1
  138. package/dist/esm/components/color-view/color-view.st.css.js +2 -2
  139. package/dist/esm/components/color-view/form-color.driver.js +8 -2
  140. package/dist/esm/components/color-view/form-color.driver.js.map +1 -1
  141. package/dist/esm/components/datetime-input/form-date-time.driver.js +3 -0
  142. package/dist/esm/components/datetime-input/form-date-time.driver.js.map +1 -1
  143. package/dist/esm/components/datetime-input/form-date-time.js +1 -1
  144. package/dist/esm/components/datetime-input/form-date-time.js.map +1 -1
  145. package/dist/esm/components/delete-dialog/delete-dialog.st.css.js +2 -2
  146. package/dist/esm/components/delete-dialog/delete-dialog.st.css.js.map +1 -1
  147. package/dist/esm/components/document/form-document-field.js +4 -4
  148. package/dist/esm/components/document/form-document-field.js.map +1 -1
  149. package/dist/esm/components/document/form-document-field.st.css.js +2 -2
  150. package/dist/esm/components/document/form-document-field.st.css.js.map +1 -1
  151. package/dist/esm/components/document/form-document.js +11 -1
  152. package/dist/esm/components/document/form-document.js.map +1 -1
  153. package/dist/esm/components/exclamation/exclamation.st.css.js +2 -2
  154. package/dist/esm/components/highlighted-text/highlighted-text.st.css.js +3 -3
  155. package/dist/esm/components/highlighted-text/highlighted-text.st.css.js.map +1 -1
  156. package/dist/esm/components/image/form-image-input.js +11 -1
  157. package/dist/esm/components/image/form-image-input.js.map +1 -1
  158. package/dist/esm/components/image/thumbnail-replace-overlay.st.css.js +2 -2
  159. package/dist/esm/components/media-control/cell-media-edit-shell.st.css.js +2 -2
  160. package/dist/esm/components/media-control/cell-media-edit-shell.st.css.js.map +1 -1
  161. package/dist/esm/components/media-control/paste-url-button.st.css.js +2 -2
  162. package/dist/esm/components/media-gallery/form-media-gallery-field.js +7 -5
  163. package/dist/esm/components/media-gallery/form-media-gallery-field.js.map +1 -1
  164. package/dist/esm/components/media-gallery/form-media-gallery-field.st.css.js +2 -2
  165. package/dist/esm/components/media-gallery/form-media-gallery.js +11 -1
  166. package/dist/esm/components/media-gallery/form-media-gallery.js.map +1 -1
  167. package/dist/esm/components/media-image/media-image.st.css.js +3 -3
  168. package/dist/esm/components/media-image/overlays/overlay.st.css.js +2 -2
  169. package/dist/esm/components/media-loader/media-loader.st.css.js +2 -2
  170. package/dist/esm/components/media-tag/web-media-tag/media-tag.st.css.js +2 -2
  171. package/dist/esm/components/multi-document/cell-multi-document-edit.st.css.js +2 -2
  172. package/dist/esm/components/multi-document/cell-multi-document-edit.st.css.js.map +1 -1
  173. package/dist/esm/components/multi-document/multi-document-input/form-multi-document-field.js +4 -4
  174. package/dist/esm/components/multi-document/multi-document-input/form-multi-document-field.js.map +1 -1
  175. package/dist/esm/components/multi-document/multi-document-input/form-multi-document.js +11 -1
  176. package/dist/esm/components/multi-document/multi-document-input/form-multi-document.js.map +1 -1
  177. package/dist/esm/components/multi-document/multi-document-input/form-multi-document.st.css.js +2 -2
  178. package/dist/esm/components/reference/cell-multi-reference-input.st.css.js +2 -2
  179. package/dist/esm/components/reference/cell-reference-input.st.css.js +2 -2
  180. package/dist/esm/components/rich-content/form-rich-content.js +8 -3
  181. package/dist/esm/components/rich-content/form-rich-content.js.map +1 -1
  182. package/dist/esm/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.js +2 -2
  183. package/dist/esm/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css +15 -7
  184. package/dist/esm/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js +3 -3
  185. package/dist/esm/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js.map +1 -1
  186. package/dist/esm/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.js +2 -2
  187. package/dist/esm/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.js.map +1 -1
  188. package/dist/esm/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js +2 -2
  189. package/dist/esm/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js +2 -2
  190. package/dist/esm/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js +2 -2
  191. package/dist/esm/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js +2 -2
  192. package/dist/esm/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js.map +1 -1
  193. package/dist/esm/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js +2 -2
  194. package/dist/esm/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js +2 -2
  195. package/dist/esm/components/rich-text/form-rich-text.js +7 -3
  196. package/dist/esm/components/rich-text/form-rich-text.js.map +1 -1
  197. package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js +2 -2
  198. package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js.map +1 -1
  199. package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css +32 -19
  200. package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js +3 -3
  201. package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js.map +1 -1
  202. package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.js +2 -2
  203. package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.js.map +1 -1
  204. package/dist/esm/components/text/text-view.st.css.js +2 -2
  205. package/dist/esm/components/time-input/form-time.js +4 -3
  206. package/dist/esm/components/time-input/form-time.js.map +1 -1
  207. package/dist/esm/components/video/form-video.js +3 -2
  208. package/dist/esm/components/video/form-video.js.map +1 -1
  209. package/dist/esm/hooks/index.js +3 -0
  210. package/dist/esm/hooks/index.js.map +1 -1
  211. package/dist/esm/hooks/pr-5746-kobiburnley-comments.md +54 -0
  212. package/dist/esm/hooks/use-field-ref.js +36 -0
  213. package/dist/esm/hooks/use-field-ref.js.map +1 -0
  214. package/dist/esm/hooks/use-merged-ref.js +23 -0
  215. package/dist/esm/hooks/use-merged-ref.js.map +1 -0
  216. package/dist/esm/hooks/use-scroll-to-error-ref.js +26 -0
  217. package/dist/esm/hooks/use-scroll-to-error-ref.js.map +1 -0
  218. package/dist/esm/styles.global.css +1 -1
  219. package/dist/types/components/address/form-address.d.ts.map +1 -1
  220. package/dist/types/components/address/input/address-input.st.css.d.ts.map +1 -1
  221. package/dist/types/components/address/input/form-address-input.d.ts.map +1 -1
  222. package/dist/types/components/audio/actions/actions-menu/actions-menu.st.css.d.ts.map +1 -1
  223. package/dist/types/components/audio/audio-field/form-audio-field.d.ts.map +1 -1
  224. package/dist/types/components/audio/audio-field/form-audio.d.ts.map +1 -1
  225. package/dist/types/components/color-view/color-input.d.ts.map +1 -1
  226. package/dist/types/components/color-view/form-color.driver.d.ts +5 -15
  227. package/dist/types/components/color-view/form-color.driver.d.ts.map +1 -1
  228. package/dist/types/components/datetime-input/form-date-time.driver.d.ts +1 -0
  229. package/dist/types/components/datetime-input/form-date-time.driver.d.ts.map +1 -1
  230. package/dist/types/components/delete-dialog/delete-dialog.st.css.d.ts.map +1 -1
  231. package/dist/types/components/document/form-document-field.d.ts.map +1 -1
  232. package/dist/types/components/document/form-document-field.st.css.d.ts.map +1 -1
  233. package/dist/types/components/document/form-document.d.ts.map +1 -1
  234. package/dist/types/components/highlighted-text/highlighted-text.st.css.d.ts.map +1 -1
  235. package/dist/types/components/image/form-image-input.d.ts.map +1 -1
  236. package/dist/types/components/media-control/cell-media-edit-shell.st.css.d.ts.map +1 -1
  237. package/dist/types/components/media-gallery/form-media-gallery-field.d.ts +3 -0
  238. package/dist/types/components/media-gallery/form-media-gallery-field.d.ts.map +1 -1
  239. package/dist/types/components/media-gallery/form-media-gallery.d.ts.map +1 -1
  240. package/dist/types/components/multi-document/cell-multi-document-edit.st.css.d.ts.map +1 -1
  241. package/dist/types/components/multi-document/multi-document-input/form-multi-document-field.d.ts.map +1 -1
  242. package/dist/types/components/multi-document/multi-document-input/form-multi-document.d.ts.map +1 -1
  243. package/dist/types/components/rich-content/form-rich-content.d.ts.map +1 -1
  244. package/dist/types/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.d.ts +7 -3
  245. package/dist/types/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.d.ts.map +1 -1
  246. package/dist/types/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.d.ts.map +1 -1
  247. package/dist/types/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.d.ts.map +1 -1
  248. package/dist/types/components/rich-text/form-rich-text.d.ts.map +1 -1
  249. package/dist/types/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.d.ts.map +1 -1
  250. package/dist/types/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.d.ts +16 -8
  251. package/dist/types/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.d.ts.map +1 -1
  252. package/dist/types/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.d.ts.map +1 -1
  253. package/dist/types/components/time-input/form-time.d.ts.map +1 -1
  254. package/dist/types/components/video/form-video.d.ts.map +1 -1
  255. package/dist/types/hooks/index.d.ts +3 -0
  256. package/dist/types/hooks/index.d.ts.map +1 -1
  257. package/dist/types/hooks/use-field-ref.d.ts +36 -0
  258. package/dist/types/hooks/use-field-ref.d.ts.map +1 -0
  259. package/dist/types/hooks/use-merged-ref.d.ts +11 -0
  260. package/dist/types/hooks/use-merged-ref.d.ts.map +1 -0
  261. package/dist/types/hooks/use-scroll-to-error-ref.d.ts +14 -0
  262. package/dist/types/hooks/use-scroll-to-error-ref.d.ts.map +1 -0
  263. package/package.json +5 -5
  264. package/src/__tests__/components/audio/form-audio.spec.tsx +22 -0
  265. package/src/__tests__/components/color-view/form-color.spec.tsx +46 -3
  266. package/src/__tests__/components/document/form-document.spec.tsx +22 -0
  267. package/src/__tests__/components/image/form-image-input.spec.tsx +22 -0
  268. package/src/__tests__/components/media-gallery/form-media-gallery.spec.tsx +21 -0
  269. package/src/__tests__/components/multi-document/form-multi-document.spec.tsx +21 -0
  270. package/src/__tests__/components/rich-content/form-rich-content.spec.tsx +22 -0
  271. package/src/__tests__/components/rich-editors-border.spec.ts +45 -0
  272. package/src/__tests__/components/rich-text/form-rich-text.spec.tsx +18 -0
  273. package/src/__tests__/hooks/use-field-ref.spec.tsx +132 -0
  274. package/src/components/address/form-address.tsx +4 -1
  275. package/src/components/address/input/address-input.st.css.ts +2 -2
  276. package/src/components/address/input/form-address-input.tsx +5 -20
  277. package/src/components/audio/actions/actions-menu/actions-menu.st.css.ts +2 -2
  278. package/src/components/audio/audio-field/form-audio-field.st.css.ts +2 -2
  279. package/src/components/audio/audio-field/form-audio-field.tsx +4 -3
  280. package/src/components/audio/audio-field/form-audio.tsx +7 -0
  281. package/src/components/audio/audio-player/audio-player.st.css.ts +2 -2
  282. package/src/components/color-view/cell-color-view.st.css.ts +2 -2
  283. package/src/components/color-view/color-input.tsx +13 -2
  284. package/src/components/color-view/color-view.st.css.ts +2 -2
  285. package/src/components/color-view/form-color.driver.ts +8 -2
  286. package/src/components/datetime-input/form-date-time.driver.ts +3 -0
  287. package/src/components/datetime-input/form-date-time.tsx +1 -1
  288. package/src/components/delete-dialog/delete-dialog.st.css.ts +2 -2
  289. package/src/components/document/form-document-field.st.css.ts +2 -2
  290. package/src/components/document/form-document-field.tsx +4 -3
  291. package/src/components/document/form-document.tsx +7 -0
  292. package/src/components/exclamation/exclamation.st.css.ts +2 -2
  293. package/src/components/highlighted-text/highlighted-text.st.css.ts +3 -3
  294. package/src/components/image/form-image-input.tsx +7 -0
  295. package/src/components/image/thumbnail-replace-overlay.st.css.ts +2 -2
  296. package/src/components/media-control/cell-media-edit-shell.st.css.ts +2 -2
  297. package/src/components/media-control/paste-url-button.st.css.ts +2 -2
  298. package/src/components/media-gallery/form-media-gallery-field.st.css.ts +2 -2
  299. package/src/components/media-gallery/form-media-gallery-field.tsx +9 -4
  300. package/src/components/media-gallery/form-media-gallery.tsx +7 -0
  301. package/src/components/media-image/media-image.st.css.ts +3 -3
  302. package/src/components/media-image/overlays/overlay.st.css.ts +2 -2
  303. package/src/components/media-loader/media-loader.st.css.ts +2 -2
  304. package/src/components/media-tag/web-media-tag/media-tag.st.css.ts +2 -2
  305. package/src/components/multi-document/cell-multi-document-edit.st.css.ts +2 -2
  306. package/src/components/multi-document/multi-document-input/form-multi-document-field.tsx +4 -3
  307. package/src/components/multi-document/multi-document-input/form-multi-document.st.css.ts +2 -2
  308. package/src/components/multi-document/multi-document-input/form-multi-document.tsx +7 -0
  309. package/src/components/reference/cell-multi-reference-input.st.css.ts +2 -2
  310. package/src/components/reference/cell-reference-input.st.css.ts +2 -2
  311. package/src/components/rich-content/form-rich-content.tsx +24 -14
  312. package/src/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.ts +2 -2
  313. package/src/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css +15 -7
  314. package/src/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.ts +3 -3
  315. package/src/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.ts +2 -2
  316. package/src/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.ts +2 -2
  317. package/src/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.ts +2 -2
  318. package/src/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.ts +2 -2
  319. package/src/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.ts +2 -2
  320. package/src/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.ts +2 -2
  321. package/src/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.ts +2 -2
  322. package/src/components/rich-text/form-rich-text.tsx +18 -9
  323. package/src/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.ts +2 -2
  324. package/src/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css +32 -19
  325. package/src/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.ts +3 -3
  326. package/src/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.ts +2 -2
  327. package/src/components/text/text-view.st.css.ts +2 -2
  328. package/src/components/time-input/form-time.tsx +9 -3
  329. package/src/components/video/form-video.tsx +4 -2
  330. package/src/hooks/index.ts +3 -0
  331. package/src/hooks/pr-5746-kobiburnley-comments.md +54 -0
  332. package/src/hooks/use-field-ref.ts +65 -0
  333. package/src/hooks/use-merged-ref.ts +30 -0
  334. package/src/hooks/use-scroll-to-error-ref.ts +39 -0
  335. package/src/styles.global.css +1 -1
@@ -131,14 +131,25 @@ export const ColorInput = forwardRef<InputImperativeActions, ColorInputProps>(
131
131
  zIndex={5001}
132
132
  >
133
133
  <Popover.Element>
134
- {!colorValue && (isFocused || showPicker) ? (
134
+ {/* Both swatches keep the mousedown default from moving focus.
135
+ Without it the press focuses the swatch, and the re-render
136
+ that follows the click detaches it — WDS Popover then reads
137
+ the click as landing outside itself and closes again, so the
138
+ picker only opened on a later click. For the same reason the
139
+ branch must not depend on `showPicker`: the swatch has to
140
+ survive its own click. */}
141
+ {!colorValue && isFocused ? (
135
142
  <FillButton
136
143
  onClick={onPreviewClick}
137
144
  onMouseDown={(e) => e.preventDefault()}
138
145
  tooltipContent={t('auto-patterns.fields.add_color_tooltip')}
139
146
  />
140
147
  ) : (
141
- <FillPreview fill={colorValue} onClick={onPreviewClick} />
148
+ <FillPreview
149
+ fill={colorValue}
150
+ onClick={onPreviewClick}
151
+ onMouseDown={(e) => e.preventDefault()}
152
+ />
142
153
  )}
143
154
  </Popover.Element>
144
155
  <Popover.Content>
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "colorview1092527435";
8
+ var _namespace_ = "colorview3482796446";
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":"colorview1092527435__root","view":"colorview1092527435__view","fillPreview":"colorview1092527435__fillPreview"};
16
+ export var classes = {"root":"colorview3482796446__root","view":"colorview3482796446__view","fillPreview":"colorview3482796446__fillPreview"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -25,8 +25,14 @@ export function FormColorDriver(
25
25
  ...baseUniDriverFactory(base),
26
26
  getLabel: () => getFormFieldLabelText(formField),
27
27
  getValue: () => input.getValue(),
28
- getFillButton: () => FillButtonUniDriver(base, body),
29
- getFillPreview: () => FillPreviewUniDriver(base, body),
28
+ // The WDS drivers scope their queries to `base`, but `exists()` comes from
29
+ // the shared base factory and only reports on `base` itself — which here is
30
+ // the whole field, so it is true either way. Query the swatch directly.
31
+ hasFillButton: () => base.$('[data-hook="fillbutton"]').exists(),
32
+ hasFillPreview: () => base.$('[data-hook="fill-preview-button"]').exists(),
33
+ clickFillButton: () => FillButtonUniDriver(base, body).click(),
34
+ clickFillPreview: () => FillPreviewUniDriver(base, body).click(),
35
+ isPickerOpen: () => body.$('[data-hook="color-picker-hsb"]').exists(),
30
36
  isRequired: () => formField.isRequired(),
31
37
  hasError: () => formField.hasStatus('error'),
32
38
  getErrorMessage: () => formField.getStatusMessage(),
@@ -38,5 +38,8 @@ export function FormDateTimeDriver(
38
38
  timeInput.hasStatus('error'),
39
39
  getTimeErrorMessage: () => timeInput.getStatusMessage(),
40
40
  isRequired: () => formField.isRequired(),
41
+ // WDS Layout mirrors its `gap` prop onto `data-gap`; it is the only
42
+ // element in this field carrying that attribute.
43
+ getInputsGap: () => base.$('[data-gap]').attr('data-gap'),
41
44
  };
42
45
  }
@@ -74,7 +74,7 @@ const _FormDateTime = (props: FormDateTimeProps) => {
74
74
  required={field.validation?.required}
75
75
  dataHook={dataHook}
76
76
  >
77
- <Layout>
77
+ <Layout gap="12px">
78
78
  <Cell span={6}>
79
79
  <DatePicker
80
80
  ref={(internalRef) => {
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "deletedialog557815988";
8
+ var _namespace_ = "deletedialog1207540592";
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":"deletedialog557815988__root","layout":"deletedialog557815988__layout"};
16
+ export var classes = {"root":"deletedialog1207540592__root","layout":"deletedialog1207540592__layout"};
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_ = "formdocumentfield22050767";
8
+ var _namespace_ = "formdocumentfield2347234029";
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":"formdocumentfield22050767__root","viewWrapper":"formdocumentfield22050767__viewWrapper","textWidth":"formdocumentfield22050767__textWidth","documentLoader":"formdocumentfield22050767__documentLoader","addDocument":"formdocumentfield22050767__addDocument","addItemWrapper":"formdocumentfield22050767__addItemWrapper"};
16
+ export var classes = {"root":"formdocumentfield2347234029__root","viewWrapper":"formdocumentfield2347234029__viewWrapper","textWidth":"formdocumentfield2347234029__textWidth","documentLoader":"formdocumentfield2347234029__documentLoader","addDocument":"formdocumentfield2347234029__addDocument","addItemWrapper":"formdocumentfield2347234029__addItemWrapper"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -1,7 +1,7 @@
1
1
  import React, { useRef } from 'react';
2
2
 
3
3
  import { MEDIA_TYPES } from '../../utils/media-utils';
4
- import { useTranslations, useWithCallback } from '../../hooks';
4
+ import { useMergedRef, useTranslations, useWithCallback } from '../../hooks';
5
5
  import type { AddItemActions } from '@wix/design-system';
6
6
 
7
7
  import type { FormMediaControlProps } from '../media-control';
@@ -26,13 +26,14 @@ export const FormDocumentField: React.FC<FormMediaControlProps> = ({
26
26
  readOnly,
27
27
  invalid,
28
28
  dataHook,
29
+ inputRef: forwardedRef,
29
30
  }) => {
30
31
  const { t } = useTranslations();
31
32
 
32
33
  const onChange = useWithCallback(onChangeDocument, onInput);
33
34
  const onClear = useWithCallback(onClearDocument, onInput);
34
35
 
35
- const inputRef = useRef<AddItemActions>(null);
36
+ const [inputRef, setInputRef] = useMergedRef<AddItemActions>(forwardedRef);
36
37
  const viewRef = useRef<HTMLDivElement>(null);
37
38
 
38
39
  const { callMedia, loading, downloadMedia } = useMediaControl({
@@ -54,7 +55,7 @@ export const FormDocumentField: React.FC<FormMediaControlProps> = ({
54
55
  {!data ? (
55
56
  <FormDocumentInput
56
57
  dataHook={dataHook}
57
- ref={inputRef}
58
+ ref={setInputRef}
58
59
  theme="dashes"
59
60
  disabled={readOnly}
60
61
  loading={loading}
@@ -7,6 +7,7 @@ import { useController } from '@wix/bex-core/form';
7
7
  import { BaseInputProps } from '../../types/base-input';
8
8
  import { isEmpty } from '../../validations/string';
9
9
  import { FormDocumentField } from './form-document-field';
10
+ import { useFieldRef } from '../../hooks';
10
11
 
11
12
  export interface FormDocumentProps extends BaseInputProps<string> {}
12
13
 
@@ -30,6 +31,8 @@ const _FormDocument = (props: FormDocumentProps) => {
30
31
  },
31
32
  });
32
33
 
34
+ const setFieldRef = useFieldRef(controller.field.ref);
35
+
33
36
  return (
34
37
  <FormField
35
38
  label={field.displayName}
@@ -39,6 +42,10 @@ const _FormDocument = (props: FormDocumentProps) => {
39
42
  dataHook={dataHook}
40
43
  >
41
44
  <FormDocumentField
45
+ // Hand the add button to react-hook-form so
46
+ // shouldFocusError scrolls to + focuses this field when it
47
+ // blocks save.
48
+ inputRef={setFieldRef}
42
49
  data={controller.field.value}
43
50
  onChange={(value) => controller.field.onChange(value)}
44
51
  onClear={() => controller.field.onChange(null)}
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "exclamation2447154459";
8
+ var _namespace_ = "exclamation1187432506";
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":"exclamation2447154459__root","exclamation":"exclamation2447154459__exclamation","actions":"exclamation2447154459__actions","action":"exclamation2447154459__action"};
16
+ export var classes = {"root":"exclamation1187432506__root","exclamation":"exclamation1187432506__exclamation","actions":"exclamation1187432506__actions","action":"exclamation1187432506__action"};
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_ = "highlightedtext950230055";
8
+ var _namespace_ = "highlightedtext3214489151";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,8 +13,8 @@ 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":"highlightedtext950230055__root","substring":"highlightedtext950230055__substring"};
17
- export var keyframes = {"highlighted":"highlightedtext950230055__highlighted","highlighted-match":"highlightedtext950230055__highlighted-match"};
16
+ export var classes = {"root":"highlightedtext3214489151__root","substring":"highlightedtext3214489151__substring"};
17
+ export var keyframes = {"highlighted":"highlightedtext3214489151__highlighted","highlighted-match":"highlightedtext3214489151__highlighted-match"};
18
18
  export var layers = {};
19
19
  export var containers = {};
20
20
  export var stVars = {};
@@ -8,6 +8,7 @@ import { BaseInputProps } from '../../types/base-input';
8
8
  import { isEmpty } from '../../validations/string';
9
9
  import { getImageUrl } from '../../utils/get-image-url';
10
10
  import { MEDIA_HEIGHT, MEDIA_MAX_WIDTH } from '../../utils/media-constants';
11
+ import { useFieldRef } from '../../hooks';
11
12
 
12
13
  export interface FormImageInputProps extends BaseInputProps<string> {}
13
14
 
@@ -50,6 +51,8 @@ const _FormImageInput = (props: FormImageInputProps) => {
50
51
  },
51
52
  });
52
53
 
54
+ const setFieldRef = useFieldRef(controller.field.ref);
55
+
53
56
  const imageUrl =
54
57
  controller.field.value && getImageUrl(controller.field.value);
55
58
 
@@ -63,6 +66,10 @@ const _FormImageInput = (props: FormImageInputProps) => {
63
66
  >
64
67
  <Box width="100%" maxWidth={MEDIA_MAX_WIDTH}>
65
68
  <ImageViewer
69
+ // ImageViewer keeps its focus node on whichever button is live, so
70
+ // one ref serves both the empty and filled states. Lets
71
+ // react-hook-form's shouldFocusError reach this field.
72
+ ref={setFieldRef}
66
73
  imageUrl={imageUrl}
67
74
  dataHook={`image-${field.id}`}
68
75
  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_ = "thumbnailreplaceoverlay2586707932";
8
+ var _namespace_ = "thumbnailreplaceoverlay1382391847";
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":"thumbnailreplaceoverlay2586707932__root","icon":"thumbnailreplaceoverlay2586707932__icon"};
16
+ export var classes = {"root":"thumbnailreplaceoverlay1382391847__root","icon":"thumbnailreplaceoverlay1382391847__icon"};
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_ = "cellmediaeditshell2678045238";
8
+ var _namespace_ = "cellmediaeditshell84193258";
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":"cellmediaeditshell2678045238__root"};
16
+ export var classes = {"root":"cellmediaeditshell84193258__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_ = "pasteurlbutton2432712873";
8
+ var _namespace_ = "pasteurlbutton2608013352";
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":"pasteurlbutton2432712873__root","iconButtonTooltip":"pasteurlbutton2432712873__iconButtonTooltip","iconButton":"pasteurlbutton2432712873__iconButton"};
16
+ export var classes = {"root":"pasteurlbutton2608013352__root","iconButtonTooltip":"pasteurlbutton2608013352__iconButtonTooltip","iconButton":"pasteurlbutton2608013352__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_ = "formmediagalleryfield1363730960";
8
+ var _namespace_ = "formmediagalleryfield4011032354";
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":"formmediagalleryfield1363730960__root","container":"formmediagalleryfield1363730960__container","viewBox":"formmediagalleryfield1363730960__viewBox","addItemWrapper":"formmediagalleryfield1363730960__addItemWrapper","addItem":"formmediagalleryfield1363730960__addItem","overlay":"formmediagalleryfield1363730960__overlay","image":"formmediagalleryfield1363730960__image","previewImage":"formmediagalleryfield1363730960__previewImage","previewVideo":"formmediagalleryfield1363730960__previewVideo"};
16
+ export var classes = {"root":"formmediagalleryfield4011032354__root","container":"formmediagalleryfield4011032354__container","viewBox":"formmediagalleryfield4011032354__viewBox","addItemWrapper":"formmediagalleryfield4011032354__addItemWrapper","addItem":"formmediagalleryfield4011032354__addItem","overlay":"formmediagalleryfield4011032354__overlay","image":"formmediagalleryfield4011032354__image","previewImage":"formmediagalleryfield4011032354__previewImage","previewVideo":"formmediagalleryfield4011032354__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"
@@ -7,6 +7,7 @@ import { BaseInputProps } from '../../types/base-input';
7
7
  import type { WixCodeGalleryItem } from '../../auto-field-types';
8
8
  import { isEmpty } from '../../validations/array';
9
9
  import { FormMediaGalleryField } from './form-media-gallery-field';
10
+ import { useFieldRef } from '../../hooks';
10
11
 
11
12
  export interface FormMediaGalleryProps
12
13
  extends BaseInputProps<WixCodeGalleryItem[]> {
@@ -31,6 +32,8 @@ const _FormMediaGallery = (props: FormMediaGalleryProps) => {
31
32
  },
32
33
  });
33
34
 
35
+ const setFieldRef = useFieldRef(controller.field.ref);
36
+
34
37
  return (
35
38
  <FormField
36
39
  label={field.displayName}
@@ -40,6 +43,10 @@ const _FormMediaGallery = (props: FormMediaGalleryProps) => {
40
43
  dataHook={dataHook}
41
44
  >
42
45
  <FormMediaGalleryField
46
+ // Hand the add button to react-hook-form so
47
+ // shouldFocusError scrolls to + focuses this field when it
48
+ // blocks save.
49
+ inputRef={setFieldRef}
43
50
  data={controller.field.value}
44
51
  onChange={(value) => controller.field.onChange(value)}
45
52
  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_ = "mediaimage3037602971";
8
+ var _namespace_ = "mediaimage2756082487";
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":"mediaimage3037602971__root"};
16
+ export var classes = {"root":"mediaimage2756082487__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":"--mediaimage3037602971-from","to":"--mediaimage3037602971-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":"--mediaimage2756082487-from","to":"--mediaimage2756082487-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_ = "overlay726786880";
8
+ var _namespace_ = "overlay101189595";
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":"overlay726786880__root","iconOverlay":"overlay726786880__iconOverlay"};
16
+ export var classes = {"root":"overlay101189595__root","iconOverlay":"overlay101189595__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_ = "medialoader1546745211";
8
+ var _namespace_ = "medialoader2582308961";
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":"medialoader1546745211__root","loader":"medialoader1546745211__loader"};
16
+ export var classes = {"root":"medialoader2582308961__root","loader":"medialoader2582308961__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_ = "mediatag2403252122";
8
+ var _namespace_ = "mediatag1371547298";
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":"mediatag2403252122__root"};
16
+ export var classes = {"root":"mediatag1371547298__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_ = "cellmultidocumentedit418830372";
8
+ var _namespace_ = "cellmultidocumentedit3805197963";
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":"cellmultidocumentedit418830372__root","chipTrigger":"cellmultidocumentedit418830372__chipTrigger"};
16
+ export var classes = {"root":"cellmultidocumentedit3805197963__root","chipTrigger":"cellmultidocumentedit3805197963__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_ = "formmultidocument2351500344";
8
+ var _namespace_ = "formmultidocument2780086059";
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":"formmultidocument2351500344__root","viewRoot":"formmultidocument2351500344__viewRoot","singleViewWrapper":"formmultidocument2351500344__singleViewWrapper","addDocumentButton":"formmultidocument2351500344__addDocumentButton"};
16
+ export var classes = {"root":"formmultidocument2780086059__root","viewRoot":"formmultidocument2780086059__viewRoot","singleViewWrapper":"formmultidocument2780086059__singleViewWrapper","addDocumentButton":"formmultidocument2780086059__addDocumentButton"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -7,6 +7,7 @@ import { useController } from '@wix/bex-core/form';
7
7
  import { BaseInputProps } from '../../../types/base-input';
8
8
  import { isEmpty } from '../../../validations/array';
9
9
  import { FormMultiDocumentField } from './form-multi-document-field';
10
+ import { useFieldRef } from '../../../hooks';
10
11
 
11
12
  export interface FormMultiDocumentProps extends BaseInputProps<string[]> {}
12
13
 
@@ -30,6 +31,8 @@ const _FormMultiDocument = (props: FormMultiDocumentProps) => {
30
31
  },
31
32
  });
32
33
 
34
+ const setFieldRef = useFieldRef(controller.field.ref);
35
+
33
36
  return (
34
37
  <FormField
35
38
  label={field.displayName}
@@ -39,6 +42,10 @@ const _FormMultiDocument = (props: FormMultiDocumentProps) => {
39
42
  dataHook={dataHook}
40
43
  >
41
44
  <FormMultiDocumentField
45
+ // Hand the add button to react-hook-form so
46
+ // shouldFocusError scrolls to + focuses this field when it
47
+ // blocks save.
48
+ inputRef={setFieldRef}
42
49
  data={controller.field.value}
43
50
  onChange={(value) => controller.field.onChange(value)}
44
51
  dataHook={`multi-document-${field.id}`}
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "cellmultireferenceinput3109112216";
8
+ var _namespace_ = "cellmultireferenceinput1942999998";
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":"cellmultireferenceinput3109112216__root"};
16
+ export var classes = {"root":"cellmultireferenceinput1942999998__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_ = "cellreferenceinput4252962194";
8
+ var _namespace_ = "cellreferenceinput3406756589";
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":"cellreferenceinput4252962194__root","autocomplete":"cellreferenceinput4252962194__autocomplete"};
16
+ export var classes = {"root":"cellreferenceinput3406756589__root","autocomplete":"cellreferenceinput3406756589__autocomplete"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};