@wix/patterns-fields 1.39.0 → 1.41.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 (423) hide show
  1. package/dist/cjs/assets/locale/messages_ar.json +8 -0
  2. package/dist/cjs/assets/locale/messages_bg.json +8 -0
  3. package/dist/cjs/assets/locale/messages_ca.json +8 -0
  4. package/dist/cjs/assets/locale/messages_cs.json +8 -0
  5. package/dist/cjs/assets/locale/messages_da.json +8 -0
  6. package/dist/cjs/assets/locale/messages_de.json +8 -0
  7. package/dist/cjs/assets/locale/messages_el.json +8 -0
  8. package/dist/cjs/assets/locale/messages_en.json +8 -0
  9. package/dist/cjs/assets/locale/messages_es.json +8 -0
  10. package/dist/cjs/assets/locale/messages_fi.json +8 -0
  11. package/dist/cjs/assets/locale/messages_fr.json +8 -0
  12. package/dist/cjs/assets/locale/messages_he.json +8 -0
  13. package/dist/cjs/assets/locale/messages_hi.json +8 -0
  14. package/dist/cjs/assets/locale/messages_hu.json +8 -0
  15. package/dist/cjs/assets/locale/messages_id.json +8 -0
  16. package/dist/cjs/assets/locale/messages_it.json +8 -0
  17. package/dist/cjs/assets/locale/messages_ja.json +8 -0
  18. package/dist/cjs/assets/locale/messages_ko.json +8 -0
  19. package/dist/cjs/assets/locale/messages_lt.json +8 -0
  20. package/dist/cjs/assets/locale/messages_ms.json +8 -0
  21. package/dist/cjs/assets/locale/messages_nl.json +8 -0
  22. package/dist/cjs/assets/locale/messages_no.json +8 -0
  23. package/dist/cjs/assets/locale/messages_pl.json +8 -0
  24. package/dist/cjs/assets/locale/messages_pt.json +8 -0
  25. package/dist/cjs/assets/locale/messages_ro.json +8 -0
  26. package/dist/cjs/assets/locale/messages_ru.json +8 -0
  27. package/dist/cjs/assets/locale/messages_sk.json +8 -0
  28. package/dist/cjs/assets/locale/messages_sl.json +8 -0
  29. package/dist/cjs/assets/locale/messages_sv.json +8 -0
  30. package/dist/cjs/assets/locale/messages_th.json +8 -0
  31. package/dist/cjs/assets/locale/messages_tl.json +8 -0
  32. package/dist/cjs/assets/locale/messages_tr.json +8 -0
  33. package/dist/cjs/assets/locale/messages_uk.json +8 -0
  34. package/dist/cjs/assets/locale/messages_vi.json +8 -0
  35. package/dist/cjs/assets/locale/messages_zh.json +8 -0
  36. package/dist/cjs/assets/locale/version_file +1 -1
  37. package/dist/cjs/components/address/input/address-input.st.css.js +3 -3
  38. package/dist/cjs/components/address/input/address-input.st.css.js.map +1 -1
  39. package/dist/cjs/components/audio/actions/actions-menu/actions-menu.st.css.js +3 -3
  40. package/dist/cjs/components/audio/actions/actions-menu/actions-menu.st.css.js.map +1 -1
  41. package/dist/cjs/components/audio/audio-field/form-audio-field.js +12 -10
  42. package/dist/cjs/components/audio/audio-field/form-audio-field.js.map +1 -1
  43. package/dist/cjs/components/audio/audio-field/form-audio-field.st.css.js +4 -4
  44. package/dist/cjs/components/audio/audio-field/form-audio-field.st.css.js.map +1 -1
  45. package/dist/cjs/components/audio/audio-player/audio-player.st.css.js +2 -2
  46. package/dist/cjs/components/audio/audio-player/audio-player.st.css.js.map +1 -1
  47. package/dist/cjs/components/color-view/cell-color-input.js +195 -0
  48. package/dist/cjs/components/color-view/cell-color-input.js.map +1 -0
  49. package/dist/cjs/components/color-view/cell-color-view.js +89 -0
  50. package/dist/cjs/components/color-view/cell-color-view.js.map +1 -0
  51. package/dist/cjs/components/color-view/cell-color-view.st.css +8 -0
  52. package/dist/cjs/components/color-view/cell-color-view.st.css.js +25 -0
  53. package/dist/cjs/components/color-view/cell-color-view.st.css.js.map +1 -0
  54. package/dist/cjs/components/color-view/color-input.js +33 -27
  55. package/dist/cjs/components/color-view/color-input.js.map +1 -1
  56. package/dist/cjs/components/color-view/color-view.st.css.js +4 -4
  57. package/dist/cjs/components/color-view/color-view.st.css.js.map +1 -1
  58. package/dist/cjs/components/color-view/hex.js +16 -0
  59. package/dist/cjs/components/color-view/hex.js.map +1 -0
  60. package/dist/cjs/components/color-view/index.js +18 -0
  61. package/dist/cjs/components/color-view/index.js.map +1 -1
  62. package/dist/cjs/components/delete-dialog/delete-dialog.st.css.js +3 -3
  63. package/dist/cjs/components/delete-dialog/delete-dialog.st.css.js.map +1 -1
  64. package/dist/cjs/components/document/form-document-field.st.css.js +7 -7
  65. package/dist/cjs/components/document/form-document-field.st.css.js.map +1 -1
  66. package/dist/cjs/components/exclamation/exclamation.st.css.js +5 -5
  67. package/dist/cjs/components/exclamation/exclamation.st.css.js.map +1 -1
  68. package/dist/cjs/components/highlighted-text/highlighted-text.st.css.js +5 -5
  69. package/dist/cjs/components/highlighted-text/highlighted-text.st.css.js.map +1 -1
  70. package/dist/cjs/components/image/thumbnail-replace-overlay.st.css.js +3 -3
  71. package/dist/cjs/components/image/thumbnail-replace-overlay.st.css.js.map +1 -1
  72. package/dist/cjs/components/media-control/cell-media-edit-shell.st.css.js +2 -2
  73. package/dist/cjs/components/media-control/cell-media-edit-shell.st.css.js.map +1 -1
  74. package/dist/cjs/components/media-control/paste-url-button.st.css.js +4 -4
  75. package/dist/cjs/components/media-control/paste-url-button.st.css.js.map +1 -1
  76. package/dist/cjs/components/media-gallery/form-media-gallery-field.st.css.js +10 -10
  77. package/dist/cjs/components/media-gallery/form-media-gallery-field.st.css.js.map +1 -1
  78. package/dist/cjs/components/media-image/media-image.st.css.js +4 -4
  79. package/dist/cjs/components/media-image/media-image.st.css.js.map +1 -1
  80. package/dist/cjs/components/media-image/overlays/overlay.st.css.js +3 -3
  81. package/dist/cjs/components/media-image/overlays/overlay.st.css.js.map +1 -1
  82. package/dist/cjs/components/media-loader/media-loader.st.css.js +3 -3
  83. package/dist/cjs/components/media-loader/media-loader.st.css.js.map +1 -1
  84. package/dist/cjs/components/media-tag/web-media-tag/media-tag.st.css.js +2 -2
  85. package/dist/cjs/components/media-tag/web-media-tag/media-tag.st.css.js.map +1 -1
  86. package/dist/cjs/components/multi-document/cell-multi-document-edit.js +516 -0
  87. package/dist/cjs/components/multi-document/cell-multi-document-edit.js.map +1 -0
  88. package/dist/cjs/components/multi-document/cell-multi-document-view.js +65 -0
  89. package/dist/cjs/components/multi-document/cell-multi-document-view.js.map +1 -0
  90. package/dist/cjs/components/multi-document/index.js +5 -1
  91. package/dist/cjs/components/multi-document/index.js.map +1 -1
  92. package/dist/cjs/components/multi-document/multi-document-input/form-multi-document.st.css.js +5 -5
  93. package/dist/cjs/components/multi-document/multi-document-input/form-multi-document.st.css.js.map +1 -1
  94. package/dist/cjs/components/reference/cell-reference-input.st.css.js +3 -3
  95. package/dist/cjs/components/reference/cell-reference-input.st.css.js.map +1 -1
  96. package/dist/cjs/components/rich-content/cell-rich-content-input.js +4 -3
  97. package/dist/cjs/components/rich-content/cell-rich-content-input.js.map +1 -1
  98. package/dist/cjs/components/rich-content/cell-rich-content-view.js +3 -2
  99. package/dist/cjs/components/rich-content/cell-rich-content-view.js.map +1 -1
  100. package/dist/cjs/components/rich-content/hooks/use-plain-text-rich-content.js +1 -1
  101. package/dist/cjs/components/rich-content/hooks/use-plain-text-rich-content.js.map +1 -1
  102. package/dist/cjs/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.js +4 -4
  103. package/dist/cjs/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.js.map +1 -1
  104. package/dist/cjs/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js +3 -3
  105. package/dist/cjs/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js.map +1 -1
  106. package/dist/cjs/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.js +2 -2
  107. 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
  108. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js +3 -3
  109. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js.map +1 -1
  110. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/hooks.js +1 -1
  111. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/hooks.js.map +1 -1
  112. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js +3 -3
  113. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js.map +1 -1
  114. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js +2 -2
  115. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js.map +1 -1
  116. package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/plugins.js +0 -5
  117. package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/plugins.js.map +1 -1
  118. package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.js +169 -192
  119. package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.js.map +1 -1
  120. package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js +7 -7
  121. package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js.map +1 -1
  122. package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.js +52 -36
  123. package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.js.map +1 -1
  124. package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css +7 -0
  125. package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js +5 -4
  126. package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js.map +1 -1
  127. package/dist/cjs/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.js +10 -10
  128. package/dist/cjs/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.js.map +1 -1
  129. package/dist/cjs/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js +4 -4
  130. package/dist/cjs/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js.map +1 -1
  131. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js +18 -18
  132. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js.map +1 -1
  133. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js +4 -4
  134. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js.map +1 -1
  135. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.js +18 -18
  136. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.js.map +1 -1
  137. package/dist/cjs/components/text/text-view.st.css.js +3 -3
  138. package/dist/cjs/components/text/text-view.st.css.js.map +1 -1
  139. package/dist/cjs/components/time-input/cell-time-input.js +8 -7
  140. package/dist/cjs/components/time-input/cell-time-input.js.map +1 -1
  141. package/dist/cjs/components/time-input/form-time-input.js +21 -2
  142. package/dist/cjs/components/time-input/form-time-input.js.map +1 -1
  143. package/dist/cjs/services/translations.js.map +1 -1
  144. package/dist/cjs/styles.global.css +1 -1
  145. package/dist/cjs/validations/rich-content.js +2 -3
  146. package/dist/cjs/validations/rich-content.js.map +1 -1
  147. package/dist/esm/assets/locale/messages_ar.json +8 -0
  148. package/dist/esm/assets/locale/messages_bg.json +8 -0
  149. package/dist/esm/assets/locale/messages_ca.json +8 -0
  150. package/dist/esm/assets/locale/messages_cs.json +8 -0
  151. package/dist/esm/assets/locale/messages_da.json +8 -0
  152. package/dist/esm/assets/locale/messages_de.json +8 -0
  153. package/dist/esm/assets/locale/messages_el.json +8 -0
  154. package/dist/esm/assets/locale/messages_en.json +8 -0
  155. package/dist/esm/assets/locale/messages_es.json +8 -0
  156. package/dist/esm/assets/locale/messages_fi.json +8 -0
  157. package/dist/esm/assets/locale/messages_fr.json +8 -0
  158. package/dist/esm/assets/locale/messages_he.json +8 -0
  159. package/dist/esm/assets/locale/messages_hi.json +8 -0
  160. package/dist/esm/assets/locale/messages_hu.json +8 -0
  161. package/dist/esm/assets/locale/messages_id.json +8 -0
  162. package/dist/esm/assets/locale/messages_it.json +8 -0
  163. package/dist/esm/assets/locale/messages_ja.json +8 -0
  164. package/dist/esm/assets/locale/messages_ko.json +8 -0
  165. package/dist/esm/assets/locale/messages_lt.json +8 -0
  166. package/dist/esm/assets/locale/messages_ms.json +8 -0
  167. package/dist/esm/assets/locale/messages_nl.json +8 -0
  168. package/dist/esm/assets/locale/messages_no.json +8 -0
  169. package/dist/esm/assets/locale/messages_pl.json +8 -0
  170. package/dist/esm/assets/locale/messages_pt.json +8 -0
  171. package/dist/esm/assets/locale/messages_ro.json +8 -0
  172. package/dist/esm/assets/locale/messages_ru.json +8 -0
  173. package/dist/esm/assets/locale/messages_sk.json +8 -0
  174. package/dist/esm/assets/locale/messages_sl.json +8 -0
  175. package/dist/esm/assets/locale/messages_sv.json +8 -0
  176. package/dist/esm/assets/locale/messages_th.json +8 -0
  177. package/dist/esm/assets/locale/messages_tl.json +8 -0
  178. package/dist/esm/assets/locale/messages_tr.json +8 -0
  179. package/dist/esm/assets/locale/messages_uk.json +8 -0
  180. package/dist/esm/assets/locale/messages_vi.json +8 -0
  181. package/dist/esm/assets/locale/messages_zh.json +8 -0
  182. package/dist/esm/assets/locale/version_file +1 -1
  183. package/dist/esm/components/address/input/address-input.st.css.js +2 -2
  184. package/dist/esm/components/audio/actions/actions-menu/actions-menu.st.css.js +2 -2
  185. package/dist/esm/components/audio/audio-field/form-audio-field.js +2 -0
  186. package/dist/esm/components/audio/audio-field/form-audio-field.js.map +1 -1
  187. package/dist/esm/components/audio/audio-field/form-audio-field.st.css.js +2 -2
  188. package/dist/esm/components/audio/audio-player/audio-player.st.css.js +2 -2
  189. package/dist/esm/components/audio/audio-player/audio-player.st.css.js.map +1 -1
  190. package/dist/esm/components/color-view/cell-color-input.js +104 -0
  191. package/dist/esm/components/color-view/cell-color-input.js.map +1 -0
  192. package/dist/esm/components/color-view/cell-color-view.js +25 -0
  193. package/dist/esm/components/color-view/cell-color-view.js.map +1 -0
  194. package/dist/esm/components/color-view/cell-color-view.st.css +8 -0
  195. package/dist/esm/components/color-view/cell-color-view.st.css.js +15 -0
  196. package/dist/esm/components/color-view/cell-color-view.st.css.js.map +1 -0
  197. package/dist/esm/components/color-view/color-input.js +12 -12
  198. package/dist/esm/components/color-view/color-input.js.map +1 -1
  199. package/dist/esm/components/color-view/color-view.st.css.js +2 -2
  200. package/dist/esm/components/color-view/hex.js +9 -0
  201. package/dist/esm/components/color-view/hex.js.map +1 -0
  202. package/dist/esm/components/color-view/index.js +3 -0
  203. package/dist/esm/components/color-view/index.js.map +1 -1
  204. package/dist/esm/components/delete-dialog/delete-dialog.st.css.js +2 -2
  205. package/dist/esm/components/document/form-document-field.st.css.js +2 -2
  206. package/dist/esm/components/exclamation/exclamation.st.css.js +2 -2
  207. package/dist/esm/components/highlighted-text/highlighted-text.st.css.js +3 -3
  208. package/dist/esm/components/image/thumbnail-replace-overlay.st.css.js +2 -2
  209. package/dist/esm/components/media-control/cell-media-edit-shell.st.css.js +2 -2
  210. package/dist/esm/components/media-control/cell-media-edit-shell.st.css.js.map +1 -1
  211. package/dist/esm/components/media-control/paste-url-button.st.css.js +2 -2
  212. package/dist/esm/components/media-gallery/form-media-gallery-field.st.css.js +2 -2
  213. package/dist/esm/components/media-image/media-image.st.css.js +3 -3
  214. package/dist/esm/components/media-image/media-image.st.css.js.map +1 -1
  215. package/dist/esm/components/media-image/overlays/overlay.st.css.js +2 -2
  216. package/dist/esm/components/media-loader/media-loader.st.css.js +2 -2
  217. package/dist/esm/components/media-tag/web-media-tag/media-tag.st.css.js +2 -2
  218. package/dist/esm/components/multi-document/cell-multi-document-edit.js +148 -0
  219. package/dist/esm/components/multi-document/cell-multi-document-edit.js.map +1 -0
  220. package/dist/esm/components/multi-document/cell-multi-document-view.js +26 -0
  221. package/dist/esm/components/multi-document/cell-multi-document-view.js.map +1 -0
  222. package/dist/esm/components/multi-document/index.js +2 -0
  223. package/dist/esm/components/multi-document/index.js.map +1 -1
  224. package/dist/esm/components/multi-document/multi-document-input/form-multi-document.st.css.js +2 -2
  225. package/dist/esm/components/multi-document/multi-document-input/form-multi-document.st.css.js.map +1 -1
  226. package/dist/esm/components/reference/cell-reference-input.st.css.js +2 -2
  227. package/dist/esm/components/rich-content/cell-rich-content-input.js +4 -3
  228. package/dist/esm/components/rich-content/cell-rich-content-input.js.map +1 -1
  229. package/dist/esm/components/rich-content/cell-rich-content-view.js +3 -4
  230. package/dist/esm/components/rich-content/cell-rich-content-view.js.map +1 -1
  231. package/dist/esm/components/rich-content/hooks/use-plain-text-rich-content.js +2 -2
  232. package/dist/esm/components/rich-content/hooks/use-plain-text-rich-content.js.map +1 -1
  233. package/dist/esm/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.js +2 -2
  234. package/dist/esm/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js +2 -2
  235. package/dist/esm/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js.map +1 -1
  236. package/dist/esm/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.js +2 -2
  237. 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
  238. package/dist/esm/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js +2 -2
  239. package/dist/esm/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js.map +1 -1
  240. package/dist/esm/components/rich-content/rich-content-input/rich-content-common/hooks.js +2 -2
  241. package/dist/esm/components/rich-content/rich-content-input/rich-content-common/hooks.js.map +1 -1
  242. package/dist/esm/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js +2 -2
  243. package/dist/esm/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js +2 -2
  244. package/dist/esm/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js.map +1 -1
  245. package/dist/esm/components/rich-content/rich-content-input/rich-content-editor/plugins.js +0 -5
  246. package/dist/esm/components/rich-content/rich-content-input/rich-content-editor/plugins.js.map +1 -1
  247. package/dist/esm/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.js +112 -135
  248. package/dist/esm/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.js.map +1 -1
  249. package/dist/esm/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js +2 -2
  250. package/dist/esm/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js.map +1 -1
  251. package/dist/esm/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.js +27 -35
  252. package/dist/esm/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.js.map +1 -1
  253. package/dist/esm/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css +7 -0
  254. package/dist/esm/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js +2 -2
  255. package/dist/esm/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js.map +1 -1
  256. package/dist/esm/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.js +2 -2
  257. package/dist/esm/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.js.map +1 -1
  258. package/dist/esm/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js +2 -2
  259. package/dist/esm/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js.map +1 -1
  260. package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js +2 -2
  261. package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js +2 -2
  262. package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.js +2 -2
  263. package/dist/esm/components/text/text-view.st.css.js +2 -2
  264. package/dist/esm/components/text/text-view.st.css.js.map +1 -1
  265. package/dist/esm/components/time-input/cell-time-input.js +6 -5
  266. package/dist/esm/components/time-input/cell-time-input.js.map +1 -1
  267. package/dist/esm/components/time-input/form-time-input.js +8 -3
  268. package/dist/esm/components/time-input/form-time-input.js.map +1 -1
  269. package/dist/esm/styles.global.css +1 -1
  270. package/dist/esm/validations/rich-content.js +3 -4
  271. package/dist/esm/validations/rich-content.js.map +1 -1
  272. package/dist/types/components/audio/audio-field/form-audio-field.d.ts.map +1 -1
  273. package/dist/types/components/audio/audio-player/audio-player.st.css.d.ts.map +1 -1
  274. package/dist/types/components/color-view/cell-color-input.d.ts +23 -0
  275. package/dist/types/components/color-view/cell-color-input.d.ts.map +1 -0
  276. package/dist/types/components/color-view/cell-color-view.d.ts +15 -0
  277. package/dist/types/components/color-view/cell-color-view.d.ts.map +1 -0
  278. package/dist/types/components/color-view/cell-color-view.st.css.d.ts +16 -0
  279. package/dist/types/components/color-view/cell-color-view.st.css.d.ts.map +1 -0
  280. package/dist/types/components/color-view/color-input.d.ts.map +1 -1
  281. package/dist/types/components/color-view/hex.d.ts +5 -0
  282. package/dist/types/components/color-view/hex.d.ts.map +1 -0
  283. package/dist/types/components/color-view/index.d.ts +3 -0
  284. package/dist/types/components/color-view/index.d.ts.map +1 -1
  285. package/dist/types/components/media-control/cell-media-edit-shell.st.css.d.ts.map +1 -1
  286. package/dist/types/components/media-image/media-image.st.css.d.ts.map +1 -1
  287. package/dist/types/components/multi-document/cell-multi-document-edit.d.ts +20 -0
  288. package/dist/types/components/multi-document/cell-multi-document-edit.d.ts.map +1 -0
  289. package/dist/types/components/multi-document/cell-multi-document-view.d.ts +13 -0
  290. package/dist/types/components/multi-document/cell-multi-document-view.d.ts.map +1 -0
  291. package/dist/types/components/multi-document/index.d.ts +4 -0
  292. package/dist/types/components/multi-document/index.d.ts.map +1 -1
  293. package/dist/types/components/multi-document/multi-document-input/form-multi-document.st.css.d.ts.map +1 -1
  294. package/dist/types/components/rich-content/cell-rich-content-input.d.ts +2 -2
  295. package/dist/types/components/rich-content/cell-rich-content-input.d.ts.map +1 -1
  296. package/dist/types/components/rich-content/cell-rich-content-view.d.ts.map +1 -1
  297. package/dist/types/components/rich-content/hooks/use-plain-text-rich-content.d.ts +2 -2
  298. package/dist/types/components/rich-content/hooks/use-plain-text-rich-content.d.ts.map +1 -1
  299. package/dist/types/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.d.ts.map +1 -1
  300. package/dist/types/components/rich-content/rich-content-input/form-input/use-rich-content-form-input.d.ts +2 -2
  301. 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
  302. package/dist/types/components/rich-content/rich-content-input/hooks.d.ts +1 -1
  303. package/dist/types/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.d.ts.map +1 -1
  304. package/dist/types/components/rich-content/rich-content-input/rich-content-common/hooks.d.ts +3 -3
  305. package/dist/types/components/rich-content/rich-content-input/rich-content-common/hooks.d.ts.map +1 -1
  306. package/dist/types/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.d.ts.map +1 -1
  307. package/dist/types/components/rich-content/rich-content-input/rich-content-editor/plugins.d.ts +2 -2
  308. package/dist/types/components/rich-content/rich-content-input/rich-content-editor/plugins.d.ts.map +1 -1
  309. package/dist/types/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.d.ts +12 -11
  310. package/dist/types/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.d.ts.map +1 -1
  311. package/dist/types/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.d.ts.map +1 -1
  312. package/dist/types/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.d.ts +2 -15
  313. package/dist/types/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.d.ts.map +1 -1
  314. package/dist/types/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.d.ts +1 -0
  315. package/dist/types/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.d.ts.map +1 -1
  316. package/dist/types/components/rich-content/rich-content-input/rich-content-viewer/plugins.d.ts +1 -1
  317. package/dist/types/components/rich-content/rich-content-input/rich-content-viewer/plugins.d.ts.map +1 -1
  318. package/dist/types/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.d.ts +5 -3
  319. package/dist/types/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.d.ts.map +1 -1
  320. package/dist/types/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.d.ts.map +1 -1
  321. package/dist/types/components/text/text-view.st.css.d.ts.map +1 -1
  322. package/dist/types/components/time-input/cell-time-input.d.ts.map +1 -1
  323. package/dist/types/components/time-input/form-time-input.d.ts.map +1 -1
  324. package/dist/types/services/translations.d.ts +1 -1
  325. package/dist/types/services/translations.d.ts.map +1 -1
  326. package/dist/types/validations/rich-content.d.ts +3 -3
  327. package/dist/types/validations/rich-content.d.ts.map +1 -1
  328. package/package.json +6 -6
  329. package/src/__tests__/components/rich-content-editor.spec.tsx +63 -72
  330. package/src/__tests__/validations/rich-content.spec.ts +4 -8
  331. package/src/assets/locale/messages_ar.json +8 -0
  332. package/src/assets/locale/messages_bg.json +8 -0
  333. package/src/assets/locale/messages_ca.json +8 -0
  334. package/src/assets/locale/messages_cs.json +8 -0
  335. package/src/assets/locale/messages_da.json +8 -0
  336. package/src/assets/locale/messages_de.json +8 -0
  337. package/src/assets/locale/messages_el.json +8 -0
  338. package/src/assets/locale/messages_en.json +8 -0
  339. package/src/assets/locale/messages_es.json +8 -0
  340. package/src/assets/locale/messages_fi.json +8 -0
  341. package/src/assets/locale/messages_fr.json +8 -0
  342. package/src/assets/locale/messages_he.json +8 -0
  343. package/src/assets/locale/messages_hi.json +8 -0
  344. package/src/assets/locale/messages_hu.json +8 -0
  345. package/src/assets/locale/messages_id.json +8 -0
  346. package/src/assets/locale/messages_it.json +8 -0
  347. package/src/assets/locale/messages_ja.json +8 -0
  348. package/src/assets/locale/messages_ko.json +8 -0
  349. package/src/assets/locale/messages_lt.json +8 -0
  350. package/src/assets/locale/messages_ms.json +8 -0
  351. package/src/assets/locale/messages_nl.json +8 -0
  352. package/src/assets/locale/messages_no.json +8 -0
  353. package/src/assets/locale/messages_pl.json +8 -0
  354. package/src/assets/locale/messages_pt.json +8 -0
  355. package/src/assets/locale/messages_ro.json +8 -0
  356. package/src/assets/locale/messages_ru.json +8 -0
  357. package/src/assets/locale/messages_sk.json +8 -0
  358. package/src/assets/locale/messages_sl.json +8 -0
  359. package/src/assets/locale/messages_sv.json +8 -0
  360. package/src/assets/locale/messages_th.json +8 -0
  361. package/src/assets/locale/messages_tl.json +8 -0
  362. package/src/assets/locale/messages_tr.json +8 -0
  363. package/src/assets/locale/messages_uk.json +8 -0
  364. package/src/assets/locale/messages_vi.json +8 -0
  365. package/src/assets/locale/messages_zh.json +8 -0
  366. package/src/assets/locale/version_file +1 -1
  367. package/src/components/address/input/address-input.st.css.ts +2 -2
  368. package/src/components/audio/actions/actions-menu/actions-menu.st.css.ts +2 -2
  369. package/src/components/audio/audio-field/form-audio-field.st.css.ts +2 -2
  370. package/src/components/audio/audio-field/form-audio-field.tsx +2 -0
  371. package/src/components/audio/audio-player/audio-player.st.css.ts +2 -2
  372. package/src/components/color-view/cell-color-input.tsx +200 -0
  373. package/src/components/color-view/cell-color-view.st.css +8 -0
  374. package/src/components/color-view/cell-color-view.st.css.ts +25 -0
  375. package/src/components/color-view/cell-color-view.tsx +52 -0
  376. package/src/components/color-view/color-input.tsx +23 -17
  377. package/src/components/color-view/color-view.st.css.ts +2 -2
  378. package/src/components/color-view/hex.ts +13 -0
  379. package/src/components/color-view/index.ts +3 -0
  380. package/src/components/delete-dialog/delete-dialog.st.css.ts +2 -2
  381. package/src/components/document/form-document-field.st.css.ts +2 -2
  382. package/src/components/exclamation/exclamation.st.css.ts +2 -2
  383. package/src/components/highlighted-text/highlighted-text.st.css.ts +3 -3
  384. package/src/components/image/thumbnail-replace-overlay.st.css.ts +2 -2
  385. package/src/components/media-control/cell-media-edit-shell.st.css.ts +2 -2
  386. package/src/components/media-control/paste-url-button.st.css.ts +2 -2
  387. package/src/components/media-gallery/form-media-gallery-field.st.css.ts +2 -2
  388. package/src/components/media-image/media-image.st.css.ts +3 -3
  389. package/src/components/media-image/overlays/overlay.st.css.ts +2 -2
  390. package/src/components/media-loader/media-loader.st.css.ts +2 -2
  391. package/src/components/media-tag/web-media-tag/media-tag.st.css.ts +2 -2
  392. package/src/components/multi-document/cell-multi-document-edit.tsx +364 -0
  393. package/src/components/multi-document/cell-multi-document-view.tsx +68 -0
  394. package/src/components/multi-document/index.ts +4 -0
  395. package/src/components/multi-document/multi-document-input/form-multi-document.st.css.ts +2 -2
  396. package/src/components/reference/cell-reference-input.st.css.ts +2 -2
  397. package/src/components/rich-content/cell-rich-content-input.tsx +11 -14
  398. package/src/components/rich-content/cell-rich-content-view.tsx +3 -4
  399. package/src/components/rich-content/hooks/use-plain-text-rich-content.ts +4 -4
  400. package/src/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.ts +2 -2
  401. package/src/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.ts +2 -2
  402. package/src/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.ts +2 -2
  403. package/src/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.ts +2 -2
  404. package/src/components/rich-content/rich-content-input/rich-content-common/hooks.ts +5 -5
  405. package/src/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.ts +2 -2
  406. package/src/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.ts +2 -2
  407. package/src/components/rich-content/rich-content-input/rich-content-editor/plugins.ts +0 -6
  408. package/src/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.ts +2 -2
  409. package/src/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.tsx +346 -355
  410. package/src/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css +7 -0
  411. package/src/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.ts +2 -2
  412. package/src/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.tsx +35 -62
  413. package/src/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.ts +2 -2
  414. package/src/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.tsx +8 -9
  415. package/src/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.ts +2 -2
  416. package/src/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.ts +2 -2
  417. package/src/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.ts +2 -2
  418. package/src/components/text/text-view.st.css.ts +2 -2
  419. package/src/components/time-input/cell-time-input.tsx +6 -12
  420. package/src/components/time-input/form-time-input.tsx +21 -4
  421. package/src/services/translations.ts +8 -0
  422. package/src/styles.global.css +1 -1
  423. package/src/validations/rich-content.ts +6 -7
@@ -0,0 +1,364 @@
1
+ import React, { useCallback, useMemo, useRef, useState } from 'react';
2
+ import {
3
+ Box,
4
+ IconButton,
5
+ Loader,
6
+ PopoverMenu,
7
+ Tag,
8
+ Tooltip,
9
+ } from '@wix/design-system';
10
+ import {
11
+ Add,
12
+ Delete,
13
+ DocumentSmall,
14
+ Download,
15
+ ExternalLink,
16
+ Link,
17
+ LinkSmall,
18
+ MoreSmall,
19
+ Replace,
20
+ } from '@wix/wix-ui-icons-common';
21
+ import { useWixPatternsContainer } from '@wix/bex-core/react';
22
+
23
+ import { getMediaTitle, MEDIA_TYPES } from '../../utils/media-utils';
24
+ import { getMediaURL } from '../../auto-field-types';
25
+ import { useTranslations, useCellEditKeyboard } from '../../hooks';
26
+ import {
27
+ PasteURLForm,
28
+ MediaFieldType,
29
+ useMediaControl,
30
+ usePasteURLForm,
31
+ } from '../media-control';
32
+ import { openDocument } from '../document/utils';
33
+
34
+ export interface CellMultiDocumentEditProps {
35
+ value: string[] | null;
36
+ onChange: (value: string[] | null) => void;
37
+ onCommit: () => void;
38
+ onCancel?: () => void;
39
+ /**
40
+ * Called before opening external UI (media manager / paste-URL form) so the
41
+ * table can set isEditing=true and protect cell focus while the modal is open.
42
+ */
43
+ onStartEdit?: () => void;
44
+ inputRef?: React.MutableRefObject<{ focus: () => void } | null | undefined>;
45
+ dataHook?: string;
46
+ /** Stable id prefix for tags. Each chip uses `${fieldId}-${index}`. */
47
+ fieldId: string;
48
+ }
49
+
50
+ export const CellMultiDocumentEdit: React.FC<CellMultiDocumentEditProps> = ({
51
+ value,
52
+ onChange,
53
+ onCommit,
54
+ onCancel,
55
+ onStartEdit,
56
+ inputRef,
57
+ dataHook,
58
+ fieldId,
59
+ }) => {
60
+ const { t } = useTranslations();
61
+ const msid = useWixPatternsContainer()?.environment?.msid;
62
+
63
+ const uris = useMemo(() => value ?? [], [value]);
64
+ const containerRef = useRef<HTMLDivElement | null>(null);
65
+
66
+ const handleMultiChange = useCallback(
67
+ (next: string[]) => {
68
+ onChange(next.length === 0 ? null : next);
69
+ onCommit();
70
+ },
71
+ [onChange, onCommit],
72
+ );
73
+
74
+ const { callMedia, downloadMedia, loading } = useMediaControl({
75
+ mediaType: MEDIA_TYPES.ALL_MEDIA,
76
+ value: uris,
77
+ onChange: handleMultiChange,
78
+ multiSelect: true,
79
+ });
80
+
81
+ // In multi-doc, dismissing a picker/form must NOT exit the whole editor —
82
+ // the user is mid-multi-edit and may want to act on other chips. Only Escape
83
+ // (via useCellEditKeyboard) and click-outside should fire onCancel.
84
+ const handleAdd = useCallback(async () => {
85
+ onStartEdit?.();
86
+ await callMedia();
87
+ }, [callMedia, onStartEdit]);
88
+
89
+ const [replaceIndex, setReplaceIndex] = useState<number | null>(null);
90
+ const handleReplace = useCallback(
91
+ (index: number) => async () => {
92
+ onStartEdit?.();
93
+ setReplaceIndex(index);
94
+ await callMedia(index);
95
+ setReplaceIndex(null);
96
+ },
97
+ [callMedia, onStartEdit],
98
+ );
99
+
100
+ const handleDelete = useCallback(
101
+ (index: number) => () => {
102
+ const next = uris.filter((_, i) => i !== index);
103
+ handleMultiChange(next);
104
+ },
105
+ [uris, handleMultiChange],
106
+ );
107
+
108
+ const handleOpen = useCallback(
109
+ (uri: string) => () => {
110
+ openDocument(getMediaURL(uri, msid));
111
+ },
112
+ [msid],
113
+ );
114
+
115
+ const handleDownload = useCallback(
116
+ (uri: string) => () => {
117
+ downloadMedia(uri);
118
+ },
119
+ [downloadMedia],
120
+ );
121
+
122
+ const onPastedURLChange = useCallback(
123
+ (urlValue: string, indexToReplace?: number) => {
124
+ if (indexToReplace !== undefined) {
125
+ const next = [...uris];
126
+ next.splice(indexToReplace, 1, urlValue);
127
+ handleMultiChange(next);
128
+ } else {
129
+ handleMultiChange([...uris, urlValue]);
130
+ }
131
+ },
132
+ [uris, handleMultiChange],
133
+ );
134
+
135
+ const pasteUrlForm = usePasteURLForm({ onChange: onPastedURLChange });
136
+
137
+ const openAddViaUrl = useCallback(() => {
138
+ onStartEdit?.();
139
+ pasteUrlForm.onOpen({ title: t('CMS.document.pasteUrl.title') })();
140
+ }, [onStartEdit, pasteUrlForm, t]);
141
+
142
+ const openReplaceViaUrl = useCallback(
143
+ (index: number, currentValue: string) => () => {
144
+ onStartEdit?.();
145
+ pasteUrlForm.onOpen({
146
+ title: t('CMS.document.replaceWithUrl.title'),
147
+ value: currentValue,
148
+ index,
149
+ })();
150
+ },
151
+ [onStartEdit, pasteUrlForm, t],
152
+ );
153
+
154
+ const handlePasteUrlClose = useCallback(() => {
155
+ pasteUrlForm.onClose();
156
+ }, [pasteUrlForm]);
157
+
158
+ const { handleContainerFocus, handleContainerBlur } = useCellEditKeyboard({
159
+ containerRef,
160
+ onCancel,
161
+ inputRef,
162
+ });
163
+
164
+ const addDocLabel = t('CMS.document.add.button.text');
165
+ const addViaUrlLabel = t('CMS.document.pasteUrl.button');
166
+
167
+ return (
168
+ <div
169
+ ref={containerRef}
170
+ data-hook={dataHook}
171
+ onFocus={handleContainerFocus}
172
+ onBlur={handleContainerBlur}
173
+ style={{
174
+ width: '100%',
175
+ // min-width: 0 lets the wrapper shrink to the column width inside the
176
+ // flex .root, so flex-wrap on the chip strip has a bounded width.
177
+ minWidth: 0,
178
+ maxWidth: '100%',
179
+ boxSizing: 'border-box',
180
+ }}
181
+ >
182
+ {uris.length === 0 ? (
183
+ <Box
184
+ align="space-between"
185
+ verticalAlign="middle"
186
+ height="100%"
187
+ padding="0 8px"
188
+ gap="SP1"
189
+ style={{ boxSizing: 'border-box' }}
190
+ >
191
+ <Tooltip content={addDocLabel} appendTo="window">
192
+ <IconButton
193
+ dataHook="multi-document-edit-add-button"
194
+ ariaLabel={addDocLabel}
195
+ size="tiny"
196
+ priority="secondary"
197
+ onClick={handleAdd}
198
+ >
199
+ <Add />
200
+ </IconButton>
201
+ </Tooltip>
202
+ <Tooltip content={addViaUrlLabel} appendTo="window">
203
+ <IconButton
204
+ dataHook="multi-document-edit-paste-url-button"
205
+ ariaLabel={addViaUrlLabel}
206
+ size="tiny"
207
+ priority="tertiary"
208
+ onClick={openAddViaUrl}
209
+ >
210
+ <LinkSmall />
211
+ </IconButton>
212
+ </Tooltip>
213
+ </Box>
214
+ ) : (
215
+ <Box
216
+ padding="SP1"
217
+ gap="SP1"
218
+ verticalAlign="middle"
219
+ style={{ flexWrap: 'wrap', boxSizing: 'border-box' }}
220
+ >
221
+ {uris.map((uri, index) => {
222
+ const isReplacing = replaceIndex === index && loading;
223
+ if (isReplacing) {
224
+ return (
225
+ <Box
226
+ key={`${fieldId}-${index}-loading`}
227
+ verticalAlign="middle"
228
+ height="24px"
229
+ >
230
+ <Loader dataHook="loader" size="tiny" />
231
+ </Box>
232
+ );
233
+ }
234
+ return (
235
+ <Box
236
+ key={`${fieldId}-${index}`}
237
+ verticalAlign="middle"
238
+ // Cap the per-chip wrapper at the chip strip's content width so a
239
+ // single long filename can't overflow the column. Apply on the
240
+ // Box (a flex item of the strip) rather than the Tag — Tag's
241
+ // PopoverNextTrigger parent has no max-width, so a percentage
242
+ // clamp on the Tag itself is degenerate at narrow widths.
243
+ style={{ minWidth: 0, maxWidth: '100%' }}
244
+ >
245
+ <PopoverMenu
246
+ textSize="small"
247
+ appendTo="window"
248
+ triggerElement={
249
+ <Tag
250
+ id={`${fieldId}-${index}`}
251
+ dataHook="multi-document-edit-tag"
252
+ size="small"
253
+ thumb={<DocumentSmall />}
254
+ removable={false}
255
+ maxWidth="100%"
256
+ >
257
+ <span
258
+ style={{
259
+ display: 'flex',
260
+ alignItems: 'center',
261
+ gap: 4,
262
+ width: '100%',
263
+ minWidth: 0,
264
+ }}
265
+ >
266
+ <span
267
+ style={{
268
+ flex: '1 1 auto',
269
+ overflow: 'hidden',
270
+ textOverflow: 'ellipsis',
271
+ whiteSpace: 'nowrap',
272
+ minWidth: 0,
273
+ }}
274
+ >
275
+ {getMediaTitle(uri)}
276
+ </span>
277
+ <MoreSmall
278
+ style={{
279
+ width: 12,
280
+ height: 12,
281
+ flexShrink: 0,
282
+ }}
283
+ />
284
+ </span>
285
+ </Tag>
286
+ }
287
+ >
288
+ <PopoverMenu.MenuItem
289
+ dataHook="multi-document-edit-action-replace"
290
+ text={t('CMS.document.action.replace')}
291
+ prefixIcon={<Replace />}
292
+ onClick={handleReplace(index)}
293
+ />
294
+ <PopoverMenu.MenuItem
295
+ dataHook="multi-document-edit-action-replace-url"
296
+ text={t('CMS.document.action.replaceWithUrl')}
297
+ prefixIcon={<Link />}
298
+ onClick={openReplaceViaUrl(index, uri)}
299
+ />
300
+ <PopoverMenu.Divider />
301
+ <PopoverMenu.MenuItem
302
+ dataHook="multi-document-edit-action-open"
303
+ text={t('CMS.document.action.open')}
304
+ prefixIcon={<ExternalLink />}
305
+ onClick={handleOpen(uri)}
306
+ />
307
+ <PopoverMenu.MenuItem
308
+ dataHook="multi-document-edit-action-download"
309
+ text={t('CMS.document.action.download')}
310
+ prefixIcon={<Download />}
311
+ onClick={handleDownload(uri)}
312
+ />
313
+ <PopoverMenu.Divider />
314
+ <PopoverMenu.MenuItem
315
+ dataHook="multi-document-edit-action-delete"
316
+ text={t('CMS.document.action.delete')}
317
+ skin="destructive"
318
+ prefixIcon={<Delete />}
319
+ onClick={handleDelete(index)}
320
+ />
321
+ </PopoverMenu>
322
+ </Box>
323
+ );
324
+ })}
325
+ <Box gap="SP1" verticalAlign="middle">
326
+ <Tooltip content={addDocLabel} appendTo="window">
327
+ <IconButton
328
+ dataHook="multi-document-edit-add-button"
329
+ ariaLabel={addDocLabel}
330
+ size="tiny"
331
+ priority="secondary"
332
+ onClick={handleAdd}
333
+ >
334
+ <Add />
335
+ </IconButton>
336
+ </Tooltip>
337
+ <Tooltip content={addViaUrlLabel} appendTo="window">
338
+ <IconButton
339
+ dataHook="multi-document-edit-paste-url-button"
340
+ ariaLabel={addViaUrlLabel}
341
+ size="tiny"
342
+ priority="tertiary"
343
+ onClick={openAddViaUrl}
344
+ >
345
+ <LinkSmall />
346
+ </IconButton>
347
+ </Tooltip>
348
+ </Box>
349
+ </Box>
350
+ )}
351
+
352
+ <PasteURLForm
353
+ title={pasteUrlForm.title}
354
+ value={pasteUrlForm.value}
355
+ show={pasteUrlForm.isOpen}
356
+ closeModal={handlePasteUrlClose}
357
+ onSave={pasteUrlForm.onSave}
358
+ fieldType={MediaFieldType.document}
359
+ />
360
+ </div>
361
+ );
362
+ };
363
+
364
+ CellMultiDocumentEdit.displayName = 'CellMultiDocumentEdit';
@@ -0,0 +1,68 @@
1
+ import React, { useMemo } from 'react';
2
+ import { Box, TagList } from '@wix/design-system';
3
+ import { DocumentSmall } from '@wix/wix-ui-icons-common';
4
+
5
+ import { getMediaTitle } from '../../utils/media-utils';
6
+
7
+ export interface CellMultiDocumentViewProps {
8
+ value: string[] | null | undefined;
9
+ dataHook?: string;
10
+ /**
11
+ * Stable DOM id prefix for the tags. WDS Tag requires `id` to be present;
12
+ * each tag uses `${fieldId}-${index}`. Callers are responsible for ensuring
13
+ * uniqueness (e.g., derive from columnId + rowKey).
14
+ */
15
+ fieldId: string;
16
+ }
17
+
18
+ export const CellMultiDocumentView: React.FC<CellMultiDocumentViewProps> = ({
19
+ value,
20
+ dataHook,
21
+ fieldId,
22
+ }) => {
23
+ const tags = useMemo(
24
+ () =>
25
+ (value ?? []).map((uri, i) => ({
26
+ id: `${fieldId}-${i}`,
27
+ dataHook: 'cell-multi-document-tag',
28
+ thumb: <DocumentSmall />,
29
+ children: getMediaTitle(uri),
30
+ removable: false as const,
31
+ })),
32
+ [value, fieldId],
33
+ );
34
+
35
+ if (tags.length === 0) {
36
+ return null;
37
+ }
38
+
39
+ return (
40
+ <Box
41
+ dataHook={dataHook}
42
+ direction="vertical"
43
+ verticalAlign="middle"
44
+ padding="0 8px"
45
+ height="100%"
46
+ width="100%"
47
+ minWidth={0}
48
+ >
49
+ <TagList
50
+ overflowMode={{
51
+ type: 'collapse',
52
+ overflowTooltipContent: (hiddenTags) =>
53
+ hiddenTags
54
+ .map((tag) =>
55
+ typeof tag.children === 'string' ? tag.children : '',
56
+ )
57
+ .filter(Boolean)
58
+ .join(', '),
59
+ }}
60
+ size="small"
61
+ dataHook="cell-multi-document-tags"
62
+ tags={tags}
63
+ />
64
+ </Box>
65
+ );
66
+ };
67
+
68
+ CellMultiDocumentView.displayName = 'CellMultiDocumentView';
@@ -1,3 +1,7 @@
1
1
  export { MultiDocumentView } from './multi-document-view/multi-document-view';
2
2
  export { FormMultiDocument } from './multi-document-input/form-multi-document';
3
3
  export { FormMultiDocumentField } from './multi-document-input/form-multi-document-field';
4
+ export { CellMultiDocumentView } from './cell-multi-document-view';
5
+ export { CellMultiDocumentEdit } from './cell-multi-document-edit';
6
+ export type { CellMultiDocumentViewProps } from './cell-multi-document-view';
7
+ export type { CellMultiDocumentEditProps } from './cell-multi-document-edit';
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../../stylable-esm-runtime.js"
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "formmultidocument3697455280";
8
+ var _namespace_ = "formmultidocument239392594";
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":"formmultidocument3697455280__root","viewRoot":"formmultidocument3697455280__viewRoot","singleViewWrapper":"formmultidocument3697455280__singleViewWrapper","addDocumentButton":"formmultidocument3697455280__addDocumentButton"};
16
+ export var classes = {"root":"formmultidocument239392594__root","viewRoot":"formmultidocument239392594__viewRoot","singleViewWrapper":"formmultidocument239392594__singleViewWrapper","addDocumentButton":"formmultidocument239392594__addDocumentButton"};
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_ = "cellreferenceinput3231278211";
8
+ var _namespace_ = "cellreferenceinput3112868832";
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":"cellreferenceinput3231278211__root","autocomplete":"cellreferenceinput3231278211__autocomplete"};
16
+ export var classes = {"root":"cellreferenceinput3112868832__root","autocomplete":"cellreferenceinput3112868832__autocomplete"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -1,18 +1,15 @@
1
1
  import React, { useCallback, useMemo, useRef } from 'react';
2
2
 
3
- import type { RichContent } from '@wix/ricos';
4
- import {
5
- ensureRicosContent,
6
- fromPlainText,
7
- toPlainTextSync,
8
- } from '@wix/ricos/content';
3
+ import type { RicosDocument } from '@wix/ricos';
4
+ import { fromPlainText, toPlainTextSync } from '@wix/ricos/content';
9
5
 
10
6
  import { RichContentEditor } from './rich-content-input/rich-content-editor';
11
7
  import { useRichContentState } from './rich-content-input/rich-content-common';
8
+ import { hardConvert } from '../../validations/rich-content';
12
9
 
13
10
  export interface CellRichContentInputProps {
14
11
  value?: unknown;
15
- onChange: (value: RichContent | undefined) => void;
12
+ onChange: (value: RicosDocument | undefined) => void;
16
13
  onSave: () => void;
17
14
  /** Typed key from type-to-edit — appended to a plain-text extraction of the existing content (formatting is lost). */
18
15
  initialTypedKey?: string;
@@ -30,14 +27,14 @@ export const CellRichContentInput: React.FC<CellRichContentInputProps> = ({
30
27
 
31
28
  // Compute initial editor content once on mount.
32
29
  // If there's a typed key, append it to the existing plain-text form of the content.
33
- const initialContent = useMemo((): RichContent | undefined => {
30
+ const initialContent = useMemo((): RicosDocument | undefined => {
34
31
  if (initialTypedKey) {
35
32
  const existingText = value
36
- ? toPlainTextSync(ensureRicosContent(value as any), { delimiter: '\n' })
33
+ ? toPlainTextSync(hardConvert(value), { delimiter: '\n' })
37
34
  : '';
38
- return fromPlainText(existingText + initialTypedKey) as RichContent;
35
+ return fromPlainText(existingText + initialTypedKey);
39
36
  }
40
- return value as RichContent | undefined;
37
+ return value === undefined ? undefined : hardConvert(value);
41
38
  // eslint-disable-next-line react-hooks/exhaustive-deps
42
39
  }, []); // Deliberately run only on mount — typed key is a one-shot initializer
43
40
 
@@ -45,14 +42,14 @@ export const CellRichContentInput: React.FC<CellRichContentInputProps> = ({
45
42
  useRichContentState(initialContent);
46
43
 
47
44
  const handleChange = useCallback(
48
- (content: RichContent) => setLocalValue(content),
45
+ (content: RicosDocument) => setLocalValue(content),
49
46
  [setLocalValue],
50
47
  );
51
48
 
52
49
  /** Commit the current content and exit edit mode.
53
50
  * Guards against double-save (X button + Escape firing simultaneously). */
54
51
  const handleSave = useCallback(
55
- (content?: RichContent) => {
52
+ (content?: RicosDocument) => {
56
53
  if (hasSavedRef.current) {
57
54
  return;
58
55
  }
@@ -64,7 +61,7 @@ export const CellRichContentInput: React.FC<CellRichContentInputProps> = ({
64
61
  );
65
62
 
66
63
  const handleExitFullScreen = useCallback(
67
- (content?: RichContent) => {
64
+ (content?: RicosDocument) => {
68
65
  handleSave(content);
69
66
  },
70
67
  [handleSave],
@@ -1,8 +1,9 @@
1
1
  import React from 'react';
2
2
 
3
- import { ensureRicosContent, toPlainTextSync } from '@wix/ricos/content';
3
+ import { toPlainTextSync } from '@wix/ricos/content';
4
4
 
5
5
  import { TextView } from '../text';
6
+ import { hardConvert } from '../../validations/rich-content';
6
7
 
7
8
  export interface CellRichContentViewProps {
8
9
  value?: unknown;
@@ -13,9 +14,7 @@ export interface CellRichContentViewProps {
13
14
  export const CellRichContentView: React.FC<CellRichContentViewProps> = ({
14
15
  value,
15
16
  }) => {
16
- const plainText = value
17
- ? toPlainTextSync(ensureRicosContent(value as any), { delimiter: ' ' })
18
- : '';
17
+ const plainText = value ? toPlainTextSync(hardConvert(value), { delimiter: ' ' }) : '';
19
18
 
20
19
  return <TextView data={plainText} />;
21
20
  };
@@ -1,19 +1,19 @@
1
1
  import { useEffect } from 'react';
2
2
 
3
- import type { RichContent } from '@wix/ricos/content';
4
- import { ensureRicosContent, toPlainText } from '@wix/ricos/content';
3
+ import type { RicosDocument } from '@wix/ricos/content';
4
+ import { toPlainText } from '@wix/ricos/content';
5
5
 
6
6
  import { safeStringify } from '../../../utils';
7
7
  import { useMountedState } from './use-mounted-state';
8
8
 
9
- export const usePlainTextRichContent = (content?: RichContent) => {
9
+ export const usePlainTextRichContent = (content?: RicosDocument) => {
10
10
  const [plainTextContent, setPlainTextContent] = useMountedState('');
11
11
  const [isConverting, setIsConverting] = useMountedState(false);
12
12
 
13
13
  useEffect(() => {
14
14
  if (content) {
15
15
  setIsConverting(true);
16
- toPlainText(ensureRicosContent(content), { delimiter: ' ' })
16
+ toPlainText(content, { delimiter: ' ' })
17
17
  .catch(() => safeStringify(content))
18
18
  .then(setPlainTextContent)
19
19
  .finally(() => setIsConverting(false));
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../../../stylable-esm-runtime.
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "richcontentdefaultvalueinput908406586";
8
+ var _namespace_ = "richcontentdefaultvalueinput998980344";
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":"richcontentdefaultvalueinput908406586__root","richContentEditorContainer":"richcontentdefaultvalueinput908406586__richContentEditorContainer","editor":"richcontentdefaultvalueinput908406586__editor"};
16
+ export var classes = {"root":"richcontentdefaultvalueinput998980344__root","richContentEditorContainer":"richcontentdefaultvalueinput998980344__richContentEditorContainer","editor":"richcontentdefaultvalueinput998980344__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_ = "richcontentforminput4035690";
8
+ var _namespace_ = "richcontentforminput1753039762";
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":"richcontentforminput4035690__root","editor":"richcontentforminput4035690__editor"};
16
+ export var classes = {"root":"richcontentforminput1753039762__root","editor":"richcontentforminput1753039762__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_ = "richcontentformreadonlyinput516739647";
8
+ var _namespace_ = "richcontentformreadonlyinput2205100705";
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":"richcontentformreadonlyinput516739647__root"};
16
+ export var classes = {"root":"richcontentformreadonlyinput2205100705__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_ = "fullscreenmodal4175496484";
8
+ var _namespace_ = "fullscreenmodal13930613";
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":"fullscreenmodal4175496484__root","modalContent":"fullscreenmodal4175496484__modalContent"};
16
+ export var classes = {"root":"fullscreenmodal13930613__root","modalContent":"fullscreenmodal13930613__modalContent"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};