@bizdoc/core 1.13.19 → 1.13.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/compose/form-selector/form-selector.sheet.mjs +13 -7
- package/esm2020/lib/compose/form.component.mjs +6 -2
- package/esm2020/lib/compose/trace/trace.component.mjs +5 -2
- package/esm2020/lib/core/mailbox.service.mjs +2 -2
- package/esm2020/lib/core/translations.mjs +3 -2
- package/esm2020/lib/cube/chart/chart.component.mjs +2 -2
- package/esm2020/lib/cube/explore/explore.pane.component.mjs +2 -2
- package/esm2020/lib/cube/grid/grid.component.mjs +2 -2
- package/esm2020/lib/cube/grid/spreadsheet.component.mjs +7 -9
- package/esm2020/lib/cube/matrix/popup.component.mjs +17 -20
- package/esm2020/lib/cube/matrix/table.component.mjs +3 -2
- package/esm2020/lib/cube/parallel/parallel.component.mjs +2 -2
- package/esm2020/lib/cube/pivot/pivot.component.mjs +2 -2
- package/esm2020/lib/cube/view.mobile.component.mjs +3 -3
- package/esm2020/lib/dashboard/cube/compare.widget.mjs +2 -2
- package/esm2020/lib/home/about/about.dialog.mjs +3 -3
- package/esm2020/lib/home/home.desktop.component.mjs +50 -24
- package/esm2020/lib/reports/report.pane.component.mjs +2 -1
- package/esm2020/lib/views/cube/explore.component.mjs +2 -2
- package/fesm2015/bizdoc-core.mjs +77 -40
- package/fesm2015/bizdoc-core.mjs.map +1 -1
- package/fesm2020/bizdoc-core.mjs +77 -40
- package/fesm2020/bizdoc-core.mjs.map +1 -1
- package/lib/core/translations.d.ts +1 -0
- package/lib/cube/grid/spreadsheet.component.d.ts +1 -0
- package/lib/cube/matrix/popup.component.d.ts +1 -3
- package/lib/dashboard/cube/compare.widget.d.ts +1 -1
- package/lib/home/home.desktop.component.d.ts +4 -1
- package/package.json +1 -1
    
        package/fesm2015/bizdoc-core.mjs
    CHANGED
    
    | @@ -1538,7 +1538,7 @@ class MailboxService { | |
| 1538 1538 | 
             
                                        lat: r.coords.latitude.toString()
         | 
| 1539 1539 | 
             
                                    });
         | 
| 1540 1540 | 
             
                                    observe.complete();
         | 
| 1541 | 
            -
                                },  | 
| 1541 | 
            +
                                }, e => {
         | 
| 1542 1542 | 
             
                                    if (configuration.position === 'Ask')
         | 
| 1543 1543 | 
             
                                        observe.next({});
         | 
| 1544 1544 | 
             
                                    else
         | 
| @@ -2276,7 +2276,7 @@ const STRINGS = { | |
| 2276 2276 | 
             
                    JoinAnd: '{0} and {1}',
         | 
| 2277 2277 | 
             
                    NumericJoinAnd: '{0} and {1}',
         | 
| 2278 2278 | 
             
                    JoinComma: ', ',
         | 
| 2279 | 
            -
                    Awaiting: ' | 
| 2279 | 
            +
                    Awaiting: 'waiting for {0}',
         | 
| 2280 2280 | 
             
                    Escalated: 'Escalated',
         | 
| 2281 2281 | 
             
                    Collapse: 'Collapse',
         | 
| 2282 2282 | 
             
                    DownloadExcel: 'Excel',
         | 
| @@ -2355,6 +2355,7 @@ const STRINGS = { | |
| 2355 2355 | 
             
                    ChatHelp: 'Communicate with other users privately',
         | 
| 2356 2356 | 
             
                    ShowAs: 'Show as {0}',
         | 
| 2357 2357 | 
             
                    Unauthorized: 'Unauthorized access',
         | 
| 2358 | 
            +
                    LicenseErr: 'License',
         | 
| 2358 2359 | 
             
                    RemoveAsk: 'Are you sure?',
         | 
| 2359 2360 | 
             
                    Comments: 'Comments',
         | 
| 2360 2361 | 
             
                    Remove: 'Remove',
         | 
| @@ -9025,6 +9026,7 @@ class ComposeFormComponent { | |
| 9025 9026 | 
             
                    else
         | 
| 9026 9027 | 
             
                        switch (response.status) {
         | 
| 9027 9028 | 
             
                            case 401:
         | 
| 9029 | 
            +
                                this._sb.error('Unauthorized');
         | 
| 9028 9030 | 
             
                                break;
         | 
| 9029 9031 | 
             
                            case 409: // version change
         | 
| 9030 9032 | 
             
                                {
         | 
| @@ -9034,9 +9036,12 @@ class ComposeFormComponent { | |
| 9034 9036 | 
             
                                    this._sb.error('VersionErr', this.model.number);
         | 
| 9035 9037 | 
             
                                    break;
         | 
| 9036 9038 | 
             
                                }
         | 
| 9037 | 
            -
                            case 406: // validation | 
| 9039 | 
            +
                            case 406: // validation
         | 
| 9038 9040 | 
             
                                this._sb.errorString(response.error);
         | 
| 9039 9041 | 
             
                                break;
         | 
| 9042 | 
            +
                            case 426: // license 
         | 
| 9043 | 
            +
                                this._sb.error('LicenseErr');
         | 
| 9044 | 
            +
                                break;
         | 
| 9040 9045 | 
             
                            default:
         | 
| 9041 9046 | 
             
                                this._sb.error(message, ...args);
         | 
| 9042 9047 | 
             
                        }
         | 
| @@ -9759,7 +9764,7 @@ class CubeChartComponent { | |
| 9759 9764 | 
             
                        this._draw();
         | 
| 9760 9765 | 
             
                        this.loadingChange.emit(false);
         | 
| 9761 9766 | 
             
                    }, (e) => {
         | 
| 9762 | 
            -
                        this._sb.error(e.status ===  | 
| 9767 | 
            +
                        this._sb.error(e.status === 401 ? 'Unauthorized' : e.status === 426 ? 'LicenseErr' : null);
         | 
| 9763 9768 | 
             
                        this.loadingChange.emit(false);
         | 
| 9764 9769 | 
             
                    });
         | 
| 9765 9770 | 
             
                }
         | 
| @@ -10050,7 +10055,7 @@ class CubeGridComponent { | |
| 10050 10055 | 
             
                            this.loadingChange.emit(false);
         | 
| 10051 10056 | 
             
                        });
         | 
| 10052 10057 | 
             
                    }, (e) => {
         | 
| 10053 | 
            -
                        this._sb.error(e.status ===  | 
| 10058 | 
            +
                        this._sb.error(e.status === 401 ? 'Unauthorized' : e.status === 426 ? 'LicenseErr' : null);
         | 
| 10054 10059 | 
             
                        this.loadingChange.emit(false);
         | 
| 10055 10060 | 
             
                    });
         | 
| 10056 10061 | 
             
                }
         | 
| @@ -10356,7 +10361,7 @@ class CubePivotComponent { | |
| 10356 10361 | 
             
                        this._draw();
         | 
| 10357 10362 | 
             
                        this.loadingChange.emit(false);
         | 
| 10358 10363 | 
             
                    }, (e) => {
         | 
| 10359 | 
            -
                        this._sb.error(e.status ===  | 
| 10364 | 
            +
                        this._sb.error(e.status === 401 ? 'Unauthorized' : e.status === 426 ? 'LicenseErr' : null);
         | 
| 10360 10365 | 
             
                        this.loadingChange.emit(false);
         | 
| 10361 10366 | 
             
                    });
         | 
| 10362 10367 | 
             
                }
         | 
| @@ -10737,20 +10742,18 @@ class CubeSpreadsheetComponent { | |
| 10737 10742 | 
             
                                this._draw();
         | 
| 10738 10743 | 
             
                                this.loadingChange.emit(false);
         | 
| 10739 10744 | 
             
                            });
         | 
| 10740 | 
            -
                        },  | 
| 10741 | 
            -
                            this._sb.error(e.status === 406 ? 'Unauthorized' : null);
         | 
| 10742 | 
            -
                            this.loadingChange.emit(false);
         | 
| 10743 | 
            -
                        });
         | 
| 10745 | 
            +
                        }, e => this._handleErr(e));
         | 
| 10744 10746 | 
             
                    else
         | 
| 10745 10747 | 
             
                        this._service.table(this._cube.name, this._xAxis, { filters: this.filters, indices: this._indices }).
         | 
| 10746 10748 | 
             
                            subscribe(data => {
         | 
| 10747 10749 | 
             
                            this._datatable(data);
         | 
| 10748 10750 | 
             
                            this._draw();
         | 
| 10749 10751 | 
             
                            this.loadingChange.emit(false);
         | 
| 10750 | 
            -
                        },  | 
| 10751 | 
            -
             | 
| 10752 | 
            -
             | 
| 10753 | 
            -
             | 
| 10752 | 
            +
                        }, e => this._handleErr(e));
         | 
| 10753 | 
            +
                }
         | 
| 10754 | 
            +
                _handleErr(response) {
         | 
| 10755 | 
            +
                    this._sb.error(response.status === 401 ? 'Unauthorized' : response.status === 426 ? 'LicenseErr' : null);
         | 
| 10756 | 
            +
                    this.loadingChange.emit(false);
         | 
| 10754 10757 | 
             
                }
         | 
| 10755 10758 | 
             
                _datatable(data) {
         | 
| 10756 10759 | 
             
                    var _a;
         | 
| @@ -12655,7 +12658,7 @@ class CubeExplorePaneComponent { | |
| 12655 12658 | 
             
                        this.loading = false;
         | 
| 12656 12659 | 
             
                    }, e => {
         | 
| 12657 12660 | 
             
                        this.loading = false;
         | 
| 12658 | 
            -
                        this._sb.error(e.status ===  | 
| 12661 | 
            +
                        this._sb.error(e.status === 401 ? 'Unauthorized' : null);
         | 
| 12659 12662 | 
             
                    });
         | 
| 12660 12663 | 
             
                }
         | 
| 12661 12664 | 
             
            }
         | 
| @@ -12989,6 +12992,7 @@ class ReportPaneComponent { | |
| 12989 12992 | 
             
                clearFilter() {
         | 
| 12990 12993 | 
             
                    this.args = {};
         | 
| 12991 12994 | 
             
                    this.anyFilters = false;
         | 
| 12995 | 
            +
                    this._cd.detectChanges();
         | 
| 12992 12996 | 
             
                    this.viewer.execute();
         | 
| 12993 12997 | 
             
                }
         | 
| 12994 12998 | 
             
                /**
         | 
| @@ -14605,8 +14609,11 @@ class TraceViewComponent extends TraceBase { | |
| 14605 14609 | 
             
                                        step.action = yield actionBy(action, by.gender, recipient.id);
         | 
| 14606 14610 | 
             
                                }
         | 
| 14607 14611 | 
             
                                else {
         | 
| 14608 | 
            -
                                    if (recipient.userId === this._session.userId)
         | 
| 14612 | 
            +
                                    if (recipient.userId === this._session.userId) {
         | 
| 14609 14613 | 
             
                                        step.name = this._translate.get('You');
         | 
| 14614 | 
            +
                                        if (action)
         | 
| 14615 | 
            +
                                            step.action = yield actionBy(action, this._session.gender, recipient.id);
         | 
| 14616 | 
            +
                                    }
         | 
| 14610 14617 | 
             
                                    else {
         | 
| 14611 14618 | 
             
                                        let who = yield profileOf(recipient.userId);
         | 
| 14612 14619 | 
             
                                        step.name = nameOf(who);
         | 
| @@ -15397,9 +15404,10 @@ class CubeMatrixComponent { | |
| 15397 15404 | 
             
                        clearTimeout(progressTask);
         | 
| 15398 15405 | 
             
                        this.loadingChange.next(this.loading = false);
         | 
| 15399 15406 | 
             
                    }, (e) => {
         | 
| 15400 | 
            -
                        this._sb.error(e.status ===  | 
| 15407 | 
            +
                        this._sb.error(e.status === 401 ? 'Unauthorized' : e.status === 426 ? 'LicenseErr' : null);
         | 
| 15401 15408 | 
             
                        clearTimeout(progressTask);
         | 
| 15402 15409 | 
             
                        this.loadingChange.next(this.loading = false);
         | 
| 15410 | 
            +
                        this.loadingChange.error(e);
         | 
| 15403 15411 | 
             
                    }));
         | 
| 15404 15412 | 
             
                }
         | 
| 15405 15413 | 
             
                _serialize(series) {
         | 
| @@ -17422,10 +17430,10 @@ class AboutDialog { | |
| 17422 17430 | 
             
                }
         | 
| 17423 17431 | 
             
            }
         | 
| 17424 17432 | 
             
            AboutDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: AboutDialog, deps: [{ token: SessionService }], target: i0.ɵɵFactoryTarget.Component });
         | 
| 17425 | 
            -
            AboutDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: AboutDialog, selector: "bizdoc-about", ngImport: i0, template: "<h2 mat-dialog-title>BizDoc v{{version}}</h2>\r\n<mat-dialog-content>\r\n  <div *ngIf=\"license; else none\">\r\n    <div [ngSwitch]=\"license.mode\">\r\n      <div *ngSwitchCase=\"'Grace'\"> {{\"GraceLicense\" | translate : dayjs(license.expiration).toNow() }}</div>\r\n      <div *ngSwitchCase=\"'Limited'\">{{'LimitLicense'|translate}}</div>\r\n      <div *ngSwitchCase=\"'Expired'\">{{\"ExpiredLicense\" | translate : (license.expiration | amTimeAgo)}}</div>\r\n    </div>\r\n    <div [innerHtml]='\"LicencedTo\" | translate : license.companyName'></div>\r\n  </div>\r\n  <br />\r\n  <span>© Moding Ltd.</span>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n  <button mat-button mat-dialog-close>{{'OK'|translate}}</button>\r\n</mat-dialog-actions>\r\n<ng-template #none>\r\n  <div>{{'EvaluationLicense' | translate}}</div>\r\n</ng-template>\r\n", components: [{ type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button],             button[mat-fab], button[mat-mini-fab], button[mat-stroked-button],             button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i3$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i3$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i3$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i3$1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], pipes: { "translate": TranslatePipe, "amTimeAgo": TimeAgoPipe } });
         | 
| 17433 | 
            +
            AboutDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: AboutDialog, selector: "bizdoc-about", ngImport: i0, template: "<h2 mat-dialog-title>BizDoc v{{version}}</h2>\r\n<mat-dialog-content>\r\n  <div *ngIf=\"license; else none\">\r\n    <div [ngSwitch]=\"license.mode\">\r\n      <div *ngSwitchCase=\"'Grace'\"> {{\"GraceLicense\" | translate : dayjs(license.expiration).toNow() }}</div>\r\n      <div *ngSwitchCase=\"'Limited'\">{{'LimitLicense'|translate}}</div>\r\n      <div *ngSwitchCase=\"'Expired'\">{{\"ExpiredLicense\" | translate : (license.expiration | amTimeAgo)}}</div>\r\n    </div>\r\n    <div *ngIf=\"license.companyName\" [innerHtml]='\"LicencedTo\" | translate : license.companyName'></div>\r\n  </div>\r\n  <br />\r\n  <span>© Moding Ltd.</span>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n  <button mat-button mat-dialog-close>{{'OK'|translate}}</button>\r\n</mat-dialog-actions>\r\n<ng-template #none>\r\n  <div>{{'EvaluationLicense' | translate}}</div>\r\n</ng-template>\r\n", components: [{ type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button],             button[mat-fab], button[mat-mini-fab], button[mat-stroked-button],             button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i3$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i3$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i3$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i3$1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], pipes: { "translate": TranslatePipe, "amTimeAgo": TimeAgoPipe } });
         | 
| 17426 17434 | 
             
            i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: AboutDialog, decorators: [{
         | 
| 17427 17435 | 
             
                        type: Component,
         | 
| 17428 | 
            -
                        args: [{ selector: 'bizdoc-about', template: "<h2 mat-dialog-title>BizDoc v{{version}}</h2>\r\n<mat-dialog-content>\r\n  <div *ngIf=\"license; else none\">\r\n    <div [ngSwitch]=\"license.mode\">\r\n      <div *ngSwitchCase=\"'Grace'\"> {{\"GraceLicense\" | translate : dayjs(license.expiration).toNow() }}</div>\r\n      <div *ngSwitchCase=\"'Limited'\">{{'LimitLicense'|translate}}</div>\r\n      <div *ngSwitchCase=\"'Expired'\">{{\"ExpiredLicense\" | translate : (license.expiration | amTimeAgo)}}</div>\r\n    </div>\r\n    <div [innerHtml]='\"LicencedTo\" | translate : license.companyName'></div>\r\n  </div>\r\n  <br />\r\n  <span>© Moding Ltd.</span>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n  <button mat-button mat-dialog-close>{{'OK'|translate}}</button>\r\n</mat-dialog-actions>\r\n<ng-template #none>\r\n  <div>{{'EvaluationLicense' | translate}}</div>\r\n</ng-template>\r\n" }]
         | 
| 17436 | 
            +
                        args: [{ selector: 'bizdoc-about', template: "<h2 mat-dialog-title>BizDoc v{{version}}</h2>\r\n<mat-dialog-content>\r\n  <div *ngIf=\"license; else none\">\r\n    <div [ngSwitch]=\"license.mode\">\r\n      <div *ngSwitchCase=\"'Grace'\"> {{\"GraceLicense\" | translate : dayjs(license.expiration).toNow() }}</div>\r\n      <div *ngSwitchCase=\"'Limited'\">{{'LimitLicense'|translate}}</div>\r\n      <div *ngSwitchCase=\"'Expired'\">{{\"ExpiredLicense\" | translate : (license.expiration | amTimeAgo)}}</div>\r\n    </div>\r\n    <div *ngIf=\"license.companyName\" [innerHtml]='\"LicencedTo\" | translate : license.companyName'></div>\r\n  </div>\r\n  <br />\r\n  <span>© Moding Ltd.</span>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n  <button mat-button mat-dialog-close>{{'OK'|translate}}</button>\r\n</mat-dialog-actions>\r\n<ng-template #none>\r\n  <div>{{'EvaluationLicense' | translate}}</div>\r\n</ng-template>\r\n" }]
         | 
| 17429 17437 | 
             
                    }], ctorParameters: function () { return [{ type: SessionService }]; } });
         | 
| 17430 17438 |  | 
| 17431 17439 | 
             
            const OPTION_PANEL = new InjectionToken('options');
         | 
| @@ -19370,10 +19378,11 @@ function prepareRoutes(routes, treePath) { | |
| 19370 19378 |  | 
| 19371 19379 | 
             
            /** home comp */
         | 
| 19372 19380 | 
             
            class HomeComponent extends HomeBase {
         | 
| 19373 | 
            -
                constructor(_router, _mailbox, injector, session, popup, messaging, translate, snackBar, config) {
         | 
| 19381 | 
            +
                constructor(_router, _mailbox, injector, session, popup, messaging, translate, _sb, snackBar, config) {
         | 
| 19374 19382 | 
             
                    super(popup, session, messaging, translate, snackBar, injector, config);
         | 
| 19375 19383 | 
             
                    this._router = _router;
         | 
| 19376 19384 | 
             
                    this._mailbox = _mailbox;
         | 
| 19385 | 
            +
                    this._sb = _sb;
         | 
| 19377 19386 | 
             
                    this.sysAdmin = this._session.isSystem;
         | 
| 19378 19387 | 
             
                    this._submenuMode = localStorage.getItem('submenuMode') || 'full';
         | 
| 19379 19388 | 
             
                    this.forms = this._session.profile.forms.filter(f => f.creatable);
         | 
| @@ -19461,11 +19470,35 @@ class HomeComponent extends HomeBase { | |
| 19461 19470 | 
             
                            policy: OpenPolicy.Clear,
         | 
| 19462 19471 | 
             
                            state: { item: r }
         | 
| 19463 19472 | 
             
                        });
         | 
| 19464 | 
            -
                    }, () => {
         | 
| 19465 | 
            -
                        this. | 
| 19473 | 
            +
                    }, (e) => {
         | 
| 19474 | 
            +
                        this._handleErr(e);
         | 
| 19466 19475 | 
             
                        this.creating = false;
         | 
| 19467 19476 | 
             
                    });
         | 
| 19468 19477 | 
             
                }
         | 
| 19478 | 
            +
                _handleErr(response) {
         | 
| 19479 | 
            +
                    if (response.constructor.name === 'PositionError')
         | 
| 19480 | 
            +
                        switch (response.code) {
         | 
| 19481 | 
            +
                            case 1:
         | 
| 19482 | 
            +
                                this._sb.error('UserDeniedGeoErr');
         | 
| 19483 | 
            +
                                break;
         | 
| 19484 | 
            +
                            default:
         | 
| 19485 | 
            +
                                this._sb.error('GeoErr');
         | 
| 19486 | 
            +
                        }
         | 
| 19487 | 
            +
                    else
         | 
| 19488 | 
            +
                        switch (response.status) {
         | 
| 19489 | 
            +
                            case 401:
         | 
| 19490 | 
            +
                                this._sb.error('Unauthorized');
         | 
| 19491 | 
            +
                                break;
         | 
| 19492 | 
            +
                            case 406:
         | 
| 19493 | 
            +
                                this._sb.errorString(response.error);
         | 
| 19494 | 
            +
                                break;
         | 
| 19495 | 
            +
                            case 426: // license
         | 
| 19496 | 
            +
                                this._sb.error('LicenseErr');
         | 
| 19497 | 
            +
                                break;
         | 
| 19498 | 
            +
                            default:
         | 
| 19499 | 
            +
                                this._sb.error();
         | 
| 19500 | 
            +
                        }
         | 
| 19501 | 
            +
                }
         | 
| 19469 19502 | 
             
                opensubmenu(menu) {
         | 
| 19470 19503 | 
             
                    if (this.submenu === menu)
         | 
| 19471 19504 | 
             
                        this.submenuMode = this.submenuMode === 'full' ? 'shrink' : 'full';
         | 
| @@ -19522,13 +19555,13 @@ class HomeComponent extends HomeBase { | |
| 19522 19555 | 
             
                    }
         | 
| 19523 19556 | 
             
                }
         | 
| 19524 19557 | 
             
            }
         | 
| 19525 | 
            -
            HomeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: HomeComponent, deps: [{ token: PanesRouter }, { token: MailboxService }, { token: i0.Injector }, { token: SessionService }, { token: Popup }, { token: HubService }, { token: TranslateService }, { token: i8$2.MatSnackBar }, { token: BIZDOC_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
         | 
| 19558 | 
            +
            HomeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: HomeComponent, deps: [{ token: PanesRouter }, { token: MailboxService }, { token: i0.Injector }, { token: SessionService }, { token: Popup }, { token: HubService }, { token: TranslateService }, { token: PromptService }, { token: i8$2.MatSnackBar }, { token: BIZDOC_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
         | 
| 19526 19559 | 
             
            HomeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: HomeComponent, selector: "bizdoc-home", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" } }, viewQueries: [{ propertyName: "drawer", first: true, predicate: MatSidenav, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div [class.nav-collapsed]=\"collapsed\" [class.nav-open]=\"submenu\" class=\"nav-menu row\">\r\n  <!--[class.loading]=\"loading\"-->\r\n  <div fxLayout=\"column\">\r\n    <div>\r\n      <div [class.active]=\"activeMenu === 'new'\" class=\"new-container\" *ngIf=\"forms.length\">\r\n        <button mat-raised-button class=\"compose\" [bizdocTooltip]=\"'Compose'|translate\" bizdocTooltipPosition=\"end\"\r\n                (click)=\"opennew()\" [disabled]=\"creating\"\r\n                [attr.aria-label]=\"'Compose'| translate\" color=\"primary\" data-help=\"compose\">\r\n          <mat-icon>add</mat-icon>\r\n          <span class=\"nav-label\">{{'Compose'| translate}}</span>\r\n        </button>\r\n      </div>\r\n      <mat-nav-list>\r\n        <mat-list-item [attr.aria-label]=\"'Dashboard' | translate\"\r\n                       (click)=\"nav('dashboard')\" [class.active]=\"activeMenu === 'dashboard'\"\r\n                       data-help=\"dashboard\"\r\n                       [bizdocTooltip]=\"'Dashboard'|translate\" bizdocTooltipPosition=\"end\">\r\n          <mat-icon matListIcon>apps</mat-icon><span class=\"nav-label\">{{'Dashboard' | translate}}</span>\r\n        </mat-list-item>\r\n        <mat-list-item (click)=\"mails()\" [bizdocTooltip]=\"'Mailbox'|translate\" bizdocTooltipPosition=\"end\"\r\n                       [class.active]=\"activeMenu === 'mailbox'\"\r\n                       [attr.aria-label]=\"'Mailbox' | translate\" data-help=\"folders\">\r\n          <mat-icon matListIcon [matBadge]=\"profile.inboxCount\" [matBadgeHidden]=\"profile.inboxCount < 1\" matBadgeColor=\"accent\">inbox</mat-icon>\r\n          <span class=\"nav-label\">{{'Mailbox' | translate}}</span>\r\n        </mat-list-item>\r\n        <mat-list-item [attr.aria-label]=\"'Scheduler' | translate\" *ngIf=\"schedulerEnabled\"\r\n                       (click)=\"nav('schedule')\" [class.active]=\"activeMenu === 'schedule'\"\r\n                       [bizdocTooltip]=\"'Scheduler'|translate\" bizdocTooltipPosition=\"end\">\r\n          <mat-icon matListIcon class=\"mat-icon-rtl-mirror\">date_range</mat-icon><span class=\"nav-label\">{{ 'Scheduler' | translate}}</span>\r\n        </mat-list-item>\r\n        <mat-list-item *ngIf='chatEnabled' data-help=\"chat\" [attr.aria-label]=\"'Chat' | translate\"\r\n                       (click)=\"nav('contacts')\" [class.active]=\"activeMenu === 'contacts'\"\r\n                       [bizdocTooltip]=\"'Chat'|translate\" bizdocTooltipPosition=\"end\">\r\n          <mat-icon matListIcon [matBadge]=\"profile.conversationsCount\" [matBadgeHidden]=\"!profile.conversationsCount\" matBadgeColor=\"accent\">chat</mat-icon><span class=\"nav-label\">{{ 'Chat' | translate}}</span>\r\n        </mat-list-item>\r\n        <mat-divider></mat-divider>\r\n        <mat-list-item *ngIf=\"enableAnalysis && profile.cubes.length\"\r\n                       (click)=\"opensubmenu('cube')\"\r\n                       [class.active]=\"activeMenu === 'cube'\"\r\n                       [bizdocTooltip]=\"'Cube'|translate\" bizdocTooltipPosition=\"end\" data-help=\"cube\" [attr.aria-label]=\"'Cube' | translate\">\r\n          <mat-icon matListIcon>equalizer</mat-icon><span class=\"nav-label\">{{'Cube' | translate}}</span>\r\n        </mat-list-item>\r\n        <mat-list-item *ngIf=\"profile.reports.length\"\r\n                       (click)=\"opensubmenu('reports')\"\r\n                       [class.active]=\"activeMenu === 'reports'\"\r\n                       [bizdocTooltip]=\"'Reports'|translate\" bizdocTooltipPosition=\"end\" data-help=\"reports\" [attr.aria-label]=\"'Reports' | translate\">\r\n          <mat-icon matListIcon>list_alt</mat-icon><span class=\"nav-label\">{{'Reports' | translate}}</span>\r\n        </mat-list-item>\r\n        <ng-container *ngIf=\"sysAdmin\">\r\n          <mat-divider></mat-divider>\r\n          <mat-list-item (click)=\"opensubmenu('admin')\"\r\n                         [class.active]=\"activeMenu === 'admin'\"\r\n                         [bizdocTooltip]=\"'System'|translate\" bizdocTooltipPosition=\"end\" [attr.aria-label]=\"'System' | translate\">\r\n            <mat-icon matListIcon>device_hub</mat-icon>\r\n            <span class=\"nav-label\">{{'Workflow' | translate}}</span>\r\n          </mat-list-item>\r\n        </ng-container>\r\n      </mat-nav-list>\r\n    </div>\r\n    <span class=\"divider\"></span>\r\n    <!--<lottie name=\"lf30_editor_qr7zgmcs\" *ngIf=\"loading\"></lottie>-->\r\n    <!--@animate-->\r\n    <div class=\"sign-in\">\r\n      <button mat-icon-button data-help=\"sign-in\" [bizdocTooltip]=\"'Settings' | translate\" bizdocTooltipPosition=\"end\"\r\n              [attr.aria-label]=\"'Settings' | translate\" (click)=\"options($event)\">\r\n        <mat-icon matAnimate=\"rotate\">settingson</mat-icon>\r\n      </button>\r\n      <span class=\"divider\"></span>\r\n      <button mat-icon-button [attr.aria-label]=\"'Power' | translate\" (click)=\"signout($event)\" [bizdocTooltip]=\"'Exit'|translate\" bizdocTooltipPosition=\"end\">\r\n        <mat-icon class=\"mat-icon-rtl-mirror\">logout</mat-icon>\r\n      </button>\r\n    </div>\r\n  </div>\r\n  <div *ngIf=\"submenu\" class=\"sub-menu\" (mouseleave)=\"collapsesubmenu()\" [@submenu]=\"submenuMode\" (@submenu.done)=\"resize()\">\r\n    <div class=\"action\" *ngIf=\"submenu !== 'new'\">\r\n      <button mat-icon-button (click)=\"togglePinned()\"><mat-icon class=\"mat-icon-rtl-mirror\" [bizdocTooltip]=\"(pinned?'Collapse':'Expand')|translate\" [inline]=\"true\">{{pinned ? 'keyboard_double_arrow_left' : 'keyboard_double_arrow_right'}}</mat-icon></button>\r\n    </div>\r\n    <ng-container [ngSwitch]=\"submenu\">\r\n      <bizdoc-new-menu *ngSwitchCase=\"'new'\" (change)=\"closesubmenu()\"></bizdoc-new-menu>\r\n      <bizdoc-folders-menu *ngSwitchCase=\"'mailbox'\" [collapsed]=\"submenuMode === 'shrink'\" (change)=\"collapsesubmenu()\"></bizdoc-folders-menu>\r\n      <bizdoc-admin-menu *ngSwitchCase=\"'admin'\" [collapsed]=\"submenuMode === 'shrink'\"></bizdoc-admin-menu>\r\n      <bizdoc-reports-menu *ngSwitchCase=\"'reports'\" [collapsed]=\"submenuMode === 'shrink'\" (change)=\"collapsesubmenu()\"></bizdoc-reports-menu>\r\n      <bizdoc-cube-menu *ngSwitchCase=\"'cube'\" [collapsed]=\"submenuMode === 'shrink'\" (change)=\"collapsesubmenu()\"></bizdoc-cube-menu>\r\n    </ng-container>\r\n  </div>\r\n</div>\r\n<bizdoc-panes></bizdoc-panes>\r\n", styles: [":host{display:flex;position:absolute;height:100%;width:100%}.nav-menu{height:100%;z-index:1}.nav-menu .sub-menu{min-width:200px;display:block;z-index:1;overflow-x:hidden}.nav-menu .sub-menu .action{display:flex;flex-direction:row-reverse}.nav-menu .new-container{margin:8px 8px 0}.nav-menu .new-container button{min-width:35px;padding:0 10px;height:40px}.nav-menu .nav-icon{display:none}.nav-menu.nav-collapsed .nav-icon{display:unset}.nav-menu.nav-collapsed .nav-label{display:none}.nav-menu.nav-collapsed .sign-in{flex-direction:column;align-items:center}.nav-menu .sign-in{display:flex;flex-direction:row;overflow:hidden;margin-bottom:5px}\n"], components: [{ type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button],             button[mat-fab], button[mat-mini-fab], button[mat-stroked-button],             button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i2$3.MatNavList, selector: "mat-nav-list", inputs: ["disableRipple", "disabled"], exportAs: ["matNavList"] }, { type: i2$3.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }, { type: i12$1.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { type: ComposeMenuComponent, selector: "bizdoc-new-menu", outputs: ["change"] }, { type: FoldersMenuComponent, selector: "bizdoc-folders-menu", inputs: ["collapsed"], outputs: ["change"] }, { type: AdminMenuComponent, selector: "bizdoc-admin-menu", inputs: ["collapsed"] }, { type: ReportsMenuComponent, selector: "bizdoc-reports-menu", inputs: ["collapsed"], outputs: ["change"] }, { type: CubeMenuComponent, selector: "bizdoc-cube-menu", inputs: ["collapsed"], outputs: ["change"] }, { type: SlotsComponent, selector: "bizdoc-panes" }], directives: [{ type: i6$1.DefaultLayoutDirective, selector: "  [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md],  [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md],  [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm],  [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i2$3.MatListIconCssMatStyler, selector: "[mat-list-icon], [matListIcon]" }, { type: i13.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { type: MatIconAnimate, selector: "[matAnimate]" }, { type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], pipes: { "translate": TranslatePipe }, animations: [submenuAnimation] });
         | 
| 19527 19560 | 
             
            i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: HomeComponent, decorators: [{
         | 
| 19528 19561 | 
             
                        type: Component,
         | 
| 19529 19562 | 
             
                        args: [{ selector: 'bizdoc-home', animations: [submenuAnimation], template: "<div [class.nav-collapsed]=\"collapsed\" [class.nav-open]=\"submenu\" class=\"nav-menu row\">\r\n  <!--[class.loading]=\"loading\"-->\r\n  <div fxLayout=\"column\">\r\n    <div>\r\n      <div [class.active]=\"activeMenu === 'new'\" class=\"new-container\" *ngIf=\"forms.length\">\r\n        <button mat-raised-button class=\"compose\" [bizdocTooltip]=\"'Compose'|translate\" bizdocTooltipPosition=\"end\"\r\n                (click)=\"opennew()\" [disabled]=\"creating\"\r\n                [attr.aria-label]=\"'Compose'| translate\" color=\"primary\" data-help=\"compose\">\r\n          <mat-icon>add</mat-icon>\r\n          <span class=\"nav-label\">{{'Compose'| translate}}</span>\r\n        </button>\r\n      </div>\r\n      <mat-nav-list>\r\n        <mat-list-item [attr.aria-label]=\"'Dashboard' | translate\"\r\n                       (click)=\"nav('dashboard')\" [class.active]=\"activeMenu === 'dashboard'\"\r\n                       data-help=\"dashboard\"\r\n                       [bizdocTooltip]=\"'Dashboard'|translate\" bizdocTooltipPosition=\"end\">\r\n          <mat-icon matListIcon>apps</mat-icon><span class=\"nav-label\">{{'Dashboard' | translate}}</span>\r\n        </mat-list-item>\r\n        <mat-list-item (click)=\"mails()\" [bizdocTooltip]=\"'Mailbox'|translate\" bizdocTooltipPosition=\"end\"\r\n                       [class.active]=\"activeMenu === 'mailbox'\"\r\n                       [attr.aria-label]=\"'Mailbox' | translate\" data-help=\"folders\">\r\n          <mat-icon matListIcon [matBadge]=\"profile.inboxCount\" [matBadgeHidden]=\"profile.inboxCount < 1\" matBadgeColor=\"accent\">inbox</mat-icon>\r\n          <span class=\"nav-label\">{{'Mailbox' | translate}}</span>\r\n        </mat-list-item>\r\n        <mat-list-item [attr.aria-label]=\"'Scheduler' | translate\" *ngIf=\"schedulerEnabled\"\r\n                       (click)=\"nav('schedule')\" [class.active]=\"activeMenu === 'schedule'\"\r\n                       [bizdocTooltip]=\"'Scheduler'|translate\" bizdocTooltipPosition=\"end\">\r\n          <mat-icon matListIcon class=\"mat-icon-rtl-mirror\">date_range</mat-icon><span class=\"nav-label\">{{ 'Scheduler' | translate}}</span>\r\n        </mat-list-item>\r\n        <mat-list-item *ngIf='chatEnabled' data-help=\"chat\" [attr.aria-label]=\"'Chat' | translate\"\r\n                       (click)=\"nav('contacts')\" [class.active]=\"activeMenu === 'contacts'\"\r\n                       [bizdocTooltip]=\"'Chat'|translate\" bizdocTooltipPosition=\"end\">\r\n          <mat-icon matListIcon [matBadge]=\"profile.conversationsCount\" [matBadgeHidden]=\"!profile.conversationsCount\" matBadgeColor=\"accent\">chat</mat-icon><span class=\"nav-label\">{{ 'Chat' | translate}}</span>\r\n        </mat-list-item>\r\n        <mat-divider></mat-divider>\r\n        <mat-list-item *ngIf=\"enableAnalysis && profile.cubes.length\"\r\n                       (click)=\"opensubmenu('cube')\"\r\n                       [class.active]=\"activeMenu === 'cube'\"\r\n                       [bizdocTooltip]=\"'Cube'|translate\" bizdocTooltipPosition=\"end\" data-help=\"cube\" [attr.aria-label]=\"'Cube' | translate\">\r\n          <mat-icon matListIcon>equalizer</mat-icon><span class=\"nav-label\">{{'Cube' | translate}}</span>\r\n        </mat-list-item>\r\n        <mat-list-item *ngIf=\"profile.reports.length\"\r\n                       (click)=\"opensubmenu('reports')\"\r\n                       [class.active]=\"activeMenu === 'reports'\"\r\n                       [bizdocTooltip]=\"'Reports'|translate\" bizdocTooltipPosition=\"end\" data-help=\"reports\" [attr.aria-label]=\"'Reports' | translate\">\r\n          <mat-icon matListIcon>list_alt</mat-icon><span class=\"nav-label\">{{'Reports' | translate}}</span>\r\n        </mat-list-item>\r\n        <ng-container *ngIf=\"sysAdmin\">\r\n          <mat-divider></mat-divider>\r\n          <mat-list-item (click)=\"opensubmenu('admin')\"\r\n                         [class.active]=\"activeMenu === 'admin'\"\r\n                         [bizdocTooltip]=\"'System'|translate\" bizdocTooltipPosition=\"end\" [attr.aria-label]=\"'System' | translate\">\r\n            <mat-icon matListIcon>device_hub</mat-icon>\r\n            <span class=\"nav-label\">{{'Workflow' | translate}}</span>\r\n          </mat-list-item>\r\n        </ng-container>\r\n      </mat-nav-list>\r\n    </div>\r\n    <span class=\"divider\"></span>\r\n    <!--<lottie name=\"lf30_editor_qr7zgmcs\" *ngIf=\"loading\"></lottie>-->\r\n    <!--@animate-->\r\n    <div class=\"sign-in\">\r\n      <button mat-icon-button data-help=\"sign-in\" [bizdocTooltip]=\"'Settings' | translate\" bizdocTooltipPosition=\"end\"\r\n              [attr.aria-label]=\"'Settings' | translate\" (click)=\"options($event)\">\r\n        <mat-icon matAnimate=\"rotate\">settingson</mat-icon>\r\n      </button>\r\n      <span class=\"divider\"></span>\r\n      <button mat-icon-button [attr.aria-label]=\"'Power' | translate\" (click)=\"signout($event)\" [bizdocTooltip]=\"'Exit'|translate\" bizdocTooltipPosition=\"end\">\r\n        <mat-icon class=\"mat-icon-rtl-mirror\">logout</mat-icon>\r\n      </button>\r\n    </div>\r\n  </div>\r\n  <div *ngIf=\"submenu\" class=\"sub-menu\" (mouseleave)=\"collapsesubmenu()\" [@submenu]=\"submenuMode\" (@submenu.done)=\"resize()\">\r\n    <div class=\"action\" *ngIf=\"submenu !== 'new'\">\r\n      <button mat-icon-button (click)=\"togglePinned()\"><mat-icon class=\"mat-icon-rtl-mirror\" [bizdocTooltip]=\"(pinned?'Collapse':'Expand')|translate\" [inline]=\"true\">{{pinned ? 'keyboard_double_arrow_left' : 'keyboard_double_arrow_right'}}</mat-icon></button>\r\n    </div>\r\n    <ng-container [ngSwitch]=\"submenu\">\r\n      <bizdoc-new-menu *ngSwitchCase=\"'new'\" (change)=\"closesubmenu()\"></bizdoc-new-menu>\r\n      <bizdoc-folders-menu *ngSwitchCase=\"'mailbox'\" [collapsed]=\"submenuMode === 'shrink'\" (change)=\"collapsesubmenu()\"></bizdoc-folders-menu>\r\n      <bizdoc-admin-menu *ngSwitchCase=\"'admin'\" [collapsed]=\"submenuMode === 'shrink'\"></bizdoc-admin-menu>\r\n      <bizdoc-reports-menu *ngSwitchCase=\"'reports'\" [collapsed]=\"submenuMode === 'shrink'\" (change)=\"collapsesubmenu()\"></bizdoc-reports-menu>\r\n      <bizdoc-cube-menu *ngSwitchCase=\"'cube'\" [collapsed]=\"submenuMode === 'shrink'\" (change)=\"collapsesubmenu()\"></bizdoc-cube-menu>\r\n    </ng-container>\r\n  </div>\r\n</div>\r\n<bizdoc-panes></bizdoc-panes>\r\n", styles: [":host{display:flex;position:absolute;height:100%;width:100%}.nav-menu{height:100%;z-index:1}.nav-menu .sub-menu{min-width:200px;display:block;z-index:1;overflow-x:hidden}.nav-menu .sub-menu .action{display:flex;flex-direction:row-reverse}.nav-menu .new-container{margin:8px 8px 0}.nav-menu .new-container button{min-width:35px;padding:0 10px;height:40px}.nav-menu .nav-icon{display:none}.nav-menu.nav-collapsed .nav-icon{display:unset}.nav-menu.nav-collapsed .nav-label{display:none}.nav-menu.nav-collapsed .sign-in{flex-direction:column;align-items:center}.nav-menu .sign-in{display:flex;flex-direction:row;overflow:hidden;margin-bottom:5px}\n"] }]
         | 
| 19530 19563 | 
             
                    }], ctorParameters: function () {
         | 
| 19531 | 
            -
                    return [{ type: PanesRouter }, { type: MailboxService }, { type: i0.Injector }, { type: SessionService }, { type: Popup }, { type: HubService }, { type: TranslateService }, { type: i8$2.MatSnackBar }, { type: undefined, decorators: [{
         | 
| 19564 | 
            +
                    return [{ type: PanesRouter }, { type: MailboxService }, { type: i0.Injector }, { type: SessionService }, { type: Popup }, { type: HubService }, { type: TranslateService }, { type: PromptService }, { type: i8$2.MatSnackBar }, { type: undefined, decorators: [{
         | 
| 19532 19565 | 
             
                                    type: Inject,
         | 
| 19533 19566 | 
             
                                    args: [BIZDOC_CONFIG]
         | 
| 19534 19567 | 
             
                                }] }];
         | 
| @@ -19590,7 +19623,7 @@ class FormSelectorSheet { | |
| 19590 19623 | 
             
                copy(event) {
         | 
| 19591 19624 | 
             
                    event.preventDefault();
         | 
| 19592 19625 | 
             
                    this._bsRef.afterDismissed().subscribe(() => this._dialog.open(CopyDialog).afterClosed().subscribe(i => {
         | 
| 19593 | 
            -
                         | 
| 19626 | 
            +
                        i &&
         | 
| 19594 19627 | 
             
                            this._mailbox.copy(i.documentId).subscribe(i => {
         | 
| 19595 19628 | 
             
                                this._sb.toast('Copied', i.number || this._getForm(i.formId).title);
         | 
| 19596 19629 | 
             
                                this._route(i);
         | 
| @@ -19601,9 +19634,9 @@ class FormSelectorSheet { | |
| 19601 19634 | 
             
                _getForm(name) {
         | 
| 19602 19635 | 
             
                    return this._session.profile.forms.find(f => f.name === name);
         | 
| 19603 19636 | 
             
                }
         | 
| 19604 | 
            -
                _error( | 
| 19605 | 
            -
                    if ( | 
| 19606 | 
            -
                        switch ( | 
| 19637 | 
            +
                _error(response) {
         | 
| 19638 | 
            +
                    if (response.constructor.name === 'PositionError')
         | 
| 19639 | 
            +
                        switch (response.code) {
         | 
| 19607 19640 | 
             
                            case 1:
         | 
| 19608 19641 | 
             
                                this._sb.error('UserDeniedGeoErr');
         | 
| 19609 19642 | 
             
                                break;
         | 
| @@ -19611,9 +19644,15 @@ class FormSelectorSheet { | |
| 19611 19644 | 
             
                                this._sb.error('GeoErr');
         | 
| 19612 19645 | 
             
                        }
         | 
| 19613 19646 | 
             
                    else
         | 
| 19614 | 
            -
                        switch ( | 
| 19647 | 
            +
                        switch (response.status) {
         | 
| 19648 | 
            +
                            case 401:
         | 
| 19649 | 
            +
                                this._sb.error('Unauthorized');
         | 
| 19650 | 
            +
                                break;
         | 
| 19615 19651 | 
             
                            case 406:
         | 
| 19616 | 
            -
                                this._sb.errorString( | 
| 19652 | 
            +
                                this._sb.errorString(response.error);
         | 
| 19653 | 
            +
                                break;
         | 
| 19654 | 
            +
                            case 426: // license
         | 
| 19655 | 
            +
                                this._sb.error('LicenseErr');
         | 
| 19617 19656 | 
             
                                break;
         | 
| 19618 19657 | 
             
                            default:
         | 
| 19619 19658 | 
             
                                this._sb.error();
         | 
| @@ -20364,9 +20403,9 @@ class CubeMobileViewComponent extends ViewBase { | |
| 20364 20403 | 
             
                        this.item = item;
         | 
| 20365 20404 | 
             
                        this.mode = 'item';
         | 
| 20366 20405 | 
             
                        this.loading = false;
         | 
| 20367 | 
            -
                    }, e => {
         | 
| 20406 | 
            +
                    }, (e) => {
         | 
| 20368 20407 | 
             
                        this.loading = false;
         | 
| 20369 | 
            -
                        this._sb.error(e.status ===  | 
| 20408 | 
            +
                        this._sb.error(e.status === 401 ? 'Unauthorized' : null);
         | 
| 20370 20409 | 
             
                    });
         | 
| 20371 20410 | 
             
                }
         | 
| 20372 20411 | 
             
                toggleFilter() {
         | 
| @@ -21094,10 +21133,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor | |
| 21094 21133 | 
             
            class CubeMatrixPopupComponent extends CubeMatrixBase {
         | 
| 21095 21134 | 
             
                /** filters */
         | 
| 21096 21135 | 
             
                /** cube-info ctor */
         | 
| 21097 | 
            -
                constructor(_ref, data, service, ds, session | 
| 21136 | 
            +
                constructor(_ref, data, service, ds, session) {
         | 
| 21098 21137 | 
             
                    super(service, ds, session);
         | 
| 21099 21138 | 
             
                    this._ref = _ref;
         | 
| 21100 | 
            -
                    this._sb = _sb;
         | 
| 21101 21139 | 
             
                    this.preloading = true;
         | 
| 21102 21140 | 
             
                    if (!data.options)
         | 
| 21103 21141 | 
             
                        throw 'no data options';
         | 
| @@ -21117,13 +21155,12 @@ class CubeMatrixPopupComponent extends CubeMatrixBase { | |
| 21117 21155 | 
             
                }
         | 
| 21118 21156 | 
             
                ngOnInit() {
         | 
| 21119 21157 | 
             
                    this.table.loadingChange.pipe(filter$1(ok => !ok), first$1()).subscribe(() => this.preloading = false, (e) => {
         | 
| 21120 | 
            -
                        if (e.status ===  | 
| 21158 | 
            +
                        if (e.status === 401)
         | 
| 21121 21159 | 
             
                            this._ref.close();
         | 
| 21122 | 
            -
                        this._sb.error(e.status === 406 ? 'Unauthorized' : null);
         | 
| 21123 21160 | 
             
                    });
         | 
| 21124 21161 | 
             
                }
         | 
| 21125 21162 | 
             
            }
         | 
| 21126 | 
            -
            CubeMatrixPopupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: CubeMatrixPopupComponent, deps: [{ token: PopupRef }, { token: POPUP_DATA }, { token: CubeService }, { token: DatasourceService }, { token: SessionService } | 
| 21163 | 
            +
            CubeMatrixPopupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: CubeMatrixPopupComponent, deps: [{ token: PopupRef }, { token: POPUP_DATA }, { token: CubeService }, { token: DatasourceService }, { token: SessionService }], target: i0.ɵɵFactoryTarget.Component });
         | 
| 21127 21164 | 
             
            CubeMatrixPopupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: CubeMatrixPopupComponent, selector: "ng-component", viewQueries: [{ propertyName: "table", first: true, predicate: CubeMatrixComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<mat-progress-bar mode=\"query\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<div class=\"container\">\r\n  <div class=\"row\" *ngIf=\"!preloading && (patterns?.length || filters?.length)\">\r\n    <span class=\"divider\"></span>\r\n    <!-- title -->\r\n    <button mat-icon-button [matMenuTriggerFor]=\"options\" *ngIf=\"patterns && patterns.length\"><mat-icon [class.filled]=\"pattern\">filter_alt</mat-icon></button>\r\n    <mat-menu #options xPosition=\"before\">\r\n      <!-- patterns -->\r\n      <button mat-menu-item *ngFor=\"let p of patterns\" (click)=\"aggregate(p)\">{{p.title}}</button>\r\n    </mat-menu>\r\n    <button mat-icon-button (click)=\"reset()\" [disabled]=\"!pattern\" [bizdocTooltip]=\"'Clear' | translate\">\r\n      <mat-icon>clear_all</mat-icon>\r\n    </button>\r\n    <!-- filters -->\r\n    <ng-container *ngFor=\"let f of filters\">\r\n      <button mat-button [matMenuTriggerFor]=\"fmenu\">{{values[f.name]| typeValue : f.dataType | async}} <mat-icon>arrow_drop_down</mat-icon></button>\r\n      <mat-menu #fmenu xPosition=\"before\">\r\n        <button mat-menu-item *ngFor=\"let kv of sources[f.name] | async\"\r\n                (click)=\"filter(f.name, kv.key, kv.value)\">\r\n          {{kv.value}}\r\n        </button>\r\n      </mat-menu>\r\n    </ng-container>\r\n  </div>\r\n  <bizdoc-cube-matrix [cube]=\"cube\" [xAxis]=\"xAxis\" [series]=\"series\" [indices]=\"indices\"\r\n                      [sum]=sum [interactive]=\"false\"\r\n                      [xAxisTotalLabel]=\"xAxisTotalLabel\"\r\n                      [seriesTotalLabel]=\"seriesTotalLabel\"\r\n                      [placeAt]=\"placeAt\"\r\n                      [indexAt]=\"indexAt\"\r\n                      [filters]=\"axes\" (loadingChange)=\"loading=$event\"></bizdoc-cube-matrix>\r\n</div>\r\n", styles: [".container{padding:8px}::ng-deep .cube-table{display:inline}\n"], components: [{ type: i11.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button],             button[mat-fab], button[mat-mini-fab], button[mat-stroked-button],             button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i9.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i9.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: CubeMatrixComponent, selector: "bizdoc-cube-matrix", inputs: ["seriesTotalLabel", "xAxisTotalLabel", "cube", "xAxis", "series", "indices", "indexAt", "placeAt", "scope", "sum", "filters", "loading", "interactive"], outputs: ["explore", "loadingChange"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }], pipes: { "translate": TranslatePipe, "async": i10.AsyncPipe, "typeValue": TypeValuePipe } });
         | 
| 21128 21165 | 
             
            i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: CubeMatrixPopupComponent, decorators: [{
         | 
| 21129 21166 | 
             
                        type: Component,
         | 
| @@ -21135,7 +21172,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor | |
| 21135 21172 | 
             
                                }] }, { type: undefined, decorators: [{
         | 
| 21136 21173 | 
             
                                    type: Inject,
         | 
| 21137 21174 | 
             
                                    args: [POPUP_DATA]
         | 
| 21138 | 
            -
                                }] }, { type: CubeService }, { type: DatasourceService }, { type: SessionService } | 
| 21175 | 
            +
                                }] }, { type: CubeService }, { type: DatasourceService }, { type: SessionService }];
         | 
| 21139 21176 | 
             
                }, propDecorators: { table: [{
         | 
| 21140 21177 | 
             
                            type: ViewChild,
         | 
| 21141 21178 | 
             
                            args: [CubeMatrixComponent, { static: true }]
         | 
| @@ -26395,7 +26432,7 @@ let CubeExploreViewComponent = class CubeExploreViewComponent extends CubeBase { | |
| 26395 26432 | 
             
                        this.loading = false;
         | 
| 26396 26433 | 
             
                    }, e => {
         | 
| 26397 26434 | 
             
                        this.loading = false;
         | 
| 26398 | 
            -
                        this._sb.error(e.status ===  | 
| 26435 | 
            +
                        this._sb.error(e.status === 401 ? 'Unauthorized' : null);
         | 
| 26399 26436 | 
             
                    });
         | 
| 26400 26437 | 
             
                }
         | 
| 26401 26438 | 
             
            };
         | 
| @@ -26511,7 +26548,7 @@ class CubeParallelComponent { | |
| 26511 26548 | 
             
                            this.width = Math.max(Math.round(this.size / this.items.length), 150) + 'px';
         | 
| 26512 26549 | 
             
                        this._loading.next(false);
         | 
| 26513 26550 | 
             
                    }, (e) => {
         | 
| 26514 | 
            -
                        this._sb.error(e.status ===  | 
| 26551 | 
            +
                        this._sb.error(e.status === 401 ? 'Unauthorized' : e.status === 426 ? 'LicenseErr' : null);
         | 
| 26515 26552 | 
             
                        this._loading.next(false);
         | 
| 26516 26553 | 
             
                    });
         | 
| 26517 26554 | 
             
                }
         |