UNPKG

@progress/kendo-angular-spreadsheet

Version:

A Spreadsheet Component for Angular

99 lines (98 loc) 4.32 kB
/**----------------------------------------------------------------------------------------- * Copyright © 2025 Progress Software Corporation. All rights reserved. * Licensed under commercial license. See LICENSE.md in the project root for more information *-------------------------------------------------------------------------------------------*/ import { LocalizationService } from '@progress/kendo-angular-l10n'; import { DialogService } from '@progress/kendo-angular-dialog'; import { Injectable } from '@angular/core'; import { Subject } from 'rxjs'; import { SpreadsheetService } from './spreadsheet.service'; import { take } from 'rxjs/operators'; import { replaceMessagePlaceholder } from '../utils'; import * as i0 from "@angular/core"; import * as i1 from "./spreadsheet.service"; import * as i2 from "@progress/kendo-angular-l10n"; import * as i3 from "@progress/kendo-angular-dialog"; /** * @hidden */ export class ErrorHandlingService { spreadsheetService; localization; dialogService; spreadsheet; sheetsChanged = new Subject(); activeSheetChanged = new Subject(); selectionChanged = new Subject(); dialogContainer; constructor(spreadsheetService, localization, dialogService) { this.spreadsheetService = spreadsheetService; this.localization = localization; this.dialogService = dialogService; } set currentActiveSheet(value) { this._currentActiveSheet = value; } get currentActiveSheet() { return this._currentActiveSheet; } get activeSheet() { return this.spreadsheet.activeSheet()?.name(); } _currentActiveSheet; notifySheetsChange(actionType, sheetInfo) { const sheets = this.spreadsheet.sheets(); this.sheetsChanged.next({ sheets, sheet: sheetInfo, actionType }); } handleErrorMessage(messageData) { this.openDialog(messageData); } openDialog(messageData) { let dialogContent; let dialogTitle; if (messageData.name === 'message') { const localizationMsg = this.messageFor('invalidNameError'); let inputValue = messageData.text.split(' ').pop(); if (messageData.text.startsWith('Parse')) { inputValue = inputValue.substring(0, inputValue.length - 1); } dialogContent = replaceMessagePlaceholder(localizationMsg, 'inputValue', inputValue); } else if (messageData.name === 'validationError') { dialogContent = messageData.text; dialogTitle = messageData.title; } else { dialogContent = this.messageFor(messageData.name); } const dialogSettings = { appendTo: this.spreadsheetService.dialogContainer, title: dialogTitle ?? this.messageFor('dialogError'), content: dialogContent, actions: [{ text: this.messageFor('dialogOk'), themeColor: 'primary' }], width: 400, actionsLayout: 'start' }; const dialog = this.dialogService.open(dialogSettings); const dialogInstance = dialog.dialog?.instance; dialogInstance.action.pipe(take(1)).subscribe((event) => { if (event.text === this.messageFor('dialogOk')) { messageData.close(); } }); dialogInstance.close.pipe(take(1)).subscribe(() => { messageData.close(); }); } messageFor(text) { return this.localization.get(text); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ErrorHandlingService, deps: [{ token: i1.SpreadsheetService }, { token: i2.LocalizationService }, { token: i3.DialogService }], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ErrorHandlingService }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ErrorHandlingService, decorators: [{ type: Injectable }], ctorParameters: function () { return [{ type: i1.SpreadsheetService }, { type: i2.LocalizationService }, { type: i3.DialogService }]; } });