mirror of
https://github.com/estruyf/vscode-front-matter.git
synced 2026-08-07 09:23:00 +02:00
Update preview + snippets
This commit is contained in:
+17
-1
@@ -7,6 +7,8 @@
|
||||
"common.save": "Save",
|
||||
"common.menu": "Menu",
|
||||
"common.insert": "Insert",
|
||||
"common.insert.snippet": "Insert snippet",
|
||||
"common.update": "Update",
|
||||
"common.error.message": "Sorry, something went wrong.",
|
||||
|
||||
"field.required": "Required field",
|
||||
@@ -145,7 +147,6 @@
|
||||
|
||||
"dashboard.media.item.quickAction.insert.field": "Insert image for your \"{0}\" field",
|
||||
"dashboard.media.item.quickAction.insert.markdown": "Insert image with markdown markup",
|
||||
"dashboard.media.item.quickAction.insert.snippet": "Insert snippet",
|
||||
"dashboard.media.item.quickAction.copy.path": "Copy media path",
|
||||
"dashboard.media.item.quickAction.delete": "Delete media file",
|
||||
"dashboard.media.item.menuItem.edit.metadata": "Edit metadata",
|
||||
@@ -167,6 +168,21 @@
|
||||
"dashboard.media.mediaSnippetForm.formDialog.title": "Insert media: {0}",
|
||||
"dashboard.media.mediaSnippetForm.formDialog.description": "Insert the {0} media file into the current article",
|
||||
|
||||
"dashboard.preview.input.placeholder": "Enter a URL",
|
||||
"dashboard.preview.button.navigate.title": "Navigate",
|
||||
"dashboard.preview.button.refresh.title": "Refresh",
|
||||
"dashboard.preview.button.open.title": "Open",
|
||||
|
||||
"dashboard.snippetsView.item.quickAction.editSnippet": "Edit snippet",
|
||||
"dashboard.snippetsView.item.quickAction.deleteSnippet": "Delete snippet",
|
||||
"dashboard.snippetsView.item.quickAction.viewSnippet": "View snippet file",
|
||||
"dashboard.snippetsView.item.insert.formDialog.title": "Insert snippet: {0}",
|
||||
"dashboard.snippetsView.item.insert.formDialog.description": "Insert the {0} snippet into the current article",
|
||||
"dashboard.snippetsView.item.edit.formDialog.title": "Edit snippet: {0}",
|
||||
"dashboard.snippetsView.item.edit.formDialog.description": "Edit the {0} snippet",
|
||||
"dashboard.snippetsView.item.alert.title": "Delete snippet: {0}",
|
||||
"dashboard.snippetsView.item.alert.description": "Are you sure you want to delete the {0} snippet?",
|
||||
|
||||
"panel.actions.title": "Actions",
|
||||
"panel.actions.openDashboard": "Open dashboard",
|
||||
"panel.actions.openPreview": "Open preview",
|
||||
|
||||
@@ -521,7 +521,7 @@ export const Item: React.FunctionComponent<IItemProps> = ({
|
||||
</QuickAction>
|
||||
|
||||
{viewData?.data?.position && mediaSnippets.length > 0 && (
|
||||
<QuickAction title={l10n.t(LocalizationKey.dashboardMediaItemQuickActionInsertSnippet)} onClick={insertSnippet}>
|
||||
<QuickAction title={l10n.t(LocalizationKey.commonInsertSnippet)} onClick={insertSnippet}>
|
||||
<CodeIcon className={`w-4 h-4`} aria-hidden="true" />
|
||||
</QuickAction>
|
||||
)}
|
||||
@@ -678,7 +678,7 @@ export const Item: React.FunctionComponent<IItemProps> = ({
|
||||
{showSnippetSelection && (
|
||||
<InfoDialog
|
||||
icon={<CodeIcon className="h-6 w-6" aria-hidden="true" />}
|
||||
title={l10n.t(LocalizationKey.dashboardMediaItemQuickActionInsertSnippet)}
|
||||
title={l10n.t(LocalizationKey.commonInsertSnippet)}
|
||||
description={l10n.t(LocalizationKey.dashboardMediaItemInfoDialogSnippetDescription)}
|
||||
dismiss={() => setShowSnippetSelection(false)}
|
||||
>
|
||||
|
||||
@@ -5,6 +5,8 @@ import { useEffect, useRef, useState } from 'react';
|
||||
import { PreviewCommands } from '../../../constants';
|
||||
import useThemeColors from '../../hooks/useThemeColors';
|
||||
import { EventData } from '@estruyf/vscode/dist/models';
|
||||
import * as l10n from '@vscode/l10n';
|
||||
import { LocalizationKey } from '../../../localization';
|
||||
|
||||
export interface IPreviewProps {
|
||||
url: string | null;
|
||||
@@ -68,7 +70,7 @@ export const Preview: React.FunctionComponent<IPreviewProps> = ({
|
||||
navigateToUrl();
|
||||
}
|
||||
}}
|
||||
placeholder="Enter a URL"
|
||||
placeholder={l10n.t(LocalizationKey.dashboardPreviewInputPlaceholder)}
|
||||
className="w-full m-[1px] h-full border-1 border-transparent text-xs py-1 px-2 focus:border-color-blue-500 bg-[var(--vscode-tab-activeBackground)] text-[var(--vscode-tab-inactiveForeground)] hover:text-[var(--vscode-tab-activeForeground)] focus:text-[var(--vscode-tab-activeForeground)] placeholder-[var(--vscode-input-placeholderForeground)] focus:outline-[var(--vscode-focusBorder)] focus:outline-1 focus:outline-offset-0 focus:shadow-none focus:border-[var(--vscode-focusBorder)"
|
||||
/>
|
||||
|
||||
@@ -76,15 +78,24 @@ export const Preview: React.FunctionComponent<IPreviewProps> = ({
|
||||
className={`actions flex items-center space-x-2 px-2 ${getColors('text-vulcan-500 dark:text-whisper-100', 'text-[var(--vscode-list-activeSelectionForeground)]')
|
||||
}`}
|
||||
>
|
||||
<button title="Navigate" onClick={navigateToUrl} className={getColors(`hover:text-vulcan-500 dark:hover:text-whisper-100`, `hover:text-[var(--vscode-textLink-activeForeground)]`)}>
|
||||
<button
|
||||
title={l10n.t(LocalizationKey.dashboardPreviewButtonOpenTitle)}
|
||||
onClick={navigateToUrl}
|
||||
className={getColors(`hover:text-vulcan-500 dark:hover:text-whisper-100`, `hover:text-[var(--vscode-textLink-activeForeground)]`)}>
|
||||
<ArrowRightIcon className="w-4 h-4" aria-hidden="true" />
|
||||
</button>
|
||||
|
||||
<button title="Refresh" onClick={onRefresh} className={`mr-2 ${getColors(`hover:text-vulcan-500 dark:hover:text-whisper-100`, `hover:text-[var(--vscode-textLink-activeForeground)]`)}`}>
|
||||
<button
|
||||
title={l10n.t(LocalizationKey.dashboardPreviewButtonRefreshTitle)}
|
||||
onClick={onRefresh}
|
||||
className={`mr-2 ${getColors(`hover:text-vulcan-500 dark:hover:text-whisper-100`, `hover:text-[var(--vscode-textLink-activeForeground)]`)}`}>
|
||||
<RefreshIcon className="w-4 h-4" aria-hidden="true" />
|
||||
</button>
|
||||
|
||||
<button title="Open" onClick={openInBrowser} className={`mr-2 ${getColors(`hover:text-vulcan-500 dark:hover:text-whisper-100`, `hover:text-[var(--vscode-textLink-activeForeground)]`)}`}>
|
||||
<button
|
||||
title={l10n.t(LocalizationKey.dashboardPreviewButtonOpenTitle)}
|
||||
onClick={openInBrowser}
|
||||
className={`mr-2 ${getColors(`hover:text-vulcan-500 dark:hover:text-whisper-100`, `hover:text-[var(--vscode-textLink-activeForeground)]`)}`}>
|
||||
<ExternalLinkIcon className="w-4 h-4" aria-hidden="true" />
|
||||
</button>
|
||||
</div>
|
||||
|
||||
@@ -24,6 +24,8 @@ import { Alert } from '../Modals/Alert';
|
||||
import { FormDialog } from '../Modals/FormDialog';
|
||||
import { NewForm } from './NewForm';
|
||||
import SnippetForm, { SnippetFormHandle } from './SnippetForm';
|
||||
import * as l10n from '@vscode/l10n';
|
||||
import { LocalizationKey } from '../../../localization';
|
||||
|
||||
export interface IItemProps {
|
||||
snippetKey: string;
|
||||
@@ -203,7 +205,9 @@ export const Item: React.FunctionComponent<IItemProps> = ({
|
||||
</div>
|
||||
|
||||
<div className="hidden group-hover:flex">
|
||||
<QuickAction title={`Insert snippet`} onClick={() => setShowInsertDialog(true)}>
|
||||
<QuickAction
|
||||
title={l10n.t(LocalizationKey.commonInsertSnippet)}
|
||||
onClick={() => setShowInsertDialog(true)}>
|
||||
<PlusIcon className={`w-4 h-4`} aria-hidden="true" />
|
||||
</QuickAction>
|
||||
</div>
|
||||
@@ -225,7 +229,7 @@ export const Item: React.FunctionComponent<IItemProps> = ({
|
||||
<div className="hidden group-hover:flex">
|
||||
{insertToContent && !snippet.isMediaSnippet && (
|
||||
<>
|
||||
<QuickAction title={`Insert snippet`} onClick={() => setShowInsertDialog(true)}>
|
||||
<QuickAction title={l10n.t(LocalizationKey.commonInsertSnippet)} onClick={() => setShowInsertDialog(true)}>
|
||||
<PlusIcon className={`w-4 h-4`} aria-hidden="true" />
|
||||
</QuickAction>
|
||||
</>
|
||||
@@ -233,16 +237,22 @@ export const Item: React.FunctionComponent<IItemProps> = ({
|
||||
|
||||
{!snippet.sourcePath ? (
|
||||
<>
|
||||
<QuickAction title={`Edit snippet`} onClick={onOpenEdit}>
|
||||
<QuickAction
|
||||
title={l10n.t(LocalizationKey.dashboardSnippetsViewItemQuickActionEditSnippet)}
|
||||
onClick={onOpenEdit}>
|
||||
<PencilIcon className={`w-4 h-4`} aria-hidden="true" />
|
||||
</QuickAction>
|
||||
|
||||
<QuickAction title={`Delete snippet`} onClick={() => setShowAlert(true)}>
|
||||
<QuickAction
|
||||
title={l10n.t(LocalizationKey.dashboardSnippetsViewItemQuickActionDeleteSnippet)}
|
||||
onClick={() => setShowAlert(true)}>
|
||||
<TrashIcon className={`w-4 h-4`} aria-hidden="true" />
|
||||
</QuickAction>
|
||||
</>
|
||||
) : (
|
||||
<QuickAction title={`View snippet file`} onClick={showFile}>
|
||||
<QuickAction
|
||||
title={l10n.t(LocalizationKey.dashboardSnippetsViewItemQuickActionViewSnippet)}
|
||||
onClick={showFile}>
|
||||
<EyeIcon className={`w-4 h-4`} aria-hidden="true" />
|
||||
</QuickAction>
|
||||
)}
|
||||
@@ -260,15 +270,13 @@ export const Item: React.FunctionComponent<IItemProps> = ({
|
||||
|
||||
{showInsertDialog && (
|
||||
<FormDialog
|
||||
title={`Insert snippet: ${snippet.title || snippetKey}`}
|
||||
description={`Insert the ${(
|
||||
snippet.title || snippetKey
|
||||
).toLowerCase()} snippet into the current article`}
|
||||
title={l10n.t(LocalizationKey.dashboardSnippetsViewItemInsertFormDialogTitle, snippet.title || snippetKey)}
|
||||
description={l10n.t(LocalizationKey.dashboardSnippetsViewItemInsertFormDialogDescription, (snippet.title || snippetKey).toLowerCase())}
|
||||
isSaveDisabled={!insertToContent}
|
||||
trigger={insertToArticle}
|
||||
dismiss={() => setShowInsertDialog(false)}
|
||||
okBtnText="Insert"
|
||||
cancelBtnText="Cancel"
|
||||
okBtnText={l10n.t(LocalizationKey.commonInsert)}
|
||||
cancelBtnText={l10n.t(LocalizationKey.commonCancel)}
|
||||
>
|
||||
<SnippetForm
|
||||
ref={formRef}
|
||||
@@ -281,13 +289,13 @@ export const Item: React.FunctionComponent<IItemProps> = ({
|
||||
|
||||
{showEditDialog && (
|
||||
<FormDialog
|
||||
title={`Edit snippet: ${snippet.title || snippetKey}`}
|
||||
description={`Edit the ${(snippet.title || snippetKey).toLowerCase()} snippet`}
|
||||
title={l10n.t(LocalizationKey.dashboardSnippetsViewItemEditFormDialogTitle, snippet.title || snippetKey)}
|
||||
description={l10n.t(LocalizationKey.dashboardSnippetsViewItemEditFormDialogDescription, (snippet.title || snippetKey).toLowerCase())}
|
||||
isSaveDisabled={!snippetTitle || !snippetOriginalBody}
|
||||
trigger={onSnippetUpdate}
|
||||
dismiss={reset}
|
||||
okBtnText="Update"
|
||||
cancelBtnText="Cancel"
|
||||
okBtnText={l10n.t(LocalizationKey.commonUpdate)}
|
||||
cancelBtnText={l10n.t(LocalizationKey.commonCancel)}
|
||||
>
|
||||
<NewForm
|
||||
title={snippetTitle}
|
||||
@@ -304,12 +312,10 @@ export const Item: React.FunctionComponent<IItemProps> = ({
|
||||
|
||||
{showAlert && (
|
||||
<Alert
|
||||
title={`Delete snippet: ${snippet.title || snippetKey}`}
|
||||
description={`Are you sure you want to delete the ${(
|
||||
snippet.title || snippetKey
|
||||
).toLowerCase()} snippet?`}
|
||||
okBtnText={`Delete`}
|
||||
cancelBtnText={`Cancel`}
|
||||
title={l10n.t(LocalizationKey.dashboardSnippetsViewItemAlertTitle, snippet.title || snippetKey)}
|
||||
description={l10n.t(LocalizationKey.dashboardSnippetsViewItemAlertDescription, (snippet.title || snippetKey).toLowerCase())}
|
||||
okBtnText={l10n.t(LocalizationKey.commonDelete)}
|
||||
cancelBtnText={l10n.t(LocalizationKey.commonCancel)}
|
||||
dismiss={() => setShowAlert(false)}
|
||||
trigger={onDelete}
|
||||
/>
|
||||
|
||||
@@ -31,6 +31,14 @@ export enum LocalizationKey {
|
||||
* Insert
|
||||
*/
|
||||
commonInsert = 'common.insert',
|
||||
/**
|
||||
* Insert snippet
|
||||
*/
|
||||
commonInsertSnippet = 'common.insert.snippet',
|
||||
/**
|
||||
* Update
|
||||
*/
|
||||
commonUpdate = 'common.update',
|
||||
/**
|
||||
* Sorry, something went wrong.
|
||||
*/
|
||||
@@ -443,10 +451,6 @@ export enum LocalizationKey {
|
||||
* Insert image with markdown markup
|
||||
*/
|
||||
dashboardMediaItemQuickActionInsertMarkdown = 'dashboard.media.item.quickAction.insert.markdown',
|
||||
/**
|
||||
* Insert snippet
|
||||
*/
|
||||
dashboardMediaItemQuickActionInsertSnippet = 'dashboard.media.item.quickAction.insert.snippet',
|
||||
/**
|
||||
* Copy media path
|
||||
*/
|
||||
@@ -515,6 +519,58 @@ export enum LocalizationKey {
|
||||
* Insert the {0} media file into the current article
|
||||
*/
|
||||
dashboardMediaMediaSnippetFormFormDialogDescription = 'dashboard.media.mediaSnippetForm.formDialog.description',
|
||||
/**
|
||||
* Enter a URL
|
||||
*/
|
||||
dashboardPreviewInputPlaceholder = 'dashboard.preview.input.placeholder',
|
||||
/**
|
||||
* Navigate
|
||||
*/
|
||||
dashboardPreviewButtonNavigateTitle = 'dashboard.preview.button.navigate.title',
|
||||
/**
|
||||
* Refresh
|
||||
*/
|
||||
dashboardPreviewButtonRefreshTitle = 'dashboard.preview.button.refresh.title',
|
||||
/**
|
||||
* Open
|
||||
*/
|
||||
dashboardPreviewButtonOpenTitle = 'dashboard.preview.button.open.title',
|
||||
/**
|
||||
* Edit snippet
|
||||
*/
|
||||
dashboardSnippetsViewItemQuickActionEditSnippet = 'dashboard.snippetsView.item.quickAction.editSnippet',
|
||||
/**
|
||||
* Delete snippet
|
||||
*/
|
||||
dashboardSnippetsViewItemQuickActionDeleteSnippet = 'dashboard.snippetsView.item.quickAction.deleteSnippet',
|
||||
/**
|
||||
* View snippet file
|
||||
*/
|
||||
dashboardSnippetsViewItemQuickActionViewSnippet = 'dashboard.snippetsView.item.quickAction.viewSnippet',
|
||||
/**
|
||||
* Insert snippet: {0}
|
||||
*/
|
||||
dashboardSnippetsViewItemInsertFormDialogTitle = 'dashboard.snippetsView.item.insert.formDialog.title',
|
||||
/**
|
||||
* Insert the {0} snippet into the current article
|
||||
*/
|
||||
dashboardSnippetsViewItemInsertFormDialogDescription = 'dashboard.snippetsView.item.insert.formDialog.description',
|
||||
/**
|
||||
* Edit snippet: {0}
|
||||
*/
|
||||
dashboardSnippetsViewItemEditFormDialogTitle = 'dashboard.snippetsView.item.edit.formDialog.title',
|
||||
/**
|
||||
* Edit the {0} snippet
|
||||
*/
|
||||
dashboardSnippetsViewItemEditFormDialogDescription = 'dashboard.snippetsView.item.edit.formDialog.description',
|
||||
/**
|
||||
* Delete snippet: {0}
|
||||
*/
|
||||
dashboardSnippetsViewItemAlertTitle = 'dashboard.snippetsView.item.alert.title',
|
||||
/**
|
||||
* Are you sure you want to delete the {0} snippet?
|
||||
*/
|
||||
dashboardSnippetsViewItemAlertDescription = 'dashboard.snippetsView.item.alert.description',
|
||||
/**
|
||||
* Actions
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user