@progress/kendo-angular-spreadsheet
Version:
A Spreadsheet Component for Angular
99 lines (98 loc) • 4.32 kB
JavaScript
/**-----------------------------------------------------------------------------------------
* 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 }]; } });