diff --git a/CHANGELOG.md b/CHANGELOG.md index 3d6db7bb..913892f4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -50,6 +50,7 @@ - [#595](https://github.com/estruyf/vscode-front-matter/issues/595): Fix for media metadata now showing up - [#596](https://github.com/estruyf/vscode-front-matter/issues/596): Fix for number field in block data - [#603](https://github.com/estruyf/vscode-front-matter/issues/603): Fix problem with page bundles and path placeholders +- [#617](https://github.com/estruyf/vscode-front-matter/issues/617): Fix insert media snippet dialog by using a slideover instead of a dialog - [#620](https://github.com/estruyf/vscode-front-matter/issues/620): Fix in array field of data files ## [8.4.0] - 2023-04-03 - [Release notes](https://beta.frontmatter.codes/updates/v8.4.0) diff --git a/src/dashboardWebView/components/Media/MediaSnippetForm.tsx b/src/dashboardWebView/components/Media/MediaSnippetForm.tsx index cbbe7bb7..1c9def40 100644 --- a/src/dashboardWebView/components/Media/MediaSnippetForm.tsx +++ b/src/dashboardWebView/components/Media/MediaSnippetForm.tsx @@ -3,10 +3,10 @@ import { useRef } from 'react'; import { useRecoilValue } from 'recoil'; import { MediaInfo, Snippet } from '../../../models'; import { ViewDataSelector } from '../../state'; -import { FormDialog } from '../Modals/FormDialog'; import SnippetForm, { SnippetFormHandle } from '../SnippetsView/SnippetForm'; import * as l10n from '@vscode/l10n'; import { LocalizationKey } from '../../../localization'; +import { SnippetSlideOver } from './SnippetSlideOver'; export interface IMediaSnippetFormProps { media: MediaInfo; @@ -32,7 +32,7 @@ export const MediaSnippetForm: React.FunctionComponent = }; return ( - = selection={viewData?.data?.selection} onInsert={onInsert} /> - + ); }; diff --git a/src/dashboardWebView/components/Media/SnippetSlideOver.tsx b/src/dashboardWebView/components/Media/SnippetSlideOver.tsx new file mode 100644 index 00000000..06aa96d8 --- /dev/null +++ b/src/dashboardWebView/components/Media/SnippetSlideOver.tsx @@ -0,0 +1,104 @@ +import { Dialog, Transition } from '@headlessui/react'; +import { XIcon } from '@heroicons/react/outline'; +import * as React from 'react'; +import { Fragment, useRef } from 'react'; +import * as l10n from '@vscode/l10n'; +import { LocalizationKey } from '../../../localization'; + +export interface ISnippetSlideOverProps { + title: string; + description: string; + okBtnText: string; + cancelBtnText: string; + isSaveDisabled: boolean; + + dismiss: () => void; + trigger: () => void; +} + +export const SnippetSlideOver: React.FunctionComponent = ({ + title, + description, + okBtnText, + cancelBtnText, + isSaveDisabled, + dismiss, + trigger, + children +}: React.PropsWithChildren) => { + const cancelButtonRef = useRef(null); + + return ( + + +
+ + +
+ +
+
+
+
+ + {title} + +
+ +
+
+
+ +
+
+

{description}

+ +
+ {children} +
+ +
+ + + +
+
+
+
+
+
+
+
+
+
+ ); +}; diff --git a/src/dashboardWebView/components/Modals/FormDialog.tsx b/src/dashboardWebView/components/Modals/FormDialog.tsx index df60c530..db61679c 100644 --- a/src/dashboardWebView/components/Modals/FormDialog.tsx +++ b/src/dashboardWebView/components/Modals/FormDialog.tsx @@ -30,7 +30,7 @@ export const FormDialog: React.FunctionComponent = ({ return ( dismiss()} > @@ -65,7 +65,7 @@ export const FormDialog: React.FunctionComponent = ({ leaveFrom="opacity-100 translate-y-0 sm:scale-100" leaveTo="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95" > -