UNPKG

@progress/kendo-angular-spreadsheet

Version:

A Spreadsheet Component for Angular

98 lines (97 loc) 5.01 kB
/**----------------------------------------------------------------------------------------- * Copyright © 2025 Progress Software Corporation. All rights reserved. * Licensed under commercial license. See LICENSE.md in the project root for more information *-------------------------------------------------------------------------------------------*/ import { Directive } from '@angular/core'; import { take } from 'rxjs/operators'; import { isPresent } from '@progress/kendo-angular-common'; import { DialogService } from '@progress/kendo-angular-dialog'; import { ToolBarButtonComponent } from '@progress/kendo-angular-toolbar'; import { SpreadsheetLocalizationService } from '../../localization/spreadsheet-localization.service'; import { SpreadsheetService } from '../../common/spreadsheet.service'; import { SpreadsheetToolsService } from '../tools.service'; import { SpreadsheetCommandButton } from '../shared/spreadsheet-command-button'; import { InsertLinkDialogComponent } from './insert-link-dialog.component'; import * as i0 from "@angular/core"; import * as i1 from "@progress/kendo-angular-toolbar"; import * as i2 from "../../localization/spreadsheet-localization.service"; import * as i3 from "../../common/spreadsheet.service"; import * as i4 from "../tools.service"; import * as i5 from "@progress/kendo-angular-dialog"; /** * @hidden */ export class SpreadsheetInsertLinkDirective extends SpreadsheetCommandButton { dialogService; currentRange; constructor(button, localization, spreadsheetService, toolsService, dialogService) { super('insertLink', button, localization, spreadsheetService, toolsService, { command: 'HyperlinkCommand' }); this.dialogService = dialogService; this.subs.add(spreadsheetService.selectionChanged.subscribe(range => this.currentRange = range)); } ngOnDestroy() { this.subs.unsubscribe(); } clickHandler() { const sheet = this.spreadsheetService.spreadsheet.activeSheet(); if (sheet) { this.openDialog(); } } /** * @hidden */ openDialog() { const hasLink = isPresent(this.currentRange?.link()); const dialogSettings = { appendTo: this.spreadsheetService.dialogContainer, title: this.localization.get(this.command), content: InsertLinkDialogComponent, actions: [{ text: this.localization.get('dialogInsert'), themeColor: 'primary' }, { text: this.localization.get('dialogCancel') }, 'spacer', { text: this.localization.get('dialogRemoveLink'), themeColor: 'primary', fillMode: 'clear', cssClass: hasLink ? '' : 'k-disabled' }], actionsLayout: 'start', width: 400, autoFocusedElement: '.k-textbox > .k-input-inner' }; const dialog = this.dialogService.open(dialogSettings); const dialogInstance = dialog.dialog.instance; const dialogContent = dialog.content.instance; if (hasLink) { dialogContent.setData({ link: this.currentRange?.link() }); } dialogInstance.action.pipe(take(1)).subscribe((event) => { if (event.text === this.localization.get('dialogCancel')) { return; } let link = null; if (event.text === this.localization.get('dialogInsert')) { link = dialogContent.urlLink || null; } this.spreadsheetService.spreadsheet.executeCommand({ command: 'HyperlinkCommand', options: { link } }); }); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SpreadsheetInsertLinkDirective, deps: [{ token: i1.ToolBarButtonComponent }, { token: i2.SpreadsheetLocalizationService }, { token: i3.SpreadsheetService }, { token: i4.SpreadsheetToolsService }, { token: i5.DialogService }], target: i0.ɵɵFactoryTarget.Directive }); static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: SpreadsheetInsertLinkDirective, isStandalone: true, selector: "kendo-toolbar-button[kendoSpreadsheetInsertLink]", usesInheritance: true, ngImport: i0 }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SpreadsheetInsertLinkDirective, decorators: [{ type: Directive, args: [{ selector: 'kendo-toolbar-button[kendoSpreadsheetInsertLink]', standalone: true }] }], ctorParameters: function () { return [{ type: i1.ToolBarButtonComponent }, { type: i2.SpreadsheetLocalizationService }, { type: i3.SpreadsheetService }, { type: i4.SpreadsheetToolsService }, { type: i5.DialogService }]; } });