Path: blob/main/src/vs/platform/dialogs/browser/dialog.ts
3296 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { EventHelper } from '../../../base/browser/dom.js';6import { StandardKeyboardEvent } from '../../../base/browser/keyboardEvent.js';7import { IDialogOptions } from '../../../base/browser/ui/dialog/dialog.js';8import { fromNow } from '../../../base/common/date.js';9import { localize } from '../../../nls.js';10import { IKeybindingService } from '../../keybinding/common/keybinding.js';11import { ResultKind } from '../../keybinding/common/keybindingResolver.js';12import { ILayoutService } from '../../layout/browser/layoutService.js';13import { IProductService } from '../../product/common/productService.js';14import { defaultButtonStyles, defaultCheckboxStyles, defaultInputBoxStyles, defaultDialogStyles } from '../../theme/browser/defaultStyles.js';1516const defaultDialogAllowableCommands = [17'workbench.action.quit',18'workbench.action.reloadWindow',19'copy',20'cut',21'editor.action.selectAll',22'editor.action.clipboardCopyAction',23'editor.action.clipboardCutAction',24'editor.action.clipboardPasteAction'25];2627export function createWorkbenchDialogOptions(options: Partial<IDialogOptions>, keybindingService: IKeybindingService, layoutService: ILayoutService, allowableCommands = defaultDialogAllowableCommands): IDialogOptions {28return {29keyEventProcessor: (event: StandardKeyboardEvent) => {30const resolved = keybindingService.softDispatch(event, layoutService.activeContainer);31if (resolved.kind === ResultKind.KbFound && resolved.commandId) {32if (!allowableCommands.includes(resolved.commandId)) {33EventHelper.stop(event, true);34}35}36},37buttonStyles: defaultButtonStyles,38checkboxStyles: defaultCheckboxStyles,39inputBoxStyles: defaultInputBoxStyles,40dialogStyles: defaultDialogStyles,41...options42};43}4445export function createBrowserAboutDialogDetails(productService: IProductService): { title: string; details: string; detailsToCopy: string } {46const detailString = (useAgo: boolean): string => {47return localize('aboutDetail',48"Version: {0}\nCommit: {1}\nDate: {2}\nBrowser: {3}",49productService.version || 'Unknown',50productService.commit || 'Unknown',51productService.date ? `${productService.date}${useAgo ? ' (' + fromNow(new Date(productService.date), true) + ')' : ''}` : 'Unknown',52navigator.userAgent53);54};5556const details = detailString(true);57const detailsToCopy = detailString(false);5859return {60title: productService.nameLong,61details: details,62detailsToCopy: detailsToCopy63};64}65666768