@wix/patterns-fields 1.87.0 → 1.89.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.
- package/dist/cjs/components/address/input/address-input.st.css.js +3 -3
- package/dist/cjs/components/address/input/address-input.st.css.js.map +1 -1
- package/dist/cjs/components/audio/actions/actions-menu/actions-menu.st.css.js +3 -3
- package/dist/cjs/components/audio/actions/actions-menu/actions-menu.st.css.js.map +1 -1
- package/dist/cjs/components/audio/audio-field/controlled-audio.uni.driver.js +29 -0
- package/dist/cjs/components/audio/audio-field/controlled-audio.uni.driver.js.map +1 -0
- package/dist/cjs/components/audio/audio-field/form-audio-field.js +42 -12
- package/dist/cjs/components/audio/audio-field/form-audio-field.js.map +1 -1
- package/dist/cjs/components/audio/audio-field/form-audio-field.st.css.js +4 -4
- package/dist/cjs/components/audio/audio-field/form-audio-field.st.css.js.map +1 -1
- package/dist/cjs/components/audio/audio-player/audio-player.st.css.js +2 -2
- package/dist/cjs/components/audio/audio-player/audio-player.st.css.js.map +1 -1
- package/dist/cjs/components/color-view/cell-color-view.st.css.js +3 -3
- package/dist/cjs/components/color-view/cell-color-view.st.css.js.map +1 -1
- package/dist/cjs/components/color-view/color-view.st.css.js +4 -4
- package/dist/cjs/components/color-view/color-view.st.css.js.map +1 -1
- package/dist/cjs/components/controlled-input.uni.driver.js +7 -1
- package/dist/cjs/components/controlled-input.uni.driver.js.map +1 -1
- package/dist/cjs/components/delete-dialog/delete-dialog.st.css.js +3 -3
- package/dist/cjs/components/delete-dialog/delete-dialog.st.css.js.map +1 -1
- package/dist/cjs/components/document/form-document-field.st.css.js +7 -7
- package/dist/cjs/components/document/form-document-field.st.css.js.map +1 -1
- package/dist/cjs/components/exclamation/exclamation.st.css.js +5 -5
- package/dist/cjs/components/exclamation/exclamation.st.css.js.map +1 -1
- package/dist/cjs/components/field-validation-settings/field-validation-settings-input.js +44 -42
- package/dist/cjs/components/field-validation-settings/field-validation-settings-input.js.map +1 -1
- package/dist/cjs/components/highlighted-text/highlighted-text.st.css.js +5 -5
- package/dist/cjs/components/highlighted-text/highlighted-text.st.css.js.map +1 -1
- package/dist/cjs/components/image/controlled-image.uni.driver.js +23 -0
- package/dist/cjs/components/image/controlled-image.uni.driver.js.map +1 -0
- package/dist/cjs/components/image/form-image-field.js +124 -0
- package/dist/cjs/components/image/form-image-field.js.map +1 -0
- package/dist/cjs/components/image/form-image-input.js +13 -50
- package/dist/cjs/components/image/form-image-input.js.map +1 -1
- package/dist/cjs/components/image/index.js +6 -0
- package/dist/cjs/components/image/index.js.map +1 -1
- package/dist/cjs/components/image/thumbnail-replace-overlay.st.css.js +3 -3
- package/dist/cjs/components/image/thumbnail-replace-overlay.st.css.js.map +1 -1
- package/dist/cjs/components/media-control/cell-media-edit-shell.st.css.js +2 -2
- package/dist/cjs/components/media-control/cell-media-edit-shell.st.css.js.map +1 -1
- package/dist/cjs/components/media-control/paste-url-button.st.css.js +4 -4
- package/dist/cjs/components/media-control/paste-url-button.st.css.js.map +1 -1
- package/dist/cjs/components/media-control/use-media-control.js +4 -1
- package/dist/cjs/components/media-control/use-media-control.js.map +1 -1
- package/dist/cjs/components/media-gallery/cell-media-gallery-edit.js +33 -28
- package/dist/cjs/components/media-gallery/cell-media-gallery-edit.js.map +1 -1
- package/dist/cjs/components/media-gallery/form-media-gallery-field.st.css.js +10 -10
- package/dist/cjs/components/media-gallery/form-media-gallery-field.st.css.js.map +1 -1
- package/dist/cjs/components/media-image/media-image.st.css.js +4 -4
- package/dist/cjs/components/media-image/media-image.st.css.js.map +1 -1
- package/dist/cjs/components/media-image/overlays/overlay.st.css.js +3 -3
- package/dist/cjs/components/media-image/overlays/overlay.st.css.js.map +1 -1
- package/dist/cjs/components/media-loader/media-loader.st.css.js +3 -3
- package/dist/cjs/components/media-loader/media-loader.st.css.js.map +1 -1
- package/dist/cjs/components/media-tag/web-media-tag/media-tag.st.css.js +2 -2
- package/dist/cjs/components/media-tag/web-media-tag/media-tag.st.css.js.map +1 -1
- package/dist/cjs/components/multi-document/cell-multi-document-edit.js +1 -1
- package/dist/cjs/components/multi-document/cell-multi-document-edit.js.map +1 -1
- package/dist/cjs/components/multi-document/cell-multi-document-edit.st.css.js +3 -3
- package/dist/cjs/components/multi-document/cell-multi-document-edit.st.css.js.map +1 -1
- package/dist/cjs/components/multi-document/multi-document-input/form-multi-document.st.css.js +5 -5
- package/dist/cjs/components/multi-document/multi-document-input/form-multi-document.st.css.js.map +1 -1
- package/dist/cjs/components/reference/cell-multi-reference-input.st.css.js +2 -2
- package/dist/cjs/components/reference/cell-multi-reference-input.st.css.js.map +1 -1
- package/dist/cjs/components/reference/cell-reference-input.st.css.js +3 -3
- package/dist/cjs/components/reference/cell-reference-input.st.css.js.map +1 -1
- package/dist/cjs/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.js +4 -4
- package/dist/cjs/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.js.map +1 -1
- package/dist/cjs/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js +3 -3
- package/dist/cjs/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js.map +1 -1
- package/dist/cjs/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.js +2 -2
- 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
- package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js +3 -3
- package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js.map +1 -1
- package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js +3 -3
- package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js.map +1 -1
- package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js +2 -2
- package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js.map +1 -1
- package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js +7 -7
- package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js.map +1 -1
- package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js +5 -5
- package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js.map +1 -1
- package/dist/cjs/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js +4 -4
- package/dist/cjs/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js.map +1 -1
- package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js +18 -18
- package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js.map +1 -1
- package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js +4 -4
- package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js.map +1 -1
- package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.js +18 -18
- package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.js.map +1 -1
- package/dist/cjs/components/text/text-view.st.css.js +3 -3
- package/dist/cjs/components/text/text-view.st.css.js.map +1 -1
- package/dist/cjs/components/video/controlled-video.uni.driver.js +40 -0
- package/dist/cjs/components/video/controlled-video.uni.driver.js.map +1 -0
- package/dist/cjs/components/video/form-video-field.js +358 -0
- package/dist/cjs/components/video/form-video-field.js.map +1 -0
- package/dist/cjs/components/video/form-video.js +22 -284
- package/dist/cjs/components/video/form-video.js.map +1 -1
- package/dist/cjs/components/video/index.js +4 -1
- package/dist/cjs/components/video/index.js.map +1 -1
- package/dist/cjs/styles.global.css +1 -1
- package/dist/esm/components/address/input/address-input.st.css.js +2 -2
- package/dist/esm/components/audio/actions/actions-menu/actions-menu.st.css.js +2 -2
- package/dist/esm/components/audio/audio-field/controlled-audio.uni.driver.js +26 -0
- package/dist/esm/components/audio/audio-field/controlled-audio.uni.driver.js.map +1 -0
- package/dist/esm/components/audio/audio-field/form-audio-field.js +6 -1
- package/dist/esm/components/audio/audio-field/form-audio-field.js.map +1 -1
- package/dist/esm/components/audio/audio-field/form-audio-field.st.css.js +2 -2
- package/dist/esm/components/audio/audio-player/audio-player.st.css.js +2 -2
- package/dist/esm/components/color-view/cell-color-view.st.css.js +2 -2
- package/dist/esm/components/color-view/color-view.st.css.js +2 -2
- package/dist/esm/components/controlled-input.uni.driver.js +6 -0
- package/dist/esm/components/controlled-input.uni.driver.js.map +1 -1
- package/dist/esm/components/delete-dialog/delete-dialog.st.css.js +2 -2
- package/dist/esm/components/document/form-document-field.st.css.js +2 -2
- package/dist/esm/components/exclamation/exclamation.st.css.js +2 -2
- package/dist/esm/components/field-validation-settings/field-validation-settings-input.js +14 -11
- package/dist/esm/components/field-validation-settings/field-validation-settings-input.js.map +1 -1
- package/dist/esm/components/highlighted-text/highlighted-text.st.css.js +3 -3
- package/dist/esm/components/image/controlled-image.uni.driver.js +19 -0
- package/dist/esm/components/image/controlled-image.uni.driver.js.map +1 -0
- package/dist/esm/components/image/form-image-field.js +48 -0
- package/dist/esm/components/image/form-image-field.js.map +1 -0
- package/dist/esm/components/image/form-image-input.js +11 -33
- package/dist/esm/components/image/form-image-input.js.map +1 -1
- package/dist/esm/components/image/index.js +1 -0
- package/dist/esm/components/image/index.js.map +1 -1
- package/dist/esm/components/image/thumbnail-replace-overlay.st.css.js +2 -2
- package/dist/esm/components/media-control/cell-media-edit-shell.st.css.js +2 -2
- package/dist/esm/components/media-control/cell-media-edit-shell.st.css.js.map +1 -1
- package/dist/esm/components/media-control/paste-url-button.st.css.js +2 -2
- package/dist/esm/components/media-control/paste-url-button.st.css.js.map +1 -1
- package/dist/esm/components/media-control/use-media-control.js +4 -3
- package/dist/esm/components/media-control/use-media-control.js.map +1 -1
- package/dist/esm/components/media-gallery/cell-media-gallery-edit.js +12 -9
- package/dist/esm/components/media-gallery/cell-media-gallery-edit.js.map +1 -1
- package/dist/esm/components/media-gallery/form-media-gallery-field.st.css.js +2 -2
- package/dist/esm/components/media-image/media-image.st.css.js +3 -3
- package/dist/esm/components/media-image/media-image.st.css.js.map +1 -1
- package/dist/esm/components/media-image/overlays/overlay.st.css.js +2 -2
- package/dist/esm/components/media-loader/media-loader.st.css.js +2 -2
- package/dist/esm/components/media-tag/web-media-tag/media-tag.st.css.js +2 -2
- package/dist/esm/components/multi-document/cell-multi-document-edit.js +1 -1
- package/dist/esm/components/multi-document/cell-multi-document-edit.js.map +1 -1
- package/dist/esm/components/multi-document/cell-multi-document-edit.st.css.js +2 -2
- package/dist/esm/components/multi-document/cell-multi-document-edit.st.css.js.map +1 -1
- package/dist/esm/components/multi-document/multi-document-input/form-multi-document.st.css.js +2 -2
- package/dist/esm/components/reference/cell-multi-reference-input.st.css.js +2 -2
- package/dist/esm/components/reference/cell-multi-reference-input.st.css.js.map +1 -1
- package/dist/esm/components/reference/cell-reference-input.st.css.js +2 -2
- package/dist/esm/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.js +2 -2
- package/dist/esm/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js +2 -2
- package/dist/esm/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js.map +1 -1
- package/dist/esm/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.js +2 -2
- 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
- package/dist/esm/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js +2 -2
- package/dist/esm/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js.map +1 -1
- package/dist/esm/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js +2 -2
- package/dist/esm/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js.map +1 -1
- package/dist/esm/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js +2 -2
- package/dist/esm/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js.map +1 -1
- package/dist/esm/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js +2 -2
- package/dist/esm/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js +2 -2
- package/dist/esm/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js +2 -2
- package/dist/esm/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js.map +1 -1
- package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js +2 -2
- package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js.map +1 -1
- package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js +2 -2
- package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.js +2 -2
- package/dist/esm/components/text/text-view.st.css.js +2 -2
- package/dist/esm/components/video/controlled-video.uni.driver.js +37 -0
- package/dist/esm/components/video/controlled-video.uni.driver.js.map +1 -0
- package/dist/esm/components/video/form-video-field.js +71 -0
- package/dist/esm/components/video/form-video-field.js.map +1 -0
- package/dist/esm/components/video/form-video.js +17 -56
- package/dist/esm/components/video/form-video.js.map +1 -1
- package/dist/esm/components/video/index.js +1 -0
- package/dist/esm/components/video/index.js.map +1 -1
- package/dist/esm/styles.global.css +1 -1
- package/dist/types/components/audio/audio-field/controlled-audio.uni.driver.d.ts +18 -0
- package/dist/types/components/audio/audio-field/controlled-audio.uni.driver.d.ts.map +1 -0
- package/dist/types/components/audio/audio-field/form-audio-field.d.ts +12 -1
- package/dist/types/components/audio/audio-field/form-audio-field.d.ts.map +1 -1
- package/dist/types/components/controlled-input.uni.driver.d.ts +74 -0
- package/dist/types/components/controlled-input.uni.driver.d.ts.map +1 -1
- package/dist/types/components/field-validation-settings/field-validation-settings-input.d.ts +4 -2
- package/dist/types/components/field-validation-settings/field-validation-settings-input.d.ts.map +1 -1
- package/dist/types/components/image/controlled-image.uni.driver.d.ts +40 -0
- package/dist/types/components/image/controlled-image.uni.driver.d.ts.map +1 -0
- package/dist/types/components/image/form-image-field.d.ts +15 -0
- package/dist/types/components/image/form-image-field.d.ts.map +1 -0
- package/dist/types/components/image/form-image-input.d.ts.map +1 -1
- package/dist/types/components/image/index.d.ts +1 -0
- package/dist/types/components/image/index.d.ts.map +1 -1
- package/dist/types/components/media-control/cell-media-edit-shell.st.css.d.ts.map +1 -1
- package/dist/types/components/media-control/paste-url-button.st.css.d.ts.map +1 -1
- package/dist/types/components/media-control/use-media-control.d.ts.map +1 -1
- package/dist/types/components/media-gallery/cell-media-gallery-edit.d.ts.map +1 -1
- package/dist/types/components/media-image/media-image.st.css.d.ts.map +1 -1
- package/dist/types/components/multi-document/cell-multi-document-edit.st.css.d.ts.map +1 -1
- package/dist/types/components/reference/cell-multi-reference-input.st.css.d.ts.map +1 -1
- package/dist/types/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.d.ts.map +1 -1
- 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
- package/dist/types/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.d.ts.map +1 -1
- package/dist/types/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.d.ts.map +1 -1
- 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
- package/dist/types/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.d.ts.map +1 -1
- package/dist/types/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.d.ts.map +1 -1
- package/dist/types/components/video/controlled-video.uni.driver.d.ts +22 -0
- package/dist/types/components/video/controlled-video.uni.driver.d.ts.map +1 -0
- package/dist/types/components/video/form-video-field.d.ts +29 -0
- package/dist/types/components/video/form-video-field.d.ts.map +1 -0
- package/dist/types/components/video/form-video.d.ts.map +1 -1
- package/dist/types/components/video/index.d.ts +2 -0
- package/dist/types/components/video/index.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/__tests__/components/field-validation-settings/field-validation-settings-input.spec.tsx +20 -1
- package/src/__tests__/exports/controlled-inputs.spec.tsx +677 -1
- package/src/components/address/input/address-input.st.css.ts +2 -2
- package/src/components/audio/actions/actions-menu/actions-menu.st.css.ts +2 -2
- package/src/components/audio/audio-field/controlled-audio.uni.driver.ts +35 -0
- package/src/components/audio/audio-field/form-audio-field.st.css.ts +2 -2
- package/src/components/audio/audio-field/form-audio-field.tsx +41 -1
- package/src/components/audio/audio-player/audio-player.st.css.ts +2 -2
- package/src/components/color-view/cell-color-view.st.css.ts +2 -2
- package/src/components/color-view/color-view.st.css.ts +2 -2
- package/src/components/controlled-input.uni.driver.ts +6 -0
- package/src/components/delete-dialog/delete-dialog.st.css.ts +2 -2
- package/src/components/document/form-document-field.st.css.ts +2 -2
- package/src/components/exclamation/exclamation.st.css.ts +2 -2
- package/src/components/field-validation-settings/field-validation-settings-input.tsx +22 -10
- package/src/components/highlighted-text/highlighted-text.st.css.ts +3 -3
- package/src/components/image/controlled-image.uni.driver.ts +30 -0
- package/src/components/image/form-image-field.tsx +124 -0
- package/src/components/image/form-image-input.tsx +13 -46
- package/src/components/image/index.ts +1 -0
- package/src/components/image/thumbnail-replace-overlay.st.css.ts +2 -2
- package/src/components/media-control/cell-media-edit-shell.st.css.ts +2 -2
- package/src/components/media-control/paste-url-button.st.css.ts +2 -2
- package/src/components/media-control/use-media-control.ts +4 -3
- package/src/components/media-gallery/cell-media-gallery-edit.tsx +14 -9
- package/src/components/media-gallery/form-media-gallery-field.st.css.ts +2 -2
- package/src/components/media-image/media-image.st.css.ts +3 -3
- package/src/components/media-image/overlays/overlay.st.css.ts +2 -2
- package/src/components/media-loader/media-loader.st.css.ts +2 -2
- package/src/components/media-tag/web-media-tag/media-tag.st.css.ts +2 -2
- package/src/components/multi-document/cell-multi-document-edit.st.css.ts +2 -2
- package/src/components/multi-document/cell-multi-document-edit.tsx +1 -1
- package/src/components/multi-document/multi-document-input/form-multi-document.st.css.ts +2 -2
- package/src/components/reference/cell-multi-reference-input.st.css.ts +2 -2
- package/src/components/reference/cell-reference-input.st.css.ts +2 -2
- package/src/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.ts +2 -2
- package/src/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.ts +2 -2
- package/src/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.ts +2 -2
- package/src/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.ts +2 -2
- package/src/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.ts +2 -2
- package/src/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.ts +2 -2
- package/src/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.ts +2 -2
- package/src/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.ts +2 -2
- package/src/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.ts +2 -2
- package/src/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.ts +2 -2
- package/src/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.ts +2 -2
- package/src/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.ts +2 -2
- package/src/components/text/text-view.st.css.ts +2 -2
- package/src/components/video/controlled-video.uni.driver.ts +48 -0
- package/src/components/video/form-video-field.tsx +268 -0
- package/src/components/video/form-video.tsx +21 -179
- package/src/components/video/index.ts +6 -0
- package/src/styles.global.css +1 -1
package/src/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../../../stylable-esm-runtime.
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
var _namespace_ = "
|
|
8
|
+
var _namespace_ = "richtexteditor3399826991";
|
|
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":"
|
|
16
|
+
export var classes = {"root":"richtexteditor3399826991__root","nativeInput":"richtexteditor3399826991__nativeInput","editor":"richtexteditor3399826991__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-runti
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
var _namespace_ = "
|
|
8
|
+
var _namespace_ = "toolbar1543323063";
|
|
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":"
|
|
16
|
+
export var classes = {"root":"toolbar1543323063__root","item":"toolbar1543323063__item","separator":"toolbar1543323063__separator","clearFormatting":"toolbar1543323063__clearFormatting","fullScreen":"toolbar1543323063__fullScreen","dropdownItemContent":"toolbar1543323063__dropdownItemContent","dropdownItemTitle":"toolbar1543323063__dropdownItemTitle","dropdownItemSubtitle":"toolbar1543323063__dropdownItemSubtitle","dropdownHeaderOne":"toolbar1543323063__dropdownHeaderOne","dropdownHeaderTwo":"toolbar1543323063__dropdownHeaderTwo","dropdownHeaderThree":"toolbar1543323063__dropdownHeaderThree","dropdownHeaderFour":"toolbar1543323063__dropdownHeaderFour","dropdownHeaderFive":"toolbar1543323063__dropdownHeaderFive","dropdownHeaderSix":"toolbar1543323063__dropdownHeaderSix","dropdownParagraphOne":"toolbar1543323063__dropdownParagraphOne","dropdownNormalText":"toolbar1543323063__dropdownNormalText","dropdownParagraphThree":"toolbar1543323063__dropdownParagraphThree"};
|
|
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_ = "
|
|
8
|
+
var _namespace_ = "textview3643180884";
|
|
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":"
|
|
16
|
+
export var classes = {"root":"textview3643180884__root","textView":"textview3643180884__textView"};
|
|
17
17
|
export var keyframes = {};
|
|
18
18
|
export var layers = {};
|
|
19
19
|
export var containers = {};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { UniDriver } from '@wix/wix-ui-test-utils/unidriver';
|
|
2
|
+
import {
|
|
3
|
+
AddItemUniDriver,
|
|
4
|
+
ImageViewerUniDriver,
|
|
5
|
+
} from '@wix/design-system/dist/testkit/unidriver';
|
|
6
|
+
|
|
7
|
+
import { baseUniDriverFactory } from '../../testkit/base-driver';
|
|
8
|
+
|
|
9
|
+
export function ControlledVideoInputUniDriver(
|
|
10
|
+
base: UniDriver,
|
|
11
|
+
body: UniDriver,
|
|
12
|
+
) {
|
|
13
|
+
// The dataHook sits on the ImageViewer in the empty state and on the
|
|
14
|
+
// MediaOverlay in the filled one, so `base` is either.
|
|
15
|
+
const imageViewer = ImageViewerUniDriver(base, body);
|
|
16
|
+
// `add-image` is ImageViewer's own hook for its empty-state AddItem.
|
|
17
|
+
const addItem = AddItemUniDriver(base.$('[data-hook="add-image"]'), body);
|
|
18
|
+
const addButton = base.$('[data-hook="add-image"] [data-hook="additem"]');
|
|
19
|
+
// Scoped to button / menuitem so a consumer dataHook that happens to end in
|
|
20
|
+
// one of these suffixes cannot match the root element instead.
|
|
21
|
+
const replaceButton = base.$('button[data-hook$="-replace"]');
|
|
22
|
+
const moreButton = base.$('button[data-hook$="-more"]');
|
|
23
|
+
const previewAction = body.$('[role="menuitem"][data-hook$="-preview"]');
|
|
24
|
+
const downloadAction = body.$('[role="menuitem"][data-hook$="-download"]');
|
|
25
|
+
const deleteAction = body.$('[role="menuitem"][data-hook$="-delete"]');
|
|
26
|
+
|
|
27
|
+
const isDisabled = async (element: UniDriver) =>
|
|
28
|
+
(await element.attr('disabled')) !== null ||
|
|
29
|
+
(await element.attr('aria-disabled')) === 'true';
|
|
30
|
+
|
|
31
|
+
return {
|
|
32
|
+
...baseUniDriverFactory(base),
|
|
33
|
+
isAddItemVisible: () => imageViewer.isAddItemVisible(),
|
|
34
|
+
clickAddButton: () => imageViewer.clickAdd(),
|
|
35
|
+
isAddButtonFocused: () => addItem.isFocused(),
|
|
36
|
+
isAddButtonDisabled: () => isDisabled(addButton),
|
|
37
|
+
hasReplaceButton: () => replaceButton.exists(),
|
|
38
|
+
hasMoreButton: () => moreButton.exists(),
|
|
39
|
+
isReplaceDisabled: () => isDisabled(replaceButton),
|
|
40
|
+
clickReplace: () => replaceButton.click(),
|
|
41
|
+
clickMore: () => moreButton.click(),
|
|
42
|
+
clickPreview: () => previewAction.click(),
|
|
43
|
+
clickDownload: () => downloadAction.click(),
|
|
44
|
+
clickDelete: () => deleteAction.click(),
|
|
45
|
+
isDeleteDisabled: () => isDisabled(deleteAction),
|
|
46
|
+
getPreviewTitle: () => body.$('[data-hook="baseModalLayout-title"]').text(),
|
|
47
|
+
};
|
|
48
|
+
}
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
import type { FC } from 'react';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import {
|
|
4
|
+
Box,
|
|
5
|
+
CustomModalLayout,
|
|
6
|
+
IconButton,
|
|
7
|
+
Image,
|
|
8
|
+
ImageViewer,
|
|
9
|
+
MediaOverlay,
|
|
10
|
+
Modal,
|
|
11
|
+
PopoverMenu,
|
|
12
|
+
Tooltip,
|
|
13
|
+
} from '@wix/design-system';
|
|
14
|
+
import {
|
|
15
|
+
Delete,
|
|
16
|
+
Download,
|
|
17
|
+
Maximize,
|
|
18
|
+
More,
|
|
19
|
+
Replace,
|
|
20
|
+
} from '@wix/wix-ui-icons-common/lazy';
|
|
21
|
+
import { useIsMobile } from '@wix/bex-core/react';
|
|
22
|
+
|
|
23
|
+
import type { ControlledInputProps } from '../../types/controlled-input';
|
|
24
|
+
import { useMergedRef, useTranslations, useWithCallback } from '../../hooks';
|
|
25
|
+
import { MEDIA_HEIGHT, MEDIA_MAX_WIDTH } from '../../utils/media-constants';
|
|
26
|
+
import { MEDIA_TYPES } from '../../utils';
|
|
27
|
+
import type { FormMediaControlProps } from '../media-control';
|
|
28
|
+
import { useMediaControl } from '../media-control';
|
|
29
|
+
|
|
30
|
+
import { useVideoPreview } from './use-video-preview';
|
|
31
|
+
|
|
32
|
+
interface ImageViewerActions {
|
|
33
|
+
focus: () => void;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export interface VideoFieldDataHooks {
|
|
37
|
+
replace: string;
|
|
38
|
+
more: string;
|
|
39
|
+
preview: string;
|
|
40
|
+
download: string;
|
|
41
|
+
delete: string;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// `invalid` is not part of this contract. The empty state's ImageViewer has no
|
|
45
|
+
// error prop; it takes its error styling from the enclosing WDS FormField's
|
|
46
|
+
// status context. To show an error, render the field inside a FormField with
|
|
47
|
+
// status="error".
|
|
48
|
+
export interface FormVideoFieldProps
|
|
49
|
+
extends Omit<FormMediaControlProps, 'invalid'> {
|
|
50
|
+
/** Overrides for the action-button hooks, which otherwise derive from `dataHook`. */
|
|
51
|
+
dataHooks?: Partial<VideoFieldDataHooks>;
|
|
52
|
+
/** Title of the preview modal. Defaults to the translated "Preview". */
|
|
53
|
+
previewTitle?: string;
|
|
54
|
+
/**
|
|
55
|
+
* Fires when the media manager closes, whether or not a file was picked.
|
|
56
|
+
* A media field has no text control to blur, so the picker closing is its
|
|
57
|
+
* blur signal.
|
|
58
|
+
*/
|
|
59
|
+
onBlur?: () => void;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export const FormVideoField: FC<FormVideoFieldProps> = ({
|
|
63
|
+
data,
|
|
64
|
+
onChange: onChangeVideo,
|
|
65
|
+
onClear: onClearVideo,
|
|
66
|
+
onInput,
|
|
67
|
+
onBlur,
|
|
68
|
+
readOnly,
|
|
69
|
+
autoFocus,
|
|
70
|
+
dataHook,
|
|
71
|
+
dataHooks,
|
|
72
|
+
previewTitle,
|
|
73
|
+
inputRef: forwardedRef,
|
|
74
|
+
}) => {
|
|
75
|
+
const { t } = useTranslations();
|
|
76
|
+
const isMobile = useIsMobile();
|
|
77
|
+
|
|
78
|
+
const onChange = useWithCallback(onChangeVideo, onInput);
|
|
79
|
+
const onClear = useWithCallback(onClearVideo, onInput);
|
|
80
|
+
|
|
81
|
+
const [inputRef, setInputRef] =
|
|
82
|
+
useMergedRef<ImageViewerActions>(forwardedRef);
|
|
83
|
+
|
|
84
|
+
const hooks: VideoFieldDataHooks = {
|
|
85
|
+
replace: dataHooks?.replace ?? `${dataHook}-replace`,
|
|
86
|
+
more: dataHooks?.more ?? `${dataHook}-more`,
|
|
87
|
+
preview: dataHooks?.preview ?? `${dataHook}-preview`,
|
|
88
|
+
download: dataHooks?.download ?? `${dataHook}-download`,
|
|
89
|
+
delete: dataHooks?.delete ?? `${dataHook}-delete`,
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
const { callMedia } = useMediaControl({
|
|
93
|
+
mediaType: MEDIA_TYPES.VIDEO,
|
|
94
|
+
value: data,
|
|
95
|
+
onChange,
|
|
96
|
+
autoFocus,
|
|
97
|
+
readOnly,
|
|
98
|
+
onBlur,
|
|
99
|
+
inputRef,
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
const {
|
|
103
|
+
videoUrl,
|
|
104
|
+
posterUrl: imageUrl,
|
|
105
|
+
isPreviewOpen,
|
|
106
|
+
openPreview: handlePreview,
|
|
107
|
+
closePreview: handleClosePreview,
|
|
108
|
+
handleDownload,
|
|
109
|
+
} = useVideoPreview({ videoUri: data });
|
|
110
|
+
|
|
111
|
+
const canEdit = !isMobile && !readOnly;
|
|
112
|
+
|
|
113
|
+
return (
|
|
114
|
+
<>
|
|
115
|
+
{data ? (
|
|
116
|
+
<Box width="100%" maxWidth={MEDIA_MAX_WIDTH} height={MEDIA_HEIGHT}>
|
|
117
|
+
<MediaOverlay
|
|
118
|
+
dataHook={dataHook}
|
|
119
|
+
hoverSkin="dark"
|
|
120
|
+
media={
|
|
121
|
+
<Image
|
|
122
|
+
src={imageUrl}
|
|
123
|
+
width="100%"
|
|
124
|
+
height={MEDIA_HEIGHT}
|
|
125
|
+
fit="cover"
|
|
126
|
+
/>
|
|
127
|
+
}
|
|
128
|
+
>
|
|
129
|
+
<MediaOverlay.Content placement="middle" visible="hover">
|
|
130
|
+
<Box gap="SP2">
|
|
131
|
+
<Tooltip
|
|
132
|
+
content={t('auto-patterns.fields.replace_video_tooltip')}
|
|
133
|
+
>
|
|
134
|
+
<IconButton
|
|
135
|
+
onClick={callMedia}
|
|
136
|
+
skin="light"
|
|
137
|
+
priority="secondary"
|
|
138
|
+
disabled={!canEdit}
|
|
139
|
+
ariaLabel={t('auto-patterns.fields.replace_video_tooltip')}
|
|
140
|
+
dataHook={hooks.replace}
|
|
141
|
+
>
|
|
142
|
+
<Replace />
|
|
143
|
+
</IconButton>
|
|
144
|
+
</Tooltip>
|
|
145
|
+
<PopoverMenu
|
|
146
|
+
triggerElement={({ toggle }) => (
|
|
147
|
+
<Tooltip
|
|
148
|
+
content={t('auto-patterns.fields.more_actions_tooltip')}
|
|
149
|
+
>
|
|
150
|
+
<IconButton
|
|
151
|
+
priority="secondary"
|
|
152
|
+
onClick={toggle}
|
|
153
|
+
skin="light"
|
|
154
|
+
ariaLabel={t(
|
|
155
|
+
'auto-patterns.fields.more_actions_tooltip',
|
|
156
|
+
)}
|
|
157
|
+
dataHook={hooks.more}
|
|
158
|
+
>
|
|
159
|
+
<More />
|
|
160
|
+
</IconButton>
|
|
161
|
+
</Tooltip>
|
|
162
|
+
)}
|
|
163
|
+
>
|
|
164
|
+
<PopoverMenu.MenuItem
|
|
165
|
+
prefixIcon={<Maximize />}
|
|
166
|
+
text={t('auto-patterns.fields.preview_video')}
|
|
167
|
+
onClick={handlePreview}
|
|
168
|
+
disabled={!videoUrl}
|
|
169
|
+
dataHook={hooks.preview}
|
|
170
|
+
/>
|
|
171
|
+
<PopoverMenu.MenuItem
|
|
172
|
+
prefixIcon={<Download />}
|
|
173
|
+
text={t('auto-patterns.fields.download_video')}
|
|
174
|
+
onClick={handleDownload}
|
|
175
|
+
dataHook={hooks.download}
|
|
176
|
+
/>
|
|
177
|
+
<PopoverMenu.Divider />
|
|
178
|
+
<PopoverMenu.MenuItem
|
|
179
|
+
prefixIcon={<Delete />}
|
|
180
|
+
text={t('auto-patterns.fields.remove_video')}
|
|
181
|
+
onClick={onClear}
|
|
182
|
+
disabled={readOnly || !onClearVideo}
|
|
183
|
+
dataHook={hooks.delete}
|
|
184
|
+
/>
|
|
185
|
+
</PopoverMenu>
|
|
186
|
+
</Box>
|
|
187
|
+
</MediaOverlay.Content>
|
|
188
|
+
</MediaOverlay>
|
|
189
|
+
</Box>
|
|
190
|
+
) : (
|
|
191
|
+
<Box width="100%" maxWidth={MEDIA_MAX_WIDTH}>
|
|
192
|
+
<ImageViewer
|
|
193
|
+
// Only the empty state has a focusable control, so this is the
|
|
194
|
+
// only place inputRef can land.
|
|
195
|
+
ref={setInputRef}
|
|
196
|
+
dataHook={dataHook}
|
|
197
|
+
onAddImage={canEdit ? callMedia : undefined}
|
|
198
|
+
disabled={!canEdit}
|
|
199
|
+
addImageInfo={t('auto-patterns.fields.add_video_tooltip')}
|
|
200
|
+
height={MEDIA_HEIGHT}
|
|
201
|
+
width="100%"
|
|
202
|
+
/>
|
|
203
|
+
</Box>
|
|
204
|
+
)}
|
|
205
|
+
{isPreviewOpen && (
|
|
206
|
+
<Modal isOpen={isPreviewOpen} onRequestClose={handleClosePreview}>
|
|
207
|
+
<CustomModalLayout
|
|
208
|
+
title={previewTitle ?? t('auto-patterns.fields.preview_video')}
|
|
209
|
+
onCloseButtonClick={handleClosePreview}
|
|
210
|
+
content={
|
|
211
|
+
<div
|
|
212
|
+
style={{
|
|
213
|
+
display: 'flex',
|
|
214
|
+
justifyContent: 'center',
|
|
215
|
+
padding: '24px',
|
|
216
|
+
}}
|
|
217
|
+
>
|
|
218
|
+
<video
|
|
219
|
+
controls
|
|
220
|
+
autoPlay
|
|
221
|
+
style={{ maxWidth: '100%', maxHeight: '70vh' }}
|
|
222
|
+
poster={imageUrl}
|
|
223
|
+
>
|
|
224
|
+
{videoUrl && <source src={videoUrl} type="video/mp4" />}
|
|
225
|
+
Your browser does not support the video tag.
|
|
226
|
+
</video>
|
|
227
|
+
</div>
|
|
228
|
+
}
|
|
229
|
+
/>
|
|
230
|
+
</Modal>
|
|
231
|
+
)}
|
|
232
|
+
</>
|
|
233
|
+
);
|
|
234
|
+
};
|
|
235
|
+
|
|
236
|
+
FormVideoField.displayName = 'FormVideoField';
|
|
237
|
+
|
|
238
|
+
export type ControlledVideoInputProps = Omit<
|
|
239
|
+
ControlledInputProps<string | undefined>,
|
|
240
|
+
'invalid'
|
|
241
|
+
> & {
|
|
242
|
+
/** Title of the preview modal. Defaults to the translated "Preview". */
|
|
243
|
+
previewTitle?: string;
|
|
244
|
+
};
|
|
245
|
+
|
|
246
|
+
export const ControlledVideoInput: FC<ControlledVideoInputProps> = ({
|
|
247
|
+
data,
|
|
248
|
+
onChange,
|
|
249
|
+
onBlur,
|
|
250
|
+
readOnly,
|
|
251
|
+
autoFocus,
|
|
252
|
+
dataHook,
|
|
253
|
+
previewTitle,
|
|
254
|
+
}) => (
|
|
255
|
+
<FormVideoField
|
|
256
|
+
data={data}
|
|
257
|
+
onChange={onChange}
|
|
258
|
+
// FormVideoField reports deletion through onClear, not onChange.
|
|
259
|
+
onClear={() => onChange(undefined)}
|
|
260
|
+
onBlur={onBlur}
|
|
261
|
+
readOnly={readOnly}
|
|
262
|
+
autoFocus={autoFocus}
|
|
263
|
+
dataHook={dataHook}
|
|
264
|
+
previewTitle={previewTitle}
|
|
265
|
+
/>
|
|
266
|
+
);
|
|
267
|
+
|
|
268
|
+
ControlledVideoInput.displayName = 'ControlledVideoInput';
|
|
@@ -1,25 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
FormField,
|
|
4
|
-
ImageViewer,
|
|
5
|
-
Modal,
|
|
6
|
-
CustomModalLayout,
|
|
7
|
-
MediaOverlay,
|
|
8
|
-
Box,
|
|
9
|
-
Tooltip,
|
|
10
|
-
IconButton,
|
|
11
|
-
PopoverMenu,
|
|
12
|
-
Image,
|
|
13
|
-
} from '@wix/design-system';
|
|
14
|
-
import {
|
|
15
|
-
Replace,
|
|
16
|
-
More,
|
|
17
|
-
Download,
|
|
18
|
-
Delete,
|
|
19
|
-
Maximize,
|
|
20
|
-
} from '@wix/wix-ui-icons-common/lazy';
|
|
2
|
+
import { FormField } from '@wix/design-system';
|
|
21
3
|
import { observer } from 'mobx-react-lite';
|
|
22
|
-
import {
|
|
4
|
+
import { useWixPatternsContainer } from '@wix/bex-core/react';
|
|
23
5
|
import { useController } from '@wix/bex-core/form';
|
|
24
6
|
import { BaseInputProps } from '../../types/base-input';
|
|
25
7
|
import { useFieldRef, useTranslations } from '../../hooks';
|
|
@@ -27,28 +9,15 @@ import { isEmpty } from '../../validations/string';
|
|
|
27
9
|
import { isDataValidOrNotSet } from '../../validations/validations';
|
|
28
10
|
import * as videoValidation from '../../validations/video';
|
|
29
11
|
import { TypeMismatchExclamation } from '../exclamation/type-mismatch-exclamation';
|
|
30
|
-
import {
|
|
31
|
-
import { useVideoPreview } from './use-video-preview';
|
|
32
|
-
|
|
33
|
-
interface VideoMediaDescriptor {
|
|
34
|
-
video?: string;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
interface MediaManagerVideoItem {
|
|
38
|
-
_id?: string;
|
|
39
|
-
displayName?: string;
|
|
40
|
-
mediaType?: string;
|
|
41
|
-
media?: VideoMediaDescriptor;
|
|
42
|
-
}
|
|
12
|
+
import { FormVideoField } from './form-video-field';
|
|
43
13
|
|
|
44
14
|
export interface FormVideoProps extends BaseInputProps<string> {}
|
|
45
15
|
|
|
46
16
|
const _FormVideo = (props: FormVideoProps) => {
|
|
47
17
|
const { field, dataHook, formControl, data } = props;
|
|
48
18
|
|
|
49
|
-
const { translate: pt
|
|
19
|
+
const { translate: pt } = useWixPatternsContainer();
|
|
50
20
|
const { t } = useTranslations();
|
|
51
|
-
const isMobile = useIsMobile();
|
|
52
21
|
|
|
53
22
|
const controller = useController({
|
|
54
23
|
name: field?.id ?? '',
|
|
@@ -66,35 +35,6 @@ const _FormVideo = (props: FormVideoProps) => {
|
|
|
66
35
|
|
|
67
36
|
const setFieldRef = useFieldRef(controller.field.ref);
|
|
68
37
|
|
|
69
|
-
async function openMedia() {
|
|
70
|
-
if (!openMediaManager) return;
|
|
71
|
-
try {
|
|
72
|
-
const chosenMediaItems = await openMediaManager({
|
|
73
|
-
multiSelect: false,
|
|
74
|
-
category: 'VIDEO',
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
const mediaItem = chosenMediaItems?.items?.[0] as
|
|
78
|
-
| MediaManagerVideoItem
|
|
79
|
-
| undefined;
|
|
80
|
-
const newVideo = mediaItem?.media?.video;
|
|
81
|
-
if (newVideo) {
|
|
82
|
-
controller.field.onChange(newVideo);
|
|
83
|
-
}
|
|
84
|
-
} catch (error) {
|
|
85
|
-
console.error('Error opening Media Manager or no files selected:', error);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
const {
|
|
90
|
-
videoUrl,
|
|
91
|
-
posterUrl: imageUrl,
|
|
92
|
-
isPreviewOpen,
|
|
93
|
-
openPreview: handlePreview,
|
|
94
|
-
closePreview: handleClosePreview,
|
|
95
|
-
handleDownload,
|
|
96
|
-
} = useVideoPreview({ videoUri: controller.field.value });
|
|
97
|
-
|
|
98
38
|
return (
|
|
99
39
|
<FormField
|
|
100
40
|
label={field.displayName}
|
|
@@ -127,121 +67,23 @@ const _FormVideo = (props: FormVideoProps) => {
|
|
|
127
67
|
)
|
|
128
68
|
}
|
|
129
69
|
>
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
content={t('auto-patterns.fields.replace_video_tooltip')}
|
|
148
|
-
>
|
|
149
|
-
<IconButton
|
|
150
|
-
onClick={() => openMedia()}
|
|
151
|
-
skin="light"
|
|
152
|
-
priority="secondary"
|
|
153
|
-
disabled={isMobile}
|
|
154
|
-
ariaLabel={t('auto-patterns.fields.replace_video_tooltip')}
|
|
155
|
-
dataHook={`video-replace-${field.id}`}
|
|
156
|
-
>
|
|
157
|
-
<Replace />
|
|
158
|
-
</IconButton>
|
|
159
|
-
</Tooltip>
|
|
160
|
-
<PopoverMenu
|
|
161
|
-
triggerElement={({ toggle }) => (
|
|
162
|
-
<Tooltip
|
|
163
|
-
content={t('auto-patterns.fields.more_actions_tooltip')}
|
|
164
|
-
>
|
|
165
|
-
<IconButton
|
|
166
|
-
priority="secondary"
|
|
167
|
-
onClick={toggle}
|
|
168
|
-
skin="light"
|
|
169
|
-
ariaLabel={t(
|
|
170
|
-
'auto-patterns.fields.more_actions_tooltip',
|
|
171
|
-
)}
|
|
172
|
-
dataHook={`video-more-${field.id}`}
|
|
173
|
-
>
|
|
174
|
-
<More />
|
|
175
|
-
</IconButton>
|
|
176
|
-
</Tooltip>
|
|
177
|
-
)}
|
|
178
|
-
>
|
|
179
|
-
<PopoverMenu.MenuItem
|
|
180
|
-
prefixIcon={<Maximize />}
|
|
181
|
-
text={t('auto-patterns.fields.preview_video')}
|
|
182
|
-
onClick={handlePreview}
|
|
183
|
-
disabled={!videoUrl}
|
|
184
|
-
dataHook={`video-preview-${field.id}`}
|
|
185
|
-
/>
|
|
186
|
-
<PopoverMenu.MenuItem
|
|
187
|
-
prefixIcon={<Download />}
|
|
188
|
-
text={t('auto-patterns.fields.download_video')}
|
|
189
|
-
onClick={handleDownload}
|
|
190
|
-
dataHook={`video-download-${field.id}`}
|
|
191
|
-
/>
|
|
192
|
-
<PopoverMenu.Divider />
|
|
193
|
-
<PopoverMenu.MenuItem
|
|
194
|
-
prefixIcon={<Delete />}
|
|
195
|
-
text={t('auto-patterns.fields.remove_video')}
|
|
196
|
-
onClick={() => controller.field.onChange(null)}
|
|
197
|
-
dataHook={`video-delete-${field.id}`}
|
|
198
|
-
/>
|
|
199
|
-
</PopoverMenu>
|
|
200
|
-
</Box>
|
|
201
|
-
</MediaOverlay.Content>
|
|
202
|
-
</MediaOverlay>
|
|
203
|
-
</Box>
|
|
204
|
-
) : (
|
|
205
|
-
<Box width="100%" maxWidth={MEDIA_MAX_WIDTH}>
|
|
206
|
-
<ImageViewer
|
|
207
|
-
// Only the empty state can fail `required`, so the add button is
|
|
208
|
-
// always the right target for react-hook-form's shouldFocusError.
|
|
209
|
-
ref={setFieldRef}
|
|
210
|
-
dataHook={`video-${field.id}`}
|
|
211
|
-
onAddImage={isMobile ? undefined : () => openMedia()}
|
|
212
|
-
addImageInfo={t('auto-patterns.fields.add_video_tooltip')}
|
|
213
|
-
height={MEDIA_HEIGHT}
|
|
214
|
-
width="100%"
|
|
215
|
-
/>
|
|
216
|
-
</Box>
|
|
217
|
-
)}
|
|
218
|
-
{isPreviewOpen && (
|
|
219
|
-
<Modal isOpen={isPreviewOpen} onRequestClose={handleClosePreview}>
|
|
220
|
-
<CustomModalLayout
|
|
221
|
-
title={field.displayName}
|
|
222
|
-
onCloseButtonClick={handleClosePreview}
|
|
223
|
-
content={
|
|
224
|
-
<div
|
|
225
|
-
style={{
|
|
226
|
-
display: 'flex',
|
|
227
|
-
justifyContent: 'center',
|
|
228
|
-
padding: '24px',
|
|
229
|
-
}}
|
|
230
|
-
>
|
|
231
|
-
<video
|
|
232
|
-
controls
|
|
233
|
-
autoPlay
|
|
234
|
-
style={{ maxWidth: '100%', maxHeight: '70vh' }}
|
|
235
|
-
poster={imageUrl}
|
|
236
|
-
>
|
|
237
|
-
{videoUrl && <source src={videoUrl} type="video/mp4" />}
|
|
238
|
-
Your browser does not support the video tag.
|
|
239
|
-
</video>
|
|
240
|
-
</div>
|
|
241
|
-
}
|
|
242
|
-
/>
|
|
243
|
-
</Modal>
|
|
244
|
-
)}
|
|
70
|
+
<FormVideoField
|
|
71
|
+
// Hands the add button to react-hook-form so shouldFocusError can
|
|
72
|
+
// reach this field when a required value blocks save.
|
|
73
|
+
inputRef={setFieldRef}
|
|
74
|
+
data={controller.field.value}
|
|
75
|
+
onChange={(value) => controller.field.onChange(value)}
|
|
76
|
+
onClear={() => controller.field.onChange(null)}
|
|
77
|
+
previewTitle={field.displayName}
|
|
78
|
+
dataHook={`video-${field.id}`}
|
|
79
|
+
dataHooks={{
|
|
80
|
+
replace: `video-replace-${field.id}`,
|
|
81
|
+
more: `video-more-${field.id}`,
|
|
82
|
+
preview: `video-preview-${field.id}`,
|
|
83
|
+
download: `video-download-${field.id}`,
|
|
84
|
+
delete: `video-delete-${field.id}`,
|
|
85
|
+
}}
|
|
86
|
+
/>
|
|
245
87
|
</FormField>
|
|
246
88
|
);
|
|
247
89
|
};
|
|
@@ -4,6 +4,12 @@ export { VideoViewField } from './video-view-field';
|
|
|
4
4
|
export type { VideoViewFieldProps } from './video-view-field';
|
|
5
5
|
export { CellVideoEdit } from './cell-video-edit';
|
|
6
6
|
export type { CellVideoEditProps } from './cell-video-edit';
|
|
7
|
+
export { FormVideoField, ControlledVideoInput } from './form-video-field';
|
|
8
|
+
export type {
|
|
9
|
+
FormVideoFieldProps,
|
|
10
|
+
ControlledVideoInputProps,
|
|
11
|
+
VideoFieldDataHooks,
|
|
12
|
+
} from './form-video-field';
|
|
7
13
|
export { FormVideo } from './form-video';
|
|
8
14
|
export type { FormVideoProps } from './form-video';
|
|
9
15
|
export { useVideoPreview } from './use-video-preview';
|