@porscheinformatik/material-addons 18.0.4 → 19.0.1
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/fesm2022/porscheinformatik-material-addons.mjs +291 -260
- package/fesm2022/porscheinformatik-material-addons.mjs.map +1 -1
- package/lib/alert/alert.component.d.ts.map +1 -1
- package/lib/button/danger-button/danger-button.component.d.ts.map +1 -1
- package/lib/button/flat-button/link-button.component.d.ts.map +1 -1
- package/lib/button/icon-button/icon-button.component.d.ts.map +1 -1
- package/lib/button/mad-basic-button.d.ts.map +1 -1
- package/lib/button/outline-button/outline-button.component.d.ts.map +1 -1
- package/lib/button/primary-button/primary-button.component.d.ts.map +1 -1
- package/lib/card/card.component.d.ts.map +1 -1
- package/lib/data-table/data-table-columns-modal/data-table-columns-modal.component.d.ts.map +1 -1
- package/lib/data-table/data-table-filter/data-table-filter-component/data-table-filter-dialog/data-table-filter-dialog.component.d.ts.map +1 -1
- package/lib/data-table/data-table-filter/data-table-filter-component/data-table-filter.component.d.ts.map +1 -1
- package/lib/data-table/data-table.component.d.ts.map +1 -1
- package/lib/file-upload/file-upload.component.d.ts +12 -5
- package/lib/file-upload/file-upload.component.d.ts.map +1 -1
- package/lib/layout/flowbar/flowbar.component.d.ts.map +1 -1
- package/lib/layout/sidebar/sidebar.component.d.ts.map +1 -1
- package/lib/layout/sidebar-layout/sidebar-layout.component.d.ts.map +1 -1
- package/lib/layout/toolbar/toolbar.component.d.ts.map +1 -1
- package/lib/material-action-button/material-action-button.component.d.ts.map +1 -1
- package/lib/numeric-field/number-format.service.d.ts +5 -0
- package/lib/numeric-field/number-format.service.d.ts.map +1 -1
- package/lib/numeric-field/numeric-field.module.d.ts.map +1 -1
- package/lib/quick-list/base-quick-list.component.d.ts.map +1 -1
- package/lib/quick-list/quick-list-compact/quick-list-compact.component.d.ts.map +1 -1
- package/lib/quick-list/quick-list.component.d.ts.map +1 -1
- package/lib/quick-list/reactive-form-quick-list/reactive-form-quick-list.component.d.ts.map +1 -1
- package/lib/quick-list/reactive-form-quick-list-compact/reactive-form-quick-list-compact.component.d.ts.map +1 -1
- package/lib/readonly/readonly-form-field/readonly-form-field.component.d.ts.map +1 -1
- package/lib/readonly/readonly-form-field-wrapper/readonly-form-field-wrapper.component.d.ts.map +1 -1
- package/lib/stepper/step-header/step-header.component.d.ts.map +1 -1
- package/lib/stepper/stepper.component.d.ts.map +1 -1
- package/lib/table/table.component.d.ts.map +1 -1
- package/package.json +3 -5
- package/version.d.ts +1 -1
- package/esm2022/lib/alert/alert-configuration.mjs +0 -12
- package/esm2022/lib/alert/alert.component.mjs +0 -65
- package/esm2022/lib/alert/alert.mjs +0 -3
- package/esm2022/lib/button/button.mjs +0 -9
- package/esm2022/lib/button/button.module.mjs +0 -74
- package/esm2022/lib/button/danger-button/danger-button.component.mjs +0 -27
- package/esm2022/lib/button/flat-button/link-button.component.mjs +0 -27
- package/esm2022/lib/button/icon-button/icon-button.component.mjs +0 -27
- package/esm2022/lib/button/mad-basic-button.mjs +0 -39
- package/esm2022/lib/button/mad-button/mad-button.directive.mjs +0 -61
- package/esm2022/lib/button/mad-button-group/mad-button-group.component.mjs +0 -21
- package/esm2022/lib/button/outline-button/outline-button.component.mjs +0 -30
- package/esm2022/lib/button/primary-button/primary-button.component.mjs +0 -27
- package/esm2022/lib/card/card.component.mjs +0 -139
- package/esm2022/lib/card/card.mjs +0 -2
- package/esm2022/lib/card/card.module.mjs +0 -22
- package/esm2022/lib/data-table/configuration/data-table-action-type.mjs +0 -6
- package/esm2022/lib/data-table/configuration/data-table-action.mjs +0 -2
- package/esm2022/lib/data-table/configuration/data-table-column-definition.mjs +0 -2
- package/esm2022/lib/data-table/configuration/data-table-column.mjs +0 -2
- package/esm2022/lib/data-table/configuration/data-table-filter-mode.mjs +0 -2
- package/esm2022/lib/data-table/configuration/data-table-global-configuration.mjs +0 -16
- package/esm2022/lib/data-table/configuration/data-table-header-type.mjs +0 -2
- package/esm2022/lib/data-table/configuration/data-table-persistence-configuration.mjs +0 -2
- package/esm2022/lib/data-table/configuration/data-table-row.mjs +0 -2
- package/esm2022/lib/data-table/configuration/data-table-selection-emit-mode.mjs +0 -2
- package/esm2022/lib/data-table/configuration/data-table-selection-emit-type.mjs +0 -2
- package/esm2022/lib/data-table/configuration/data-table-selection-mode.mjs +0 -2
- package/esm2022/lib/data-table/data-table-columns-modal/data-table-columns-modal.component.mjs +0 -107
- package/esm2022/lib/data-table/data-table-filter/data-table-filter-component/data-table-filter-dialog/data-table-filter-dialog.component.mjs +0 -43
- package/esm2022/lib/data-table/data-table-filter/data-table-filter-component/data-table-filter.component.mjs +0 -41
- package/esm2022/lib/data-table/data-table-filter/data-table-filter-header.directive.mjs +0 -128
- package/esm2022/lib/data-table/data-table-filter/data-table-filter-object.mjs +0 -2
- package/esm2022/lib/data-table/data-table-filter/data-table-filter-options.mjs +0 -2
- package/esm2022/lib/data-table/data-table-filter/data-table-filter.directive.mjs +0 -46
- package/esm2022/lib/data-table/data-table-persistence.service.mjs +0 -61
- package/esm2022/lib/data-table/data-table-template/data-table-template-cell-definition.directive.mjs +0 -28
- package/esm2022/lib/data-table/data-table-template/data-table-template-column-definition.directive.mjs +0 -22
- package/esm2022/lib/data-table/data-table-template/data-table-template-expandable-cell-definition.directive.mjs +0 -28
- package/esm2022/lib/data-table/data-table-template/data-table-template-expandable-column-definition.directive.mjs +0 -22
- package/esm2022/lib/data-table/data-table.component.mjs +0 -765
- package/esm2022/lib/data-table/data-table.mjs +0 -11
- package/esm2022/lib/data-table/util/data-table-action-util.mjs +0 -40
- package/esm2022/lib/data-table/util/data-table-data-util.mjs +0 -49
- package/esm2022/lib/data-table/util/data-table-filter-util.mjs +0 -24
- package/esm2022/lib/data-table/util/data-table-sort-util.mjs +0 -80
- package/esm2022/lib/file-upload/drag-and-drop-directive.directive.mjs +0 -61
- package/esm2022/lib/file-upload/file-upload.component.mjs +0 -78
- package/esm2022/lib/layout/content-panel/content-header/content-header.component.mjs +0 -11
- package/esm2022/lib/layout/content-panel/content-panel-container/content-panel-container.component.mjs +0 -11
- package/esm2022/lib/layout/content-panel/content-panel-container-content/content-panel-container-content.component.mjs +0 -11
- package/esm2022/lib/layout/content-panel/content-panel-container-footer/content-panel-container-footer.component.mjs +0 -11
- package/esm2022/lib/layout/content-panel/content-panel-container-sidebar/content-panel-container-sidebar.component.mjs +0 -11
- package/esm2022/lib/layout/content-panel/content-panel.module.mjs +0 -48
- package/esm2022/lib/layout/content-panel/main-container/main-container.component.mjs +0 -11
- package/esm2022/lib/layout/flowbar/flowbar.component.mjs +0 -191
- package/esm2022/lib/layout/flowbar/flowbar.module.mjs +0 -18
- package/esm2022/lib/layout/sidebar/sidebar-item/sidebar-item.component.mjs +0 -11
- package/esm2022/lib/layout/sidebar/sidebar.component.mjs +0 -23
- package/esm2022/lib/layout/sidebar/sidebar.module.mjs +0 -20
- package/esm2022/lib/layout/sidebar-layout/sidebar-layout.component.mjs +0 -67
- package/esm2022/lib/layout/toolbar/toolbar-action.interface.mjs +0 -2
- package/esm2022/lib/layout/toolbar/toolbar.component.mjs +0 -98
- package/esm2022/lib/layout/toolbar/toolbar.module.mjs +0 -58
- package/esm2022/lib/layout/toolbar/toolbar.service.mjs +0 -124
- package/esm2022/lib/material-action-button/material-action-button.component.mjs +0 -37
- package/esm2022/lib/material-action-button/material-action-button.module.mjs +0 -21
- package/esm2022/lib/material-addons.module.mjs +0 -49
- package/esm2022/lib/numeric-field/number-format.service.mjs +0 -139
- package/esm2022/lib/numeric-field/numeric-field.directive.mjs +0 -299
- package/esm2022/lib/numeric-field/numeric-field.mjs +0 -2
- package/esm2022/lib/numeric-field/numeric-field.module.mjs +0 -24
- package/esm2022/lib/quick-list/base-quick-list.component.mjs +0 -124
- package/esm2022/lib/quick-list/quick-list-compact/quick-list-compact.component.mjs +0 -23
- package/esm2022/lib/quick-list/quick-list.component.mjs +0 -24
- package/esm2022/lib/quick-list/quick-list.mjs +0 -6
- package/esm2022/lib/quick-list/quick-list.module.mjs +0 -63
- package/esm2022/lib/quick-list/reactive-form-quick-list/reactive-form-quick-list.component.mjs +0 -23
- package/esm2022/lib/quick-list/reactive-form-quick-list-compact/reactive-form-quick-list-compact.component.mjs +0 -23
- package/esm2022/lib/readonly/readonly-form-field/readonly-form-field.component.mjs +0 -243
- package/esm2022/lib/readonly/readonly-form-field-wrapper/readonly-form-field-wrapper.component.mjs +0 -183
- package/esm2022/lib/readonly/readonly-form-field.module.mjs +0 -51
- package/esm2022/lib/stepper/mad-stepper-animation.mjs +0 -13
- package/esm2022/lib/stepper/step-header/step-header.component.mjs +0 -78
- package/esm2022/lib/stepper/stepper.component.mjs +0 -158
- package/esm2022/lib/stepper/stepper.module.mjs +0 -45
- package/esm2022/lib/table/column-header.mjs +0 -2
- package/esm2022/lib/table/table-action.mjs +0 -2
- package/esm2022/lib/table/table.component.mjs +0 -146
- package/esm2022/lib/table/table.mjs +0 -2
- package/esm2022/lib/table/table.module.mjs +0 -58
- package/esm2022/lib/throttle-click/throttle-click.directive.mjs +0 -39
- package/esm2022/lib/throttle-click/throttle-click.module.mjs +0 -17
- package/esm2022/porscheinformatik-material-addons.mjs +0 -5
- package/esm2022/public_api.mjs +0 -48
- package/esm2022/version.mjs +0 -2
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { RouterModule } from '@angular/router';
|
|
4
|
-
import { ToolbarComponent } from './toolbar.component';
|
|
5
|
-
import { MaterialActionButtonModule } from '../../material-action-button/material-action-button.module';
|
|
6
|
-
import { MatMenuModule } from '@angular/material/menu';
|
|
7
|
-
import { MatToolbarModule } from '@angular/material/toolbar';
|
|
8
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
9
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
10
|
-
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
11
|
-
import { ButtonModule } from '../../button/button.module';
|
|
12
|
-
import { MatBadgeModule } from '@angular/material/badge';
|
|
13
|
-
import * as i0 from "@angular/core";
|
|
14
|
-
export class ToolbarModule {
|
|
15
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ToolbarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
16
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.2", ngImport: i0, type: ToolbarModule, imports: [CommonModule,
|
|
17
|
-
RouterModule,
|
|
18
|
-
MatMenuModule,
|
|
19
|
-
MatButtonModule,
|
|
20
|
-
MatToolbarModule,
|
|
21
|
-
MatIconModule,
|
|
22
|
-
MaterialActionButtonModule,
|
|
23
|
-
MatTooltipModule,
|
|
24
|
-
ButtonModule,
|
|
25
|
-
MatBadgeModule,
|
|
26
|
-
ToolbarComponent], exports: [ToolbarComponent] }); }
|
|
27
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ToolbarModule, imports: [CommonModule,
|
|
28
|
-
RouterModule,
|
|
29
|
-
MatMenuModule,
|
|
30
|
-
MatButtonModule,
|
|
31
|
-
MatToolbarModule,
|
|
32
|
-
MatIconModule,
|
|
33
|
-
MaterialActionButtonModule,
|
|
34
|
-
MatTooltipModule,
|
|
35
|
-
ButtonModule,
|
|
36
|
-
MatBadgeModule,
|
|
37
|
-
ToolbarComponent] }); }
|
|
38
|
-
}
|
|
39
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ToolbarModule, decorators: [{
|
|
40
|
-
type: NgModule,
|
|
41
|
-
args: [{
|
|
42
|
-
imports: [
|
|
43
|
-
CommonModule,
|
|
44
|
-
RouterModule,
|
|
45
|
-
MatMenuModule,
|
|
46
|
-
MatButtonModule,
|
|
47
|
-
MatToolbarModule,
|
|
48
|
-
MatIconModule,
|
|
49
|
-
MaterialActionButtonModule,
|
|
50
|
-
MatTooltipModule,
|
|
51
|
-
ButtonModule,
|
|
52
|
-
MatBadgeModule,
|
|
53
|
-
ToolbarComponent,
|
|
54
|
-
],
|
|
55
|
-
exports: [ToolbarComponent],
|
|
56
|
-
}]
|
|
57
|
-
}] });
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC1hZGRvbnMvc3JjL2xpYi9sYXlvdXQvdG9vbGJhci90b29sYmFyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDeEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFrQnpELE1BQU0sT0FBTyxhQUFhOzhHQUFiLGFBQWE7K0dBQWIsYUFBYSxZQWR0QixZQUFZO1lBQ1osWUFBWTtZQUNaLGFBQWE7WUFDYixlQUFlO1lBQ2YsZ0JBQWdCO1lBQ2hCLGFBQWE7WUFDYiwwQkFBMEI7WUFDMUIsZ0JBQWdCO1lBQ2hCLFlBQVk7WUFDWixjQUFjO1lBQ2QsZ0JBQWdCLGFBRVIsZ0JBQWdCOytHQUVmLGFBQWEsWUFkdEIsWUFBWTtZQUNaLFlBQVk7WUFDWixhQUFhO1lBQ2IsZUFBZTtZQUNmLGdCQUFnQjtZQUNoQixhQUFhO1lBQ2IsMEJBQTBCO1lBQzFCLGdCQUFnQjtZQUNoQixZQUFZO1lBQ1osY0FBYztZQUNkLGdCQUFnQjs7MkZBSVAsYUFBYTtrQkFoQnpCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLDBCQUEwQjt3QkFDMUIsZ0JBQWdCO3dCQUNoQixZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsZ0JBQWdCO3FCQUNqQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztpQkFDNUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBUb29sYmFyQ29tcG9uZW50IH0gZnJvbSAnLi90b29sYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXRlcmlhbEFjdGlvbkJ1dHRvbk1vZHVsZSB9IGZyb20gJy4uLy4uL21hdGVyaWFsLWFjdGlvbi1idXR0b24vbWF0ZXJpYWwtYWN0aW9uLWJ1dHRvbi5tb2R1bGUnO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgTWF0VG9vbGJhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2xiYXInO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJy4uLy4uL2J1dHRvbi9idXR0b24ubW9kdWxlJztcbmltcG9ydCB7IE1hdEJhZGdlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYmFkZ2UnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJvdXRlck1vZHVsZSxcbiAgICBNYXRNZW51TW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRUb29sYmFyTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0ZXJpYWxBY3Rpb25CdXR0b25Nb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBCdXR0b25Nb2R1bGUsXG4gICAgTWF0QmFkZ2VNb2R1bGUsXG4gICAgVG9vbGJhckNvbXBvbmVudCxcbiAgXSxcbiAgZXhwb3J0czogW1Rvb2xiYXJDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBUb29sYmFyTW9kdWxlIHt9XG4iXX0=
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { NavigationEnd } from '@angular/router';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/router";
|
|
5
|
-
import * as i2 from "@ngx-translate/core";
|
|
6
|
-
export class ToolbarService {
|
|
7
|
-
constructor(router, translate) {
|
|
8
|
-
this.router = router;
|
|
9
|
-
this.translate = translate;
|
|
10
|
-
this.mainActions = []; // shown on the left, next to title, as big buttons
|
|
11
|
-
this.toolbarActions = []; // shown on the right as icons
|
|
12
|
-
this.toolbarActionsAlwaysAsMenu = false; // show the mobile view (burger menu) for toolbar actions
|
|
13
|
-
this.toolbarActionsMenuTitle = 'More'; // title of the burger menu
|
|
14
|
-
this.routerSubscription = this.router.events.subscribe((routingEvent) => {
|
|
15
|
-
if (routingEvent instanceof NavigationEnd) {
|
|
16
|
-
if (this.currentUrl !== routingEvent.urlAfterRedirects) {
|
|
17
|
-
this.clearToolbarActions();
|
|
18
|
-
this.clearMainActions();
|
|
19
|
-
delete this.backAction;
|
|
20
|
-
delete this.dataTitle;
|
|
21
|
-
}
|
|
22
|
-
this.currentUrl = router.url;
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
get toolbarTitle() {
|
|
27
|
-
return this.title;
|
|
28
|
-
}
|
|
29
|
-
set toolbarTitle(toolbarTitle) {
|
|
30
|
-
this.title = toolbarTitle;
|
|
31
|
-
}
|
|
32
|
-
ngOnDestroy() {
|
|
33
|
-
if (this.routerSubscription) {
|
|
34
|
-
this.routerSubscription.unsubscribe();
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
getToolbarActions() {
|
|
38
|
-
return this.toolbarActions;
|
|
39
|
-
}
|
|
40
|
-
addToolbarAction(action) {
|
|
41
|
-
this.translate
|
|
42
|
-
.get(action.i18nActionKey)
|
|
43
|
-
.toPromise()
|
|
44
|
-
.then((translated) => {
|
|
45
|
-
action.actionName = translated;
|
|
46
|
-
this.toolbarActions.push(action);
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
setDataTitle(dataTitle) {
|
|
50
|
-
this.dataTitle = dataTitle;
|
|
51
|
-
}
|
|
52
|
-
setToolbarActionsAlwaysAsMenu(toolbarActionsAlwaysAsMenu) {
|
|
53
|
-
this.toolbarActionsAlwaysAsMenu = toolbarActionsAlwaysAsMenu;
|
|
54
|
-
}
|
|
55
|
-
getToolbarActionsAlwaysAsMenu() {
|
|
56
|
-
return this.toolbarActionsAlwaysAsMenu;
|
|
57
|
-
}
|
|
58
|
-
getDataTitle() {
|
|
59
|
-
return this.dataTitle;
|
|
60
|
-
}
|
|
61
|
-
clearToolbarActions() {
|
|
62
|
-
this.toolbarActions = [];
|
|
63
|
-
}
|
|
64
|
-
getMainActions() {
|
|
65
|
-
return this.mainActions;
|
|
66
|
-
}
|
|
67
|
-
getBackAction() {
|
|
68
|
-
return this.backAction;
|
|
69
|
-
}
|
|
70
|
-
setToolbarActionsMenuTitle(toolbarActionsMenuTitle) {
|
|
71
|
-
this.toolbarActionsMenuTitle = toolbarActionsMenuTitle;
|
|
72
|
-
}
|
|
73
|
-
getToolbarActionsMenuTitle() {
|
|
74
|
-
return this.toolbarActionsMenuTitle;
|
|
75
|
-
}
|
|
76
|
-
addMainAction(mainAction) {
|
|
77
|
-
this.translate
|
|
78
|
-
.get(mainAction.i18nActionKey)
|
|
79
|
-
.toPromise()
|
|
80
|
-
.then((translated) => {
|
|
81
|
-
mainAction.actionName = translated;
|
|
82
|
-
this.mainActions.push(mainAction);
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Per default the goBackRoute is a routerLink. But if a href should be used (for absolute browser routing) then isAbsoluteUrl can be set to true.
|
|
87
|
-
*/
|
|
88
|
-
addBackAction(goBackRoute, isAbsoluteUrl = false) {
|
|
89
|
-
this.backAction = {
|
|
90
|
-
matIcon: 'keyboard_backspace',
|
|
91
|
-
i18nActionKey: '',
|
|
92
|
-
};
|
|
93
|
-
if (!isAbsoluteUrl) {
|
|
94
|
-
this.backAction.routerLink = goBackRoute;
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
97
|
-
this.backAction.href = goBackRoute;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
addSimpleBackButton(overrideIfPresent = false) {
|
|
101
|
-
if (this.getBackAction() && !overrideIfPresent) {
|
|
102
|
-
return;
|
|
103
|
-
}
|
|
104
|
-
this.backAction = {
|
|
105
|
-
matIcon: 'keyboard_backspace',
|
|
106
|
-
i18nActionKey: '',
|
|
107
|
-
action() {
|
|
108
|
-
window.history.back();
|
|
109
|
-
},
|
|
110
|
-
};
|
|
111
|
-
}
|
|
112
|
-
clearMainActions() {
|
|
113
|
-
this.mainActions = [];
|
|
114
|
-
}
|
|
115
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ToolbarService, deps: [{ token: i1.Router }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
116
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ToolbarService, providedIn: 'root' }); }
|
|
117
|
-
}
|
|
118
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ToolbarService, decorators: [{
|
|
119
|
-
type: Injectable,
|
|
120
|
-
args: [{
|
|
121
|
-
providedIn: 'root',
|
|
122
|
-
}]
|
|
123
|
-
}], ctorParameters: () => [{ type: i1.Router }, { type: i2.TranslateService }] });
|
|
124
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWF0ZXJpYWwtYWRkb25zL3NyYy9saWIvbGF5b3V0L3Rvb2xiYXIvdG9vbGJhci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBVSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBUXhELE1BQU0sT0FBTyxjQUFjO0lBWXpCLFlBQ1UsTUFBYyxFQUNkLFNBQTJCO1FBRDNCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQVpyQyxnQkFBVyxHQUFpQixFQUFFLENBQUMsQ0FBQyxtREFBbUQ7UUFDbkYsbUJBQWMsR0FBb0IsRUFBRSxDQUFDLENBQUMsOEJBQThCO1FBQ3BFLCtCQUEwQixHQUFHLEtBQUssQ0FBQyxDQUFDLHlEQUF5RDtRQUlyRiw0QkFBdUIsR0FBRyxNQUFNLENBQUMsQ0FBQywyQkFBMkI7UUFRbkUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQ3RFLElBQUksWUFBWSxZQUFZLGFBQWEsRUFBRSxDQUFDO2dCQUMxQyxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssWUFBWSxDQUFDLGlCQUFpQixFQUFFLENBQUM7b0JBQ3ZELElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO29CQUMzQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztvQkFDeEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO29CQUN2QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQ3hCLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDO1lB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RztZQUNoQixPQUFPLEVBQUUsb0JBQW9CO1lBQzdCLGFBQWEsRUFBRSxFQUFFO1lBQ2pCLE1BQU07Z0JBQ0osTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN4QixDQUFDO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUN4QixDQUFDOzhHQXRJVSxjQUFjO2tIQUFkLGNBQWMsY0FGYixNQUFNOzsyRkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQmFja0FjdGlvbiwgTWFpbkFjdGlvbiwgVG9vbGJhckFjdGlvbiB9IGZyb20gJy4vdG9vbGJhci1hY3Rpb24uaW50ZXJmYWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFRvb2xiYXJTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgYmFja0FjdGlvbjogQmFja0FjdGlvbjtcbiAgbWFpbkFjdGlvbnM6IE1haW5BY3Rpb25bXSA9IFtdOyAvLyBzaG93biBvbiB0aGUgbGVmdCwgbmV4dCB0byB0aXRsZSwgYXMgYmlnIGJ1dHRvbnNcbiAgdG9vbGJhckFjdGlvbnM6IFRvb2xiYXJBY3Rpb25bXSA9IFtdOyAvLyBzaG93biBvbiB0aGUgcmlnaHQgYXMgaWNvbnNcbiAgdG9vbGJhckFjdGlvbnNBbHdheXNBc01lbnUgPSBmYWxzZTsgLy8gc2hvdyB0aGUgbW9iaWxlIHZpZXcgKGJ1cmdlciBtZW51KSBmb3IgdG9vbGJhciBhY3Rpb25zXG4gIGRhdGFUaXRsZTogc3RyaW5nO1xuICByb3V0ZXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSB0aXRsZTogc3RyaW5nO1xuICBwcml2YXRlIHRvb2xiYXJBY3Rpb25zTWVudVRpdGxlID0gJ01vcmUnOyAvLyB0aXRsZSBvZiB0aGUgYnVyZ2VyIG1lbnVcblxuICBwcml2YXRlIGN1cnJlbnRVcmw6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICApIHtcbiAgICB0aGlzLnJvdXRlclN1YnNjcmlwdGlvbiA9IHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoKHJvdXRpbmdFdmVudCkgPT4ge1xuICAgICAgaWYgKHJvdXRpbmdFdmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFVybCAhPT0gcm91dGluZ0V2ZW50LnVybEFmdGVyUmVkaXJlY3RzKSB7XG4gICAgICAgICAgdGhpcy5jbGVhclRvb2xiYXJBY3Rpb25zKCk7XG4gICAgICAgICAgdGhpcy5jbGVhck1haW5BY3Rpb25zKCk7XG4gICAgICAgICAgZGVsZXRlIHRoaXMuYmFja0FjdGlvbjtcbiAgICAgICAgICBkZWxldGUgdGhpcy5kYXRhVGl0bGU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdXJyZW50VXJsID0gcm91dGVyLnVybDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldCB0b29sYmFyVGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50aXRsZTtcbiAgfVxuXG4gIHNldCB0b29sYmFyVGl0bGUodG9vbGJhclRpdGxlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRpdGxlID0gdG9vbGJhclRpdGxlO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucm91dGVyU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnJvdXRlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIGdldFRvb2xiYXJBY3Rpb25zKCk6IFRvb2xiYXJBY3Rpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMudG9vbGJhckFjdGlvbnM7XG4gIH1cblxuICBhZGRUb29sYmFyQWN0aW9uKGFjdGlvbjogVG9vbGJhckFjdGlvbik6IHZvaWQge1xuICAgIHRoaXMudHJhbnNsYXRlXG4gICAgICAuZ2V0KGFjdGlvbi5pMThuQWN0aW9uS2V5KVxuICAgICAgLnRvUHJvbWlzZSgpXG4gICAgICAudGhlbigodHJhbnNsYXRlZCkgPT4ge1xuICAgICAgICBhY3Rpb24uYWN0aW9uTmFtZSA9IHRyYW5zbGF0ZWQ7XG4gICAgICAgIHRoaXMudG9vbGJhckFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgfSk7XG4gIH1cblxuICBzZXREYXRhVGl0bGUoZGF0YVRpdGxlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGFUaXRsZSA9IGRhdGFUaXRsZTtcbiAgfVxuXG4gIHNldFRvb2xiYXJBY3Rpb25zQWx3YXlzQXNNZW51KHRvb2xiYXJBY3Rpb25zQWx3YXlzQXNNZW51OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy50b29sYmFyQWN0aW9uc0Fsd2F5c0FzTWVudSA9IHRvb2xiYXJBY3Rpb25zQWx3YXlzQXNNZW51O1xuICB9XG5cbiAgZ2V0VG9vbGJhckFjdGlvbnNBbHdheXNBc01lbnUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudG9vbGJhckFjdGlvbnNBbHdheXNBc01lbnU7XG4gIH1cblxuICBnZXREYXRhVGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhVGl0bGU7XG4gIH1cblxuICBjbGVhclRvb2xiYXJBY3Rpb25zKCk6IHZvaWQge1xuICAgIHRoaXMudG9vbGJhckFjdGlvbnMgPSBbXTtcbiAgfVxuXG4gIGdldE1haW5BY3Rpb25zKCk6IE1haW5BY3Rpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMubWFpbkFjdGlvbnM7XG4gIH1cblxuICBnZXRCYWNrQWN0aW9uKCk6IEJhY2tBY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLmJhY2tBY3Rpb247XG4gIH1cblxuICBzZXRUb29sYmFyQWN0aW9uc01lbnVUaXRsZSh0b29sYmFyQWN0aW9uc01lbnVUaXRsZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy50b29sYmFyQWN0aW9uc01lbnVUaXRsZSA9IHRvb2xiYXJBY3Rpb25zTWVudVRpdGxlO1xuICB9XG5cbiAgZ2V0VG9vbGJhckFjdGlvbnNNZW51VGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50b29sYmFyQWN0aW9uc01lbnVUaXRsZTtcbiAgfVxuXG4gIGFkZE1haW5BY3Rpb24obWFpbkFjdGlvbjogTWFpbkFjdGlvbik6IHZvaWQge1xuICAgIHRoaXMudHJhbnNsYXRlXG4gICAgICAuZ2V0KG1haW5BY3Rpb24uaTE4bkFjdGlvbktleSlcbiAgICAgIC50b1Byb21pc2UoKVxuICAgICAgLnRoZW4oKHRyYW5zbGF0ZWQpID0+IHtcbiAgICAgICAgbWFpbkFjdGlvbi5hY3Rpb25OYW1lID0gdHJhbnNsYXRlZDtcbiAgICAgICAgdGhpcy5tYWluQWN0aW9ucy5wdXNoKG1haW5BY3Rpb24pO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUGVyIGRlZmF1bHQgdGhlIGdvQmFja1JvdXRlIGlzIGEgcm91dGVyTGluay4gQnV0IGlmIGEgaHJlZiBzaG91bGQgYmUgdXNlZCAoZm9yIGFic29sdXRlIGJyb3dzZXIgcm91dGluZykgdGhlbiBpc0Fic29sdXRlVXJsIGNhbiBiZSBzZXQgdG8gdHJ1ZS5cbiAgICovXG4gIGFkZEJhY2tBY3Rpb24oZ29CYWNrUm91dGU6IHN0cmluZywgaXNBYnNvbHV0ZVVybCA9IGZhbHNlKTogdm9pZCB7XG4gICAgdGhpcy5iYWNrQWN0aW9uID0ge1xuICAgICAgbWF0SWNvbjogJ2tleWJvYXJkX2JhY2tzcGFjZScsXG4gICAgICBpMThuQWN0aW9uS2V5OiAnJyxcbiAgICB9O1xuICAgIGlmICghaXNBYnNvbHV0ZVVybCkge1xuICAgICAgdGhpcy5iYWNrQWN0aW9uLnJvdXRlckxpbmsgPSBnb0JhY2tSb3V0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5iYWNrQWN0aW9uLmhyZWYgPSBnb0JhY2tSb3V0ZTtcbiAgICB9XG4gIH1cblxuICBhZGRTaW1wbGVCYWNrQnV0dG9uKG92ZXJyaWRlSWZQcmVzZW50ID0gZmFsc2UpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5nZXRCYWNrQWN0aW9uKCkgJiYgIW92ZXJyaWRlSWZQcmVzZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5iYWNrQWN0aW9uID0ge1xuICAgICAgbWF0SWNvbjogJ2tleWJvYXJkX2JhY2tzcGFjZScsXG4gICAgICBpMThuQWN0aW9uS2V5OiAnJyxcbiAgICAgIGFjdGlvbigpOiB2b2lkIHtcbiAgICAgICAgd2luZG93Lmhpc3RvcnkuYmFjaygpO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgY2xlYXJNYWluQWN0aW9ucygpOiB2b2lkIHtcbiAgICB0aGlzLm1haW5BY3Rpb25zID0gW107XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
3
|
-
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
4
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
5
|
-
import { NgIf } from '@angular/common';
|
|
6
|
-
import { RouterLink } from '@angular/router';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/material/button";
|
|
9
|
-
import * as i2 from "@angular/material/tooltip";
|
|
10
|
-
import * as i3 from "@angular/material/icon";
|
|
11
|
-
export class MaterialActionButtonComponent {
|
|
12
|
-
constructor() {
|
|
13
|
-
this.icon = 'add';
|
|
14
|
-
// Sets the lower padding higher providing some bottom space for a fixed paginator
|
|
15
|
-
this.liftHigher = true;
|
|
16
|
-
this.liftHigher2 = false;
|
|
17
|
-
}
|
|
18
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MaterialActionButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
19
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: MaterialActionButtonComponent, isStandalone: true, selector: "mad-material-action-button", inputs: { actionName: "actionName", id: "id", icon: "icon", routerLink: "routerLink", liftHigher: "liftHigher", liftHigher2: "liftHigher2" }, ngImport: i0, template: "<div class=\"material-action-button {{ liftHigher ? 'lift-higher' : '' }} {{ liftHigher2 ? 'lift-higher-2' : '' }}\">\n <a [routerLink]=\"routerLink\">\n <button [id]=\"id\" mat-fab [matTooltipPosition]=\"'left'\" [matTooltip]=\"actionName\" color=\"primary\" *ngIf=\"!liftHigher2\">\n <mat-icon>{{ icon }}</mat-icon>\n </button>\n <button [id]=\"id\" mat-mini-fab [matTooltipPosition]=\"'left'\" [matTooltip]=\"actionName\" color=\"accent\" *ngIf=\"liftHigher2\">\n <mat-icon>{{ icon }}</mat-icon>\n </button>\n </a>\n</div>\n", styles: [".material-action-button{position:fixed;bottom:20px;right:20px;z-index:100;display:flex;flex-direction:column-reverse;align-items:center}.lift-higher{bottom:61px}.lift-higher-2{right:28px;bottom:121px}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatMiniFabButton, selector: "button[mat-mini-fab]", exportAs: ["matButton"] }, { kind: "component", type: i1.MatFabButton, selector: "button[mat-fab]", inputs: ["extended"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
20
|
-
}
|
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MaterialActionButtonComponent, decorators: [{
|
|
22
|
-
type: Component,
|
|
23
|
-
args: [{ selector: 'mad-material-action-button', standalone: true, imports: [RouterLink, NgIf, MatButtonModule, MatTooltipModule, MatIconModule], template: "<div class=\"material-action-button {{ liftHigher ? 'lift-higher' : '' }} {{ liftHigher2 ? 'lift-higher-2' : '' }}\">\n <a [routerLink]=\"routerLink\">\n <button [id]=\"id\" mat-fab [matTooltipPosition]=\"'left'\" [matTooltip]=\"actionName\" color=\"primary\" *ngIf=\"!liftHigher2\">\n <mat-icon>{{ icon }}</mat-icon>\n </button>\n <button [id]=\"id\" mat-mini-fab [matTooltipPosition]=\"'left'\" [matTooltip]=\"actionName\" color=\"accent\" *ngIf=\"liftHigher2\">\n <mat-icon>{{ icon }}</mat-icon>\n </button>\n </a>\n</div>\n", styles: [".material-action-button{position:fixed;bottom:20px;right:20px;z-index:100;display:flex;flex-direction:column-reverse;align-items:center}.lift-higher{bottom:61px}.lift-higher-2{right:28px;bottom:121px}\n"] }]
|
|
24
|
-
}], propDecorators: { actionName: [{
|
|
25
|
-
type: Input
|
|
26
|
-
}], id: [{
|
|
27
|
-
type: Input
|
|
28
|
-
}], icon: [{
|
|
29
|
-
type: Input
|
|
30
|
-
}], routerLink: [{
|
|
31
|
-
type: Input
|
|
32
|
-
}], liftHigher: [{
|
|
33
|
-
type: Input
|
|
34
|
-
}], liftHigher2: [{
|
|
35
|
-
type: Input
|
|
36
|
-
}] } });
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwtYWN0aW9uLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC1hZGRvbnMvc3JjL2xpYi9tYXRlcmlhbC1hY3Rpb24tYnV0dG9uL21hdGVyaWFsLWFjdGlvbi1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWF0ZXJpYWwtYWRkb25zL3NyYy9saWIvbWF0ZXJpYWwtYWN0aW9uLWJ1dHRvbi9tYXRlcmlhbC1hY3Rpb24tYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7QUFTN0MsTUFBTSxPQUFPLDZCQUE2QjtJQVAxQztRQWVFLFNBQUksR0FBRyxLQUFLLENBQUM7UUFLYixrRkFBa0Y7UUFFbEYsZUFBVSxHQUFHLElBQUksQ0FBQztRQUdsQixnQkFBVyxHQUFHLEtBQUssQ0FBQztLQUNyQjs4R0FuQlksNkJBQTZCO2tHQUE3Qiw2QkFBNkIsb09DZDFDLHlpQkFVQSxvUURFWSxVQUFVLG9PQUFFLElBQUksNEZBQUUsZUFBZSxxUUFBRSxnQkFBZ0IsNFRBQUUsYUFBYTs7MkZBRWpFLDZCQUE2QjtrQkFQekMsU0FBUzsrQkFDRSw0QkFBNEIsY0FHMUIsSUFBSSxXQUNQLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxDQUFDOzhCQUk3RSxVQUFVO3NCQURULEtBQUs7Z0JBSU4sRUFBRTtzQkFERCxLQUFLO2dCQUlOLElBQUk7c0JBREgsS0FBSztnQkFJTixVQUFVO3NCQURULEtBQUs7Z0JBS04sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLFdBQVc7c0JBRFYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYWQtbWF0ZXJpYWwtYWN0aW9uLWJ1dHRvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXRlcmlhbC1hY3Rpb24tYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWF0ZXJpYWwtYWN0aW9uLWJ1dHRvbi5jb21wb25lbnQuY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtSb3V0ZXJMaW5rLCBOZ0lmLCBNYXRCdXR0b25Nb2R1bGUsIE1hdFRvb2x0aXBNb2R1bGUsIE1hdEljb25Nb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBNYXRlcmlhbEFjdGlvbkJ1dHRvbkNvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIGFjdGlvbk5hbWU6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBpZDogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIGljb24gPSAnYWRkJztcblxuICBASW5wdXQoKVxuICByb3V0ZXJMaW5rOiBzdHJpbmc7XG5cbiAgLy8gU2V0cyB0aGUgbG93ZXIgcGFkZGluZyBoaWdoZXIgcHJvdmlkaW5nIHNvbWUgYm90dG9tIHNwYWNlIGZvciBhIGZpeGVkIHBhZ2luYXRvclxuICBASW5wdXQoKVxuICBsaWZ0SGlnaGVyID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBsaWZ0SGlnaGVyMiA9IGZhbHNlO1xufVxuIiwiPGRpdiBjbGFzcz1cIm1hdGVyaWFsLWFjdGlvbi1idXR0b24ge3sgbGlmdEhpZ2hlciA/ICdsaWZ0LWhpZ2hlcicgOiAnJyB9fSB7eyBsaWZ0SGlnaGVyMiA/ICdsaWZ0LWhpZ2hlci0yJyA6ICcnIH19XCI+XG4gIDxhIFtyb3V0ZXJMaW5rXT1cInJvdXRlckxpbmtcIj5cbiAgICA8YnV0dG9uIFtpZF09XCJpZFwiIG1hdC1mYWIgW21hdFRvb2x0aXBQb3NpdGlvbl09XCInbGVmdCdcIiBbbWF0VG9vbHRpcF09XCJhY3Rpb25OYW1lXCIgY29sb3I9XCJwcmltYXJ5XCIgKm5nSWY9XCIhbGlmdEhpZ2hlcjJcIj5cbiAgICAgIDxtYXQtaWNvbj57eyBpY29uIH19PC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIFtpZF09XCJpZFwiIG1hdC1taW5pLWZhYiBbbWF0VG9vbHRpcFBvc2l0aW9uXT1cIidsZWZ0J1wiIFttYXRUb29sdGlwXT1cImFjdGlvbk5hbWVcIiBjb2xvcj1cImFjY2VudFwiICpuZ0lmPVwibGlmdEhpZ2hlcjJcIj5cbiAgICAgIDxtYXQtaWNvbj57eyBpY29uIH19PC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9hPlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { MaterialActionButtonComponent } from './material-action-button.component';
|
|
3
|
-
import { CommonModule } from '@angular/common';
|
|
4
|
-
import { RouterModule } from '@angular/router';
|
|
5
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
6
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
7
|
-
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
export class MaterialActionButtonModule {
|
|
10
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MaterialActionButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
11
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.2", ngImport: i0, type: MaterialActionButtonModule, imports: [CommonModule, RouterModule, MatButtonModule, MatIconModule, MatTooltipModule, MaterialActionButtonComponent], exports: [MaterialActionButtonComponent] }); }
|
|
12
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MaterialActionButtonModule, imports: [CommonModule, RouterModule, MatButtonModule, MatIconModule, MatTooltipModule, MaterialActionButtonComponent] }); }
|
|
13
|
-
}
|
|
14
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MaterialActionButtonModule, decorators: [{
|
|
15
|
-
type: NgModule,
|
|
16
|
-
args: [{
|
|
17
|
-
imports: [CommonModule, RouterModule, MatButtonModule, MatIconModule, MatTooltipModule, MaterialActionButtonComponent],
|
|
18
|
-
exports: [MaterialActionButtonComponent],
|
|
19
|
-
}]
|
|
20
|
-
}] });
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwtYWN0aW9uLWJ1dHRvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC1hZGRvbnMvc3JjL2xpYi9tYXRlcmlhbC1hY3Rpb24tYnV0dG9uL21hdGVyaWFsLWFjdGlvbi1idXR0b24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQU03RCxNQUFNLE9BQU8sMEJBQTBCOzhHQUExQiwwQkFBMEI7K0dBQTFCLDBCQUEwQixZQUgzQixZQUFZLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsNkJBQTZCLGFBQzNHLDZCQUE2QjsrR0FFNUIsMEJBQTBCLFlBSDNCLFlBQVksRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSw2QkFBNkI7OzJGQUcxRywwQkFBMEI7a0JBSnRDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLDZCQUE2QixDQUFDO29CQUN0SCxPQUFPLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQztpQkFDekMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0ZXJpYWxBY3Rpb25CdXR0b25Db21wb25lbnQgfSBmcm9tICcuL21hdGVyaWFsLWFjdGlvbi1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUm91dGVyTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIE1hdEljb25Nb2R1bGUsIE1hdFRvb2x0aXBNb2R1bGUsIE1hdGVyaWFsQWN0aW9uQnV0dG9uQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW01hdGVyaWFsQWN0aW9uQnV0dG9uQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgTWF0ZXJpYWxBY3Rpb25CdXR0b25Nb2R1bGUge31cbiJdfQ==
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { ToolbarModule } from './layout/toolbar/toolbar.module';
|
|
3
|
-
import { ReadOnlyFormFieldModule } from './readonly/readonly-form-field.module';
|
|
4
|
-
import { MaterialActionButtonModule } from './material-action-button/material-action-button.module';
|
|
5
|
-
import { NumericFieldModule } from './numeric-field/numeric-field.module';
|
|
6
|
-
import { CardModule } from './card/card.module';
|
|
7
|
-
import { QuickListModule } from './quick-list/quick-list.module';
|
|
8
|
-
import { ButtonModule } from './button/button.module';
|
|
9
|
-
import { ThrottleClickModule } from './throttle-click/throttle-click.module';
|
|
10
|
-
import { SidebarModule } from './layout/sidebar/sidebar.module';
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
export class MaterialAddonsModule {
|
|
13
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MaterialAddonsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
14
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.2", ngImport: i0, type: MaterialAddonsModule, exports: [ReadOnlyFormFieldModule,
|
|
15
|
-
ButtonModule,
|
|
16
|
-
ToolbarModule,
|
|
17
|
-
MaterialActionButtonModule,
|
|
18
|
-
NumericFieldModule,
|
|
19
|
-
CardModule,
|
|
20
|
-
QuickListModule,
|
|
21
|
-
ThrottleClickModule,
|
|
22
|
-
SidebarModule] }); }
|
|
23
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MaterialAddonsModule, imports: [ReadOnlyFormFieldModule,
|
|
24
|
-
ButtonModule,
|
|
25
|
-
ToolbarModule,
|
|
26
|
-
MaterialActionButtonModule,
|
|
27
|
-
NumericFieldModule,
|
|
28
|
-
CardModule,
|
|
29
|
-
QuickListModule,
|
|
30
|
-
ThrottleClickModule,
|
|
31
|
-
SidebarModule] }); }
|
|
32
|
-
}
|
|
33
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: MaterialAddonsModule, decorators: [{
|
|
34
|
-
type: NgModule,
|
|
35
|
-
args: [{
|
|
36
|
-
exports: [
|
|
37
|
-
ReadOnlyFormFieldModule,
|
|
38
|
-
ButtonModule,
|
|
39
|
-
ToolbarModule,
|
|
40
|
-
MaterialActionButtonModule,
|
|
41
|
-
NumericFieldModule,
|
|
42
|
-
CardModule,
|
|
43
|
-
QuickListModule,
|
|
44
|
-
ThrottleClickModule,
|
|
45
|
-
SidebarModule,
|
|
46
|
-
],
|
|
47
|
-
}]
|
|
48
|
-
}] });
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwtYWRkb25zLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21hdGVyaWFsLWFkZG9ucy9zcmMvbGliL21hdGVyaWFsLWFkZG9ucy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDaEYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDcEcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDMUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOztBQWVoRSxNQUFNLE9BQU8sb0JBQW9COzhHQUFwQixvQkFBb0I7K0dBQXBCLG9CQUFvQixZQVg3Qix1QkFBdUI7WUFDdkIsWUFBWTtZQUNaLGFBQWE7WUFDYiwwQkFBMEI7WUFDMUIsa0JBQWtCO1lBQ2xCLFVBQVU7WUFDVixlQUFlO1lBQ2YsbUJBQW1CO1lBQ25CLGFBQWE7K0dBR0osb0JBQW9CLFlBWDdCLHVCQUF1QjtZQUN2QixZQUFZO1lBQ1osYUFBYTtZQUNiLDBCQUEwQjtZQUMxQixrQkFBa0I7WUFDbEIsVUFBVTtZQUNWLGVBQWU7WUFDZixtQkFBbUI7WUFDbkIsYUFBYTs7MkZBR0osb0JBQW9CO2tCQWJoQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCx1QkFBdUI7d0JBQ3ZCLFlBQVk7d0JBQ1osYUFBYTt3QkFDYiwwQkFBMEI7d0JBQzFCLGtCQUFrQjt3QkFDbEIsVUFBVTt3QkFDVixlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIsYUFBYTtxQkFDZDtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUb29sYmFyTW9kdWxlIH0gZnJvbSAnLi9sYXlvdXQvdG9vbGJhci90b29sYmFyLm1vZHVsZSc7XG5pbXBvcnQgeyBSZWFkT25seUZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJy4vcmVhZG9ubHkvcmVhZG9ubHktZm9ybS1maWVsZC5tb2R1bGUnO1xuaW1wb3J0IHsgTWF0ZXJpYWxBY3Rpb25CdXR0b25Nb2R1bGUgfSBmcm9tICcuL21hdGVyaWFsLWFjdGlvbi1idXR0b24vbWF0ZXJpYWwtYWN0aW9uLWJ1dHRvbi5tb2R1bGUnO1xuaW1wb3J0IHsgTnVtZXJpY0ZpZWxkTW9kdWxlIH0gZnJvbSAnLi9udW1lcmljLWZpZWxkL251bWVyaWMtZmllbGQubW9kdWxlJztcbmltcG9ydCB7IENhcmRNb2R1bGUgfSBmcm9tICcuL2NhcmQvY2FyZC5tb2R1bGUnO1xuaW1wb3J0IHsgUXVpY2tMaXN0TW9kdWxlIH0gZnJvbSAnLi9xdWljay1saXN0L3F1aWNrLWxpc3QubW9kdWxlJztcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJy4vYnV0dG9uL2J1dHRvbi5tb2R1bGUnO1xuaW1wb3J0IHsgVGhyb3R0bGVDbGlja01vZHVsZSB9IGZyb20gJy4vdGhyb3R0bGUtY2xpY2svdGhyb3R0bGUtY2xpY2subW9kdWxlJztcbmltcG9ydCB7IFNpZGViYXJNb2R1bGUgfSBmcm9tICcuL2xheW91dC9zaWRlYmFyL3NpZGViYXIubW9kdWxlJztcblxuQE5nTW9kdWxlKHtcbiAgZXhwb3J0czogW1xuICAgIFJlYWRPbmx5Rm9ybUZpZWxkTW9kdWxlLFxuICAgIEJ1dHRvbk1vZHVsZSxcbiAgICBUb29sYmFyTW9kdWxlLFxuICAgIE1hdGVyaWFsQWN0aW9uQnV0dG9uTW9kdWxlLFxuICAgIE51bWVyaWNGaWVsZE1vZHVsZSxcbiAgICBDYXJkTW9kdWxlLFxuICAgIFF1aWNrTGlzdE1vZHVsZSxcbiAgICBUaHJvdHRsZUNsaWNrTW9kdWxlLFxuICAgIFNpZGViYXJNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1hdGVyaWFsQWRkb25zTW9kdWxlIHt9XG4iXX0=
|
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
import { Inject, LOCALE_ID, Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class NumberFormatService {
|
|
4
|
-
static { this.NEGATIVE = '-'; }
|
|
5
|
-
static { this.NUMBERS = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; }
|
|
6
|
-
static { this.DEFAULT_FINAL_FORMATTING = true; }
|
|
7
|
-
static { this.DEFAULT_DECIMAL_PLACES = 2; }
|
|
8
|
-
static { this.DEFAULT_AUTOFILL_DECIMALS = false; }
|
|
9
|
-
static { this.DEFAULT_REMOVE_LEADING_ZEROS = false; }
|
|
10
|
-
constructor(locale) {
|
|
11
|
-
this.allowedKeys = [];
|
|
12
|
-
// try to get the current formatting
|
|
13
|
-
const localeDecimalSeparator = (1.1).toLocaleString(locale).charAt(1);
|
|
14
|
-
this.decimalSeparator = localeDecimalSeparator === ',' ? ',' : '.';
|
|
15
|
-
this.groupingSeparator = localeDecimalSeparator === ',' ? '.' : ',';
|
|
16
|
-
this.allowedKeys = [...NumberFormatService.NUMBERS, NumberFormatService.NEGATIVE, this.decimalSeparator];
|
|
17
|
-
}
|
|
18
|
-
static valueIsSet(value) {
|
|
19
|
-
return typeof value !== 'undefined' && value !== null && (typeof value !== 'string' || value.length !== 0);
|
|
20
|
-
}
|
|
21
|
-
format(value, options) {
|
|
22
|
-
return NumberFormatService.valueIsSet(value)
|
|
23
|
-
? this.formatNumber(value.toString().replace(new RegExp('[.]', 'g'), this.decimalSeparator), options)
|
|
24
|
-
: '';
|
|
25
|
-
}
|
|
26
|
-
formatNumber(value, options) {
|
|
27
|
-
const autofillDecimals = this.valueOrDefault(options?.autofillDecimals, NumberFormatService.DEFAULT_AUTOFILL_DECIMALS);
|
|
28
|
-
const decimalPlaces = this.valueOrDefault(options?.decimalPlaces, NumberFormatService.DEFAULT_DECIMAL_PLACES);
|
|
29
|
-
const finalFormatting = this.valueOrDefault(options?.finalFormatting, NumberFormatService.DEFAULT_FINAL_FORMATTING);
|
|
30
|
-
let result = this.strip(value, { decimalPlaces, removeLeadingZeros: finalFormatting });
|
|
31
|
-
/* add grouping separator */
|
|
32
|
-
const decimalIndex = result.indexOf(this.decimalSeparator);
|
|
33
|
-
const isNegative = result.startsWith(NumberFormatService.NEGATIVE);
|
|
34
|
-
let i = decimalIndex > -1 ? decimalIndex : result.length;
|
|
35
|
-
while (i > (isNegative ? 4 : 3)) {
|
|
36
|
-
i -= 3;
|
|
37
|
-
result = result.substring(0, i) + this.groupingSeparator + result.substring(i, result.length);
|
|
38
|
-
}
|
|
39
|
-
if (finalFormatting) {
|
|
40
|
-
if (decimalPlaces > 0 && !!result) {
|
|
41
|
-
/* autofill decimal places */
|
|
42
|
-
let actualDecimalIndex = result.indexOf(this.decimalSeparator);
|
|
43
|
-
if (autofillDecimals) {
|
|
44
|
-
if (actualDecimalIndex === -1) {
|
|
45
|
-
actualDecimalIndex = result.length;
|
|
46
|
-
result += this.decimalSeparator;
|
|
47
|
-
}
|
|
48
|
-
result = this.addMissingLeadingZero(result, actualDecimalIndex);
|
|
49
|
-
actualDecimalIndex = result.indexOf(this.decimalSeparator);
|
|
50
|
-
const actualDecimalPlaces = result.length - actualDecimalIndex - 1;
|
|
51
|
-
for (let j = 0; j < decimalPlaces - actualDecimalPlaces; j++) {
|
|
52
|
-
result += '0';
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
result = this.addMissingLeadingZero(result, actualDecimalIndex);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
return result;
|
|
61
|
-
}
|
|
62
|
-
strip(value, options) {
|
|
63
|
-
const decimalPlaces = this.valueOrDefault(options?.decimalPlaces, NumberFormatService.DEFAULT_DECIMAL_PLACES);
|
|
64
|
-
const removeLeadingZeros = this.valueOrDefault(options?.removeLeadingZeros, NumberFormatService.DEFAULT_REMOVE_LEADING_ZEROS);
|
|
65
|
-
let result = '';
|
|
66
|
-
let indexDecimalSep = -1;
|
|
67
|
-
let j = -1;
|
|
68
|
-
let ignoredChars = 0;
|
|
69
|
-
for (const char of value) {
|
|
70
|
-
j++;
|
|
71
|
-
if (this.allowedKeys.includes(char)) {
|
|
72
|
-
if (char === this.decimalSeparator) {
|
|
73
|
-
if (decimalPlaces === 0) {
|
|
74
|
-
/* dismiss content after a decimal separator, when no places allowed */
|
|
75
|
-
break;
|
|
76
|
-
}
|
|
77
|
-
else if (indexDecimalSep > -1) {
|
|
78
|
-
/* ignore subsequent decimal separators */
|
|
79
|
-
continue;
|
|
80
|
-
}
|
|
81
|
-
indexDecimalSep = j;
|
|
82
|
-
}
|
|
83
|
-
if (char === '0' && removeLeadingZeros) {
|
|
84
|
-
/* remove leading zero only if it's not the only zero in the 'value' string */
|
|
85
|
-
if ((result.length === 0 && j + 1 !== value.length) || result === NumberFormatService.NEGATIVE) {
|
|
86
|
-
ignoredChars++;
|
|
87
|
-
continue;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
if (char === NumberFormatService.NEGATIVE && j > 0) {
|
|
91
|
-
/* dismiss content after a negative sign not on first position */
|
|
92
|
-
break;
|
|
93
|
-
}
|
|
94
|
-
if (indexDecimalSep > -1 && result.length + ignoredChars > indexDecimalSep + decimalPlaces) {
|
|
95
|
-
/* dismiss content after maximum decimal places reached */
|
|
96
|
-
break;
|
|
97
|
-
}
|
|
98
|
-
result += char;
|
|
99
|
-
}
|
|
100
|
-
else if (char === this.groupingSeparator) {
|
|
101
|
-
if (indexDecimalSep === -1) {
|
|
102
|
-
ignoredChars++;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
else {
|
|
106
|
-
/* dismiss content after a invalid character */
|
|
107
|
-
break;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
return result;
|
|
111
|
-
}
|
|
112
|
-
addMissingLeadingZero(result, actualDecimalIndex) {
|
|
113
|
-
const isNegative = result.startsWith(NumberFormatService.NEGATIVE);
|
|
114
|
-
/* autoadd a zero before decimal separator, when it's missing */
|
|
115
|
-
if (actualDecimalIndex === 0) {
|
|
116
|
-
result = '0' + result;
|
|
117
|
-
}
|
|
118
|
-
/* autoadd a zero before decimal separator, when it's missing, for negative values */
|
|
119
|
-
if (actualDecimalIndex === 1 && isNegative) {
|
|
120
|
-
result = result[0] + '0' + result.substring(1, result.length);
|
|
121
|
-
}
|
|
122
|
-
return result;
|
|
123
|
-
}
|
|
124
|
-
valueOrDefault(value, defaultValue) {
|
|
125
|
-
return NumberFormatService.valueIsSet(value) ? value : defaultValue;
|
|
126
|
-
}
|
|
127
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NumberFormatService, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
128
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NumberFormatService, providedIn: 'any' }); }
|
|
129
|
-
}
|
|
130
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NumberFormatService, decorators: [{
|
|
131
|
-
type: Injectable,
|
|
132
|
-
args: [{
|
|
133
|
-
providedIn: 'any',
|
|
134
|
-
}]
|
|
135
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
136
|
-
type: Inject,
|
|
137
|
-
args: [LOCALE_ID]
|
|
138
|
-
}] }] });
|
|
139
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWZvcm1hdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWF0ZXJpYWwtYWRkb25zL3NyYy9saWIvbnVtZXJpYy1maWVsZC9udW1iZXItZm9ybWF0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQW1COUQsTUFBTSxPQUFPLG1CQUFtQjthQUNkLGFBQVEsR0FBRyxHQUFHLEFBQU4sQ0FBTzthQUNmLFlBQU8sR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxBQUFyRCxDQUFzRDthQUM3RCw2QkFBd0IsR0FBRyxJQUFJLEFBQVAsQ0FBUTthQUNoQywyQkFBc0IsR0FBRyxDQUFDLEFBQUosQ0FBSzthQUMzQiw4QkFBeUIsR0FBRyxLQUFLLEFBQVIsQ0FBUzthQUNsQyxpQ0FBNEIsR0FBRyxLQUFLLEFBQVIsQ0FBUztJQU9yRCxZQUErQixNQUFjO1FBRjdDLGdCQUFXLEdBQWEsRUFBRSxDQUFDO1FBR3pCLG9DQUFvQztRQUNwQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsc0JBQXNCLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUNuRSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsc0JBQXNCLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUVwRSxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsR0FBRyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzNHLENBQUM7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQVU7UUFDMUIsT0FBTyxPQUFPLEtBQUssS0FBSyxXQUFXLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzdHLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBYSxFQUFFLE9BQWdDO1FBQ3BELE9BQU8sbUJBQW1CLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztZQUMxQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxPQUFPLENBQUM7WUFDckcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNULENBQUM7SUFFRCxZQUFZLENBQUMsS0FBYSxFQUFFLE9BQWdDO1FBQzFELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUN2SCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsbUJBQW1CLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUM5RyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsbUJBQW1CLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUVwSCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO1FBRXZGLDRCQUE0QjtRQUM1QixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzNELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLEdBQUcsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDekQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNoQyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ1AsTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEcsQ0FBQztRQUVELElBQUksZUFBZSxFQUFFLENBQUM7WUFDcEIsSUFBSSxhQUFhLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDbEMsNkJBQTZCO2dCQUM3QixJQUFJLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBQy9ELElBQUksZ0JBQWdCLEVBQUUsQ0FBQztvQkFDckIsSUFBSSxrQkFBa0IsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO3dCQUM5QixrQkFBa0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO3dCQUNuQyxNQUFNLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDO29CQUNsQyxDQUFDO29CQUVELE1BQU0sR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxFQUFFLGtCQUFrQixDQUFDLENBQUM7b0JBQ2hFLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7b0JBRTNELE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxrQkFBa0IsR0FBRyxDQUFDLENBQUM7b0JBQ25FLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxhQUFhLEdBQUcsbUJBQW1CLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQzt3QkFDN0QsTUFBTSxJQUFJLEdBQUcsQ0FBQztvQkFDaEIsQ0FBQztnQkFDSCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sTUFBTSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztnQkFDbEUsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFhLEVBQUUsT0FBc0I7UUFDekMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDOUcsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBRTlILElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNoQixJQUFJLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNYLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztRQUNyQixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLENBQUMsRUFBRSxDQUFDO1lBQ0osSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNwQyxJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztvQkFDbkMsSUFBSSxhQUFhLEtBQUssQ0FBQyxFQUFFLENBQUM7d0JBQ3hCLHVFQUF1RTt3QkFDdkUsTUFBTTtvQkFDUixDQUFDO3lCQUFNLElBQUksZUFBZSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7d0JBQ2hDLDBDQUEwQzt3QkFDMUMsU0FBUztvQkFDWCxDQUFDO29CQUNELGVBQWUsR0FBRyxDQUFDLENBQUM7Z0JBQ3RCLENBQUM7Z0JBQ0QsSUFBSSxJQUFJLEtBQUssR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7b0JBQ3ZDLDhFQUE4RTtvQkFDOUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sS0FBSyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQzt3QkFDL0YsWUFBWSxFQUFFLENBQUM7d0JBQ2YsU0FBUztvQkFDWCxDQUFDO2dCQUNILENBQUM7Z0JBQ0QsSUFBSSxJQUFJLEtBQUssbUJBQW1CLENBQUMsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDbkQsaUVBQWlFO29CQUNqRSxNQUFNO2dCQUNSLENBQUM7Z0JBQ0QsSUFBSSxlQUFlLEdBQUcsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxZQUFZLEdBQUcsZUFBZSxHQUFHLGFBQWEsRUFBRSxDQUFDO29CQUMzRiwwREFBMEQ7b0JBQzFELE1BQU07Z0JBQ1IsQ0FBQztnQkFDRCxNQUFNLElBQUksSUFBSSxDQUFDO1lBQ2pCLENBQUM7aUJBQU0sSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQzNDLElBQUksZUFBZSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQzNCLFlBQVksRUFBRSxDQUFDO2dCQUNqQixDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLCtDQUErQztnQkFDL0MsTUFBTTtZQUNSLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVPLHFCQUFxQixDQUFDLE1BQWMsRUFBRSxrQkFBMEI7UUFDdEUsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuRSxnRUFBZ0U7UUFDaEUsSUFBSSxrQkFBa0IsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM3QixNQUFNLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQztRQUN4QixDQUFDO1FBQ0QscUZBQXFGO1FBQ3JGLElBQUksa0JBQWtCLEtBQUssQ0FBQyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQzNDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVPLGNBQWMsQ0FBQyxLQUFVLEVBQUUsWUFBaUI7UUFDbEQsT0FBTyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO0lBQ3RFLENBQUM7OEdBeklVLG1CQUFtQixrQkFhVixTQUFTO2tIQWJsQixtQkFBbUIsY0FGbEIsS0FBSzs7MkZBRU4sbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxLQUFLO2lCQUNsQjs7MEJBY2MsTUFBTTsyQkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBMT0NBTEVfSUQsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEZvcm1hdE9wdGlvbnMge1xuICBkZWNpbWFsUGxhY2VzPzogbnVtYmVyO1xuXG4gIGZpbmFsRm9ybWF0dGluZz86IGJvb2xlYW47XG5cbiAgYXV0b2ZpbGxEZWNpbWFscz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBTdHJpcE9wdGlvbnMge1xuICBkZWNpbWFsUGxhY2VzPzogbnVtYmVyO1xuXG4gIHJlbW92ZUxlYWRpbmdaZXJvcz86IGJvb2xlYW47XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ2FueScsXG59KVxuZXhwb3J0IGNsYXNzIE51bWJlckZvcm1hdFNlcnZpY2Uge1xuICBzdGF0aWMgcmVhZG9ubHkgTkVHQVRJVkUgPSAnLSc7XG4gIHN0YXRpYyByZWFkb25seSBOVU1CRVJTID0gWycwJywgJzEnLCAnMicsICczJywgJzQnLCAnNScsICc2JywgJzcnLCAnOCcsICc5J107XG4gIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0ZJTkFMX0ZPUk1BVFRJTkcgPSB0cnVlO1xuICBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9ERUNJTUFMX1BMQUNFUyA9IDI7XG4gIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0FVVE9GSUxMX0RFQ0lNQUxTID0gZmFsc2U7XG4gIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1JFTU9WRV9MRUFESU5HX1pFUk9TID0gZmFsc2U7XG5cbiAgZGVjaW1hbFNlcGFyYXRvcjogJywnIHwgJy4nO1xuICBncm91cGluZ1NlcGFyYXRvcjogJywnIHwgJy4nO1xuXG4gIGFsbG93ZWRLZXlzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoTE9DQUxFX0lEKSBsb2NhbGU6IHN0cmluZykge1xuICAgIC8vIHRyeSB0byBnZXQgdGhlIGN1cnJlbnQgZm9ybWF0dGluZ1xuICAgIGNvbnN0IGxvY2FsZURlY2ltYWxTZXBhcmF0b3IgPSAoMS4xKS50b0xvY2FsZVN0cmluZyhsb2NhbGUpLmNoYXJBdCgxKTtcbiAgICB0aGlzLmRlY2ltYWxTZXBhcmF0b3IgPSBsb2NhbGVEZWNpbWFsU2VwYXJhdG9yID09PSAnLCcgPyAnLCcgOiAnLic7XG4gICAgdGhpcy5ncm91cGluZ1NlcGFyYXRvciA9IGxvY2FsZURlY2ltYWxTZXBhcmF0b3IgPT09ICcsJyA/ICcuJyA6ICcsJztcblxuICAgIHRoaXMuYWxsb3dlZEtleXMgPSBbLi4uTnVtYmVyRm9ybWF0U2VydmljZS5OVU1CRVJTLCBOdW1iZXJGb3JtYXRTZXJ2aWNlLk5FR0FUSVZFLCB0aGlzLmRlY2ltYWxTZXBhcmF0b3JdO1xuICB9XG5cbiAgc3RhdGljIHZhbHVlSXNTZXQodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlICE9PSBudWxsICYmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnIHx8IHZhbHVlLmxlbmd0aCAhPT0gMCk7XG4gIH1cblxuICBmb3JtYXQodmFsdWU6IG51bWJlciwgb3B0aW9ucz86IFBhcnRpYWw8Rm9ybWF0T3B0aW9ucz4pOiBzdHJpbmcge1xuICAgIHJldHVybiBOdW1iZXJGb3JtYXRTZXJ2aWNlLnZhbHVlSXNTZXQodmFsdWUpXG4gICAgICA/IHRoaXMuZm9ybWF0TnVtYmVyKHZhbHVlLnRvU3RyaW5nKCkucmVwbGFjZShuZXcgUmVnRXhwKCdbLl0nLCAnZycpLCB0aGlzLmRlY2ltYWxTZXBhcmF0b3IpLCBvcHRpb25zKVxuICAgICAgOiAnJztcbiAgfVxuXG4gIGZvcm1hdE51bWJlcih2YWx1ZTogc3RyaW5nLCBvcHRpb25zPzogUGFydGlhbDxGb3JtYXRPcHRpb25zPik6IHN0cmluZyB7XG4gICAgY29uc3QgYXV0b2ZpbGxEZWNpbWFscyA9IHRoaXMudmFsdWVPckRlZmF1bHQob3B0aW9ucz8uYXV0b2ZpbGxEZWNpbWFscywgTnVtYmVyRm9ybWF0U2VydmljZS5ERUZBVUxUX0FVVE9GSUxMX0RFQ0lNQUxTKTtcbiAgICBjb25zdCBkZWNpbWFsUGxhY2VzID0gdGhpcy52YWx1ZU9yRGVmYXVsdChvcHRpb25zPy5kZWNpbWFsUGxhY2VzLCBOdW1iZXJGb3JtYXRTZXJ2aWNlLkRFRkFVTFRfREVDSU1BTF9QTEFDRVMpO1xuICAgIGNvbnN0IGZpbmFsRm9ybWF0dGluZyA9IHRoaXMudmFsdWVPckRlZmF1bHQob3B0aW9ucz8uZmluYWxGb3JtYXR0aW5nLCBOdW1iZXJGb3JtYXRTZXJ2aWNlLkRFRkFVTFRfRklOQUxfRk9STUFUVElORyk7XG5cbiAgICBsZXQgcmVzdWx0ID0gdGhpcy5zdHJpcCh2YWx1ZSwgeyBkZWNpbWFsUGxhY2VzLCByZW1vdmVMZWFkaW5nWmVyb3M6IGZpbmFsRm9ybWF0dGluZyB9KTtcblxuICAgIC8qIGFkZCBncm91cGluZyBzZXBhcmF0b3IgKi9cbiAgICBjb25zdCBkZWNpbWFsSW5kZXggPSByZXN1bHQuaW5kZXhPZih0aGlzLmRlY2ltYWxTZXBhcmF0b3IpO1xuICAgIGNvbnN0IGlzTmVnYXRpdmUgPSByZXN1bHQuc3RhcnRzV2l0aChOdW1iZXJGb3JtYXRTZXJ2aWNlLk5FR0FUSVZFKTtcbiAgICBsZXQgaSA9IGRlY2ltYWxJbmRleCA+IC0xID8gZGVjaW1hbEluZGV4IDogcmVzdWx0Lmxlbmd0aDtcbiAgICB3aGlsZSAoaSA+IChpc05lZ2F0aXZlID8gNCA6IDMpKSB7XG4gICAgICBpIC09IDM7XG4gICAgICByZXN1bHQgPSByZXN1bHQuc3Vic3RyaW5nKDAsIGkpICsgdGhpcy5ncm91cGluZ1NlcGFyYXRvciArIHJlc3VsdC5zdWJzdHJpbmcoaSwgcmVzdWx0Lmxlbmd0aCk7XG4gICAgfVxuXG4gICAgaWYgKGZpbmFsRm9ybWF0dGluZykge1xuICAgICAgaWYgKGRlY2ltYWxQbGFjZXMgPiAwICYmICEhcmVzdWx0KSB7XG4gICAgICAgIC8qIGF1dG9maWxsIGRlY2ltYWwgcGxhY2VzICovXG4gICAgICAgIGxldCBhY3R1YWxEZWNpbWFsSW5kZXggPSByZXN1bHQuaW5kZXhPZih0aGlzLmRlY2ltYWxTZXBhcmF0b3IpO1xuICAgICAgICBpZiAoYXV0b2ZpbGxEZWNpbWFscykge1xuICAgICAgICAgIGlmIChhY3R1YWxEZWNpbWFsSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICBhY3R1YWxEZWNpbWFsSW5kZXggPSByZXN1bHQubGVuZ3RoO1xuICAgICAgICAgICAgcmVzdWx0ICs9IHRoaXMuZGVjaW1hbFNlcGFyYXRvcjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXN1bHQgPSB0aGlzLmFkZE1pc3NpbmdMZWFkaW5nWmVybyhyZXN1bHQsIGFjdHVhbERlY2ltYWxJbmRleCk7XG4gICAgICAgICAgYWN0dWFsRGVjaW1hbEluZGV4ID0gcmVzdWx0LmluZGV4T2YodGhpcy5kZWNpbWFsU2VwYXJhdG9yKTtcblxuICAgICAgICAgIGNvbnN0IGFjdHVhbERlY2ltYWxQbGFjZXMgPSByZXN1bHQubGVuZ3RoIC0gYWN0dWFsRGVjaW1hbEluZGV4IC0gMTtcbiAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGRlY2ltYWxQbGFjZXMgLSBhY3R1YWxEZWNpbWFsUGxhY2VzOyBqKyspIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSAnMCc7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9IHRoaXMuYWRkTWlzc2luZ0xlYWRpbmdaZXJvKHJlc3VsdCwgYWN0dWFsRGVjaW1hbEluZGV4KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgc3RyaXAodmFsdWU6IHN0cmluZywgb3B0aW9ucz86IFN0cmlwT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgY29uc3QgZGVjaW1hbFBsYWNlcyA9IHRoaXMudmFsdWVPckRlZmF1bHQob3B0aW9ucz8uZGVjaW1hbFBsYWNlcywgTnVtYmVyRm9ybWF0U2VydmljZS5ERUZBVUxUX0RFQ0lNQUxfUExBQ0VTKTtcbiAgICBjb25zdCByZW1vdmVMZWFkaW5nWmVyb3MgPSB0aGlzLnZhbHVlT3JEZWZhdWx0KG9wdGlvbnM/LnJlbW92ZUxlYWRpbmdaZXJvcywgTnVtYmVyRm9ybWF0U2VydmljZS5ERUZBVUxUX1JFTU9WRV9MRUFESU5HX1pFUk9TKTtcblxuICAgIGxldCByZXN1bHQgPSAnJztcbiAgICBsZXQgaW5kZXhEZWNpbWFsU2VwID0gLTE7XG4gICAgbGV0IGogPSAtMTtcbiAgICBsZXQgaWdub3JlZENoYXJzID0gMDtcbiAgICBmb3IgKGNvbnN0IGNoYXIgb2YgdmFsdWUpIHtcbiAgICAgIGorKztcbiAgICAgIGlmICh0aGlzLmFsbG93ZWRLZXlzLmluY2x1ZGVzKGNoYXIpKSB7XG4gICAgICAgIGlmIChjaGFyID09PSB0aGlzLmRlY2ltYWxTZXBhcmF0b3IpIHtcbiAgICAgICAgICBpZiAoZGVjaW1hbFBsYWNlcyA9PT0gMCkge1xuICAgICAgICAgICAgLyogZGlzbWlzcyBjb250ZW50IGFmdGVyIGEgZGVjaW1hbCBzZXBhcmF0b3IsIHdoZW4gbm8gcGxhY2VzIGFsbG93ZWQgKi9cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaW5kZXhEZWNpbWFsU2VwID4gLTEpIHtcbiAgICAgICAgICAgIC8qIGlnbm9yZSBzdWJzZXF1ZW50IGRlY2ltYWwgc2VwYXJhdG9ycyAqL1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGluZGV4RGVjaW1hbFNlcCA9IGo7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYXIgPT09ICcwJyAmJiByZW1vdmVMZWFkaW5nWmVyb3MpIHtcbiAgICAgICAgICAvKiByZW1vdmUgbGVhZGluZyB6ZXJvIG9ubHkgaWYgaXQncyBub3QgdGhlIG9ubHkgemVybyBpbiB0aGUgJ3ZhbHVlJyBzdHJpbmcgKi9cbiAgICAgICAgICBpZiAoKHJlc3VsdC5sZW5ndGggPT09IDAgJiYgaiArIDEgIT09IHZhbHVlLmxlbmd0aCkgfHwgcmVzdWx0ID09PSBOdW1iZXJGb3JtYXRTZXJ2aWNlLk5FR0FUSVZFKSB7XG4gICAgICAgICAgICBpZ25vcmVkQ2hhcnMrKztcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhciA9PT0gTnVtYmVyRm9ybWF0U2VydmljZS5ORUdBVElWRSAmJiBqID4gMCkge1xuICAgICAgICAgIC8qIGRpc21pc3MgY29udGVudCBhZnRlciBhIG5lZ2F0aXZlIHNpZ24gbm90IG9uIGZpcnN0IHBvc2l0aW9uICovXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGluZGV4RGVjaW1hbFNlcCA+IC0xICYmIHJlc3VsdC5sZW5ndGggKyBpZ25vcmVkQ2hhcnMgPiBpbmRleERlY2ltYWxTZXAgKyBkZWNpbWFsUGxhY2VzKSB7XG4gICAgICAgICAgLyogZGlzbWlzcyBjb250ZW50IGFmdGVyIG1heGltdW0gZGVjaW1hbCBwbGFjZXMgcmVhY2hlZCAqL1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCArPSBjaGFyO1xuICAgICAgfSBlbHNlIGlmIChjaGFyID09PSB0aGlzLmdyb3VwaW5nU2VwYXJhdG9yKSB7XG4gICAgICAgIGlmIChpbmRleERlY2ltYWxTZXAgPT09IC0xKSB7XG4gICAgICAgICAgaWdub3JlZENoYXJzKys7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8qIGRpc21pc3MgY29udGVudCBhZnRlciBhIGludmFsaWQgY2hhcmFjdGVyICovXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRNaXNzaW5nTGVhZGluZ1plcm8ocmVzdWx0OiBzdHJpbmcsIGFjdHVhbERlY2ltYWxJbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBpc05lZ2F0aXZlID0gcmVzdWx0LnN0YXJ0c1dpdGgoTnVtYmVyRm9ybWF0U2VydmljZS5ORUdBVElWRSk7XG4gICAgLyogYXV0b2FkZCBhIHplcm8gYmVmb3JlIGRlY2ltYWwgc2VwYXJhdG9yLCB3aGVuIGl0J3MgbWlzc2luZyAqL1xuICAgIGlmIChhY3R1YWxEZWNpbWFsSW5kZXggPT09IDApIHtcbiAgICAgIHJlc3VsdCA9ICcwJyArIHJlc3VsdDtcbiAgICB9XG4gICAgLyogYXV0b2FkZCBhIHplcm8gYmVmb3JlIGRlY2ltYWwgc2VwYXJhdG9yLCB3aGVuIGl0J3MgbWlzc2luZywgZm9yIG5lZ2F0aXZlIHZhbHVlcyAqL1xuICAgIGlmIChhY3R1YWxEZWNpbWFsSW5kZXggPT09IDEgJiYgaXNOZWdhdGl2ZSkge1xuICAgICAgcmVzdWx0ID0gcmVzdWx0WzBdICsgJzAnICsgcmVzdWx0LnN1YnN0cmluZygxLCByZXN1bHQubGVuZ3RoKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgdmFsdWVPckRlZmF1bHQodmFsdWU6IGFueSwgZGVmYXVsdFZhbHVlOiBhbnkpOiBhbnkge1xuICAgIHJldHVybiBOdW1iZXJGb3JtYXRTZXJ2aWNlLnZhbHVlSXNTZXQodmFsdWUpID8gdmFsdWUgOiBkZWZhdWx0VmFsdWU7XG4gIH1cbn1cbiJdfQ==
|