@porscheinformatik/material-addons 10.2.3 → 10.3.0
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/bundles/porscheinformatik-material-addons.umd.js +307 -44
- package/bundles/porscheinformatik-material-addons.umd.js.map +1 -1
- package/bundles/porscheinformatik-material-addons.umd.min.js +2 -2
- package/bundles/porscheinformatik-material-addons.umd.min.js.map +1 -1
- package/esm2015/lib/data-table/data-table-action-type.js +6 -0
- package/esm2015/lib/data-table/data-table-action.js +1 -1
- package/esm2015/lib/data-table/data-table-column-header.js +1 -1
- package/esm2015/lib/data-table/data-table.component.js +210 -36
- package/esm2015/lib/data-table/data-table.module.js +22 -14
- package/esm2015/lib/flowbar/flowbar.component.js +7 -3
- package/esm2015/lib/stepper/stepper.component.js +8 -6
- package/esm2015/lib/toolbar/toolbar.component.js +2 -2
- package/fesm2015/porscheinformatik-material-addons.js +232 -41
- package/fesm2015/porscheinformatik-material-addons.js.map +1 -1
- package/lib/data-table/data-table-action-type.d.ts +5 -0
- package/lib/data-table/data-table-action.d.ts +3 -1
- package/lib/data-table/data-table-column-header.d.ts +3 -1
- package/lib/data-table/data-table.component.d.ts +45 -15
- package/lib/flowbar/flowbar.component.d.ts +1 -0
- package/lib/stepper/stepper.component.d.ts +1 -1
- package/package.json +1 -1
- package/porscheinformatik-material-addons.metadata.json +1 -1
- package/themes/common/styles.scss +3 -0
|
@@ -28,8 +28,8 @@ export class StepComponent extends CdkStep {
|
|
|
28
28
|
ngOnDestroy() {
|
|
29
29
|
this._isSelected.unsubscribe();
|
|
30
30
|
}
|
|
31
|
-
next() {
|
|
32
|
-
this.stepValidation();
|
|
31
|
+
next(markFormAsTouched = true) {
|
|
32
|
+
this.stepValidation(markFormAsTouched);
|
|
33
33
|
if (this.onNext.observers.length <= 0) {
|
|
34
34
|
this.stepper.next();
|
|
35
35
|
}
|
|
@@ -46,7 +46,7 @@ export class StepComponent extends CdkStep {
|
|
|
46
46
|
this.onHeaderClick.emit(index);
|
|
47
47
|
}
|
|
48
48
|
completeLast() {
|
|
49
|
-
this.stepValidation();
|
|
49
|
+
this.stepValidation(true);
|
|
50
50
|
this.stepClosed = true;
|
|
51
51
|
if (this.onDone.observers.length <= 0) {
|
|
52
52
|
this.stepper.next();
|
|
@@ -58,9 +58,11 @@ export class StepComponent extends CdkStep {
|
|
|
58
58
|
this.completed = true;
|
|
59
59
|
this.state = STEP_STATE.DONE;
|
|
60
60
|
}
|
|
61
|
-
stepValidation() {
|
|
61
|
+
stepValidation(markFormAsTouched) {
|
|
62
62
|
var _a, _b;
|
|
63
|
-
(
|
|
63
|
+
if (markFormAsTouched) {
|
|
64
|
+
(_a = this.stepControl) === null || _a === void 0 ? void 0 : _a.markAllAsTouched();
|
|
65
|
+
}
|
|
64
66
|
if ((_b = this.stepControl) === null || _b === void 0 ? void 0 : _b.valid) {
|
|
65
67
|
this.hasError = false;
|
|
66
68
|
this.completed = true;
|
|
@@ -164,4 +166,4 @@ StepperComponent.propDecorators = {
|
|
|
164
166
|
_stepHeader: [{ type: ViewChildren, args: [StepHeaderComponent,] }],
|
|
165
167
|
_steps: [{ type: ContentChildren, args: [StepComponent, { descendants: true },] }]
|
|
166
168
|
};
|
|
167
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvbWF0ZXJpYWwtYWRkb25zL21hdGVyaWFsLWFkZG9ucy9wcm9qZWN0cy9tYXRlcmlhbC1hZGRvbnMvc3JjLyIsInNvdXJjZXMiOlsibGliL3N0ZXBwZXIvc3RlcHBlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBMkIsTUFBTSxzQkFBc0IsQ0FBQztBQUVoRyxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1QsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDMUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFVL0QsTUFBTSxPQUFPLGFBQWMsU0FBUSxPQUFPO0lBaUJ4QyxZQUFnRSxPQUF5QixFQUFVLGlCQUFtQztRQUNwSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFEK0MsWUFBTyxHQUFQLE9BQU8s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SSxJQUFJLENBQUMsYUFBYSxLQUFLLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDeEUsQ0FBQzs7O1lBcEZGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsYUFBYTtnQkFDdkIsdTdFQUF1QztnQkFFdkMsSUFBSSxFQUFFO29CQUNKLDBCQUEwQixFQUFFLE1BQU07b0JBQ2xDLHlCQUF5QixFQUFFLFlBQVk7b0JBQ3ZDLE1BQU0sRUFBRSxTQUFTO2lCQUNsQjtnQkFDRCxVQUFVLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxzQkFBc0IsQ0FBQztnQkFDekQsbUVBQW1FO2dCQUNuRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLENBQUM7Z0JBQ25FLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2dCQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDaEQ7OztZQTNJUSxjQUFjLHVCQW1LbEIsUUFBUTtZQTdKWCxpQkFBaUI7WUFHakIsVUFBVTs0Q0E2SlAsTUFBTSxTQUFDLFFBQVE7Ozs0QkF2QmpCLE1BQU07OEJBRU4sS0FBSzs4QkFHTCxLQUFLOzBCQUdMLFlBQVksU0FBQyxtQkFBbUI7cUJBR2hDLGVBQWUsU0FBQyxhQUFhLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aW9uYWxpdHkgfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XG5pbXBvcnQgeyBDZGtTdGVwLCBDZGtTdGVwcGVyLCBTVEVQX1NUQVRFLCBTdGVwQ29udGVudFBvc2l0aW9uU3RhdGV9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zdGVwcGVyJztcbmltcG9ydCB7IEFuaW1hdGlvbkV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSwgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDaGlsZHJlbixcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTdGVwSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9zdGVwLWhlYWRlci9zdGVwLWhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgbWFkU3RlcHBlckFuaW1hdGlvbnMgfSBmcm9tICcuL21hZC1zdGVwcGVyLWFuaW1hdGlvbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hZC1zdGVwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N0ZXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdGVwcGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogQ2RrU3RlcCwgdXNlRXhpc3Rpbmc6IFN0ZXBDb21wb25lbnQgfV0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTdGVwQ29tcG9uZW50IGV4dGVuZHMgQ2RrU3RlcCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gIC8qKiBBY3Rpb24gZXZlbnQgZm9yIHRoZSBuZXh0IGJ1dHRvbi4gSWYgbm90IHNldCB0aGUgU3RlcENvbXBvbmVudCB3aWxsIGhhbmRsZSB0aGUgc3RlcCBuYXZpZ2F0aW9uICovXG4gIEBPdXRwdXQoKVxuICBvbk5leHQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKiogQWN0aW9uIGV2ZW50IGZvciB0aGUgZG9uZSBidXR0b24uIElmIG5vdCBzZXQgdGhlIFN0ZXBDb21wb25lbnQgd2lsbCBoYW5kbGUgdGhlIHN0ZXAgbmF2aWdhdGlvbiAgKi9cbiAgQE91dHB1dCgpXG4gIG9uRG9uZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKiogQWN0aW9uIGV2ZW50IHdoZW4gdGhlIGhlYWRlciBpcyBjbGlja2VkLiBJZiBub3Qgc2V0IHRoZSBTdGVwQ29tcG9uZW50IHdpbGwgaGFuZGxlIHRoZSBzdGVwIG5hdmlnYXRpb24qL1xuICBAT3V0cHV0KClcbiAgb25IZWFkZXJDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIHN0ZXBDbG9zZWQgPSBmYWxzZTtcblxuICBwcml2YXRlIF9pc1NlbGVjdGVkID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBTdGVwcGVyQ29tcG9uZW50KSkgcHJpdmF0ZSBzdGVwcGVyOiBTdGVwcGVyQ29tcG9uZW50LCBwcml2YXRlIF92aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7XG4gICAgc3VwZXIoc3RlcHBlcik7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgdGhpcy5faXNTZWxlY3RlZCA9IHRoaXMuX3N0ZXBwZXIuc3RlcHMuY2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICAgIHRoaXMuX3N0ZXBwZXIuc2VsZWN0aW9uQ2hhbmdlLnBpcGUoXG4gICAgICAgICAgICBtYXAoZXZlbnQgPT4gZXZlbnQuc2VsZWN0ZWRTdGVwID09PSB0aGlzKSxcbiAgICAgICAgICAgIHRhcCgoKSA9PiAodGhpcy5zdGVwQ2xvc2VkID0gZmFsc2UpKSxcbiAgICAgICAgICAgIHN0YXJ0V2l0aCh0aGlzLl9zdGVwcGVyLnNlbGVjdGVkID09PSB0aGlzKSxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5faXNTZWxlY3RlZC51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIG5leHQoKTogdm9pZCB7XG4gICAgdGhpcy5zdGVwVmFsaWRhdGlvbigpO1xuXG4gICAgaWYgKHRoaXMub25OZXh0Lm9ic2VydmVycy5sZW5ndGggPD0gMCkge1xuICAgICAgdGhpcy5zdGVwcGVyLm5leHQoKTtcbiAgICB9XG4gICAgdGhpcy5vbk5leHQuZW1pdCgpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdEFuZE1hcmtBc1RvdWNoZWQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIC8vTWFyayBjdXJyZW50IHNlbGVjdGVkIHN0ZXAgYXMgdG91Y2hlZCBiZWZvcmUgc2VsZWN0aW5nIHRvIGRpc3BsYXkgZXJyb3JzIGluIHRoZSBmcm9tXG4gICAgdGhpcy5fc3RlcHBlci5zZWxlY3RlZD8uc3RlcENvbnRyb2w/Lm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICB0aGlzLnN0ZXBDbG9zZWQgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5vbkhlYWRlckNsaWNrLm9ic2VydmVycy5sZW5ndGggPD0gMCkge1xuICAgICAgdGhpcy5zZWxlY3QoKTtcbiAgICB9XG4gICAgdGhpcy5vbkhlYWRlckNsaWNrLmVtaXQoaW5kZXgpO1xuICB9XG5cbiAgcHVibGljIGNvbXBsZXRlTGFzdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN0ZXBWYWxpZGF0aW9uKCk7XG4gICAgdGhpcy5zdGVwQ2xvc2VkID0gdHJ1ZTtcblxuICAgIGlmICh0aGlzLm9uRG9uZS5vYnNlcnZlcnMubGVuZ3RoIDw9IDApIHtcbiAgICAgIHRoaXMuc3RlcHBlci5uZXh0KCk7XG4gICAgfVxuXG4gICAgdGhpcy5vbkRvbmUuZW1pdCgpO1xuICB9XG5cbiAgcHVibGljIHJlc2V0VmFsaWRhdGlvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5oYXNFcnJvciA9IGZhbHNlO1xuICAgIHRoaXMuY29tcGxldGVkID0gdHJ1ZTtcbiAgICB0aGlzLnN0YXRlID0gU1RFUF9TVEFURS5ET05FO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGVwVmFsaWRhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnN0ZXBDb250cm9sPy5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgaWYgKHRoaXMuc3RlcENvbnRyb2w/LnZhbGlkKSB7XG4gICAgICB0aGlzLmhhc0Vycm9yID0gZmFsc2U7XG4gICAgICB0aGlzLmNvbXBsZXRlZCA9IHRydWU7XG4gICAgICB0aGlzLnN0YXRlID0gU1RFUF9TVEFURS5ET05FO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbXBsZXRlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5oYXNFcnJvciA9IHRydWU7XG4gICAgICB0aGlzLnN0YXRlID0gU1RFUF9TVEFURS5FUlJPUjtcbiAgICB9XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWFkLXN0ZXBwZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vc3RlcHBlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3N0ZXBwZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3Muc3RlcHBlci12ZXJ0aWNhbF0nOiAndHJ1ZScsXG4gICAgJ1thdHRyLmFyaWEtb3JpZW50YXRpb25dJzogJ1widmVydGljYWxcIicsXG4gICAgJ3JvbGUnOiAndGFibGlzdCcsXG4gIH0sXG4gIGFuaW1hdGlvbnM6IFttYWRTdGVwcGVyQW5pbWF0aW9ucy52ZXJ0aWNhbFN0ZXBUcmFuc2l0aW9uXSxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11c2UtYmVmb3JlLWRlZmluZVxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IENka1N0ZXBwZXIsIHVzZUV4aXN0aW5nOiBTdGVwcGVyQ29tcG9uZW50IH1dLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU3RlcHBlckNvbXBvbmVudCBleHRlbmRzIENka1N0ZXBwZXIgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQge1xuXG4gIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGN1cnJlbnQgc3RlcCBpcyBkb25lIHRyYW5zaXRpb25pbmcgaW4uICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBhbmltYXRpb25Eb25lOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQElucHV0KClcbiAgbmV4dEJ1dHRvbkxhYmVsOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgZG9uZUJ1dHRvbkxhYmVsOiBzdHJpbmc7XG4gIC8qKiBTdGVwIGhlYWRlcnMgb2YgYWxsIHN0ZXBzIGluc2lkZSB0aGUgc3RlcHBlciAqL1xuICBAVmlld0NoaWxkcmVuKFN0ZXBIZWFkZXJDb21wb25lbnQpIF9zdGVwSGVhZGVyOiBRdWVyeUxpc3Q8U3RlcEhlYWRlckNvbXBvbmVudD47XG5cbiAgLyoqIFN0ZXBzIGluc2lkZSB0aGUgU3RlcHBlciAqL1xuICBAQ29udGVudENoaWxkcmVuKFN0ZXBDb21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgX3N0ZXBzOiBRdWVyeUxpc3Q8U3RlcENvbXBvbmVudD47XG5cbiAgLyoqIFN0ZXBzIHRoYXQgYmVsb25nIHRvIHRoZSBjdXJyZW50IHN0ZXBwZXIsIGV4Y2x1ZGluZyBvbmVzIGZyb20gbmVzdGVkIHN0ZXBwZXJzLiAqL1xuICBzdGVwczogUXVlcnlMaXN0PFN0ZXBDb21wb25lbnQ+ID0gbmV3IFF1ZXJ5TGlzdDxTdGVwQ29tcG9uZW50PigpO1xuXG4gIHJlYWRvbmx5IF9hbmltYXRpb25Eb25lID0gbmV3IFN1YmplY3Q8QW5pbWF0aW9uRXZlbnQ+KCk7XG5cblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBkaXI6IERpcmVjdGlvbmFsaXR5LFxuICAgIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBfZG9jdW1lbnQ6IGFueSxcbiAgKSB7XG4gICAgc3VwZXIoZGlyLCBjaGFuZ2VEZXRlY3RvclJlZiwgZWxlbWVudFJlZiwgX2RvY3VtZW50KTtcbiAgICB0aGlzLl9vcmllbnRhdGlvbiA9ICd2ZXJ0aWNhbCc7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICAvLyBPbmx5IGxpbmVhciBzdGVwcGVyIGltcGxlbWVudGF0aW9uIGlzIHN1cHBvcnRlZFxuICAgIHN1cGVyLmxpbmVhciA9IHRydWU7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgc3VwZXIubmdBZnRlckNvbnRlbnRJbml0KCk7XG5cbiAgICB0aGlzLnN0ZXBzLmNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuX3N0YXRlQ2hhbmdlZCgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fYW5pbWF0aW9uRG9uZVxuICAgICAgLnBpcGUoXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCh4LCB5KSA9PiB4LmZyb21TdGF0ZSA9PT0geS5mcm9tU3RhdGUgJiYgeC50b1N0YXRlID09PSB5LnRvU3RhdGUpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICBpZiAoKGV2ZW50LnRvU3RhdGUgYXMgU3RlcENvbnRlbnRQb3NpdGlvblN0YXRlKSA9PT0gJ2N1cnJlbnQnKSB7XG4gICAgICAgICAgdGhpcy5hbmltYXRpb25Eb25lLmVtaXQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHBhdGNoZWQgdG8gZW5hYmxlIHRoZSBjbG9zaW5nIG9mIHRoZSBsYXN0IHN0ZXAuXG4gICAqL1xuICBfZ2V0QW5pbWF0aW9uRGlyZWN0aW9uKGluZGV4OiBudW1iZXIpOiBTdGVwQ29udGVudFBvc2l0aW9uU3RhdGUge1xuICAgIGNvbnN0IGNsb3NlTGFzdFN0ZXAgPSB0aGlzLnNlbGVjdGVkSW5kZXggPT09IHRoaXMuc3RlcHMubGVuZ3RoIC0gMSAmJiB0aGlzLl9zdGVwcy5sYXN0Py5jb21wbGV0ZWQgJiYgdGhpcy5fc3RlcHMubGFzdD8uc3RlcENsb3NlZDtcbiAgICBpZiAoY2xvc2VMYXN0U3RlcCkge1xuICAgICAgcmV0dXJuICduZXh0JztcbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyLl9nZXRBbmltYXRpb25EaXJlY3Rpb24oaW5kZXgpO1xuICB9XG5cbiAgX3N0ZXBJc05hdmlnYWJsZShpbmRleDogbnVtYmVyLCBzdGVwOiBTdGVwQ29tcG9uZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN0ZXAuY29tcGxldGVkIHx8IHRoaXMuc2VsZWN0ZWRJbmRleCA9PT0gaW5kZXggfHwgIXRoaXMubGluZWFyO1xuICB9XG59XG4iXX0=
|
|
169
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvbWF0ZXJpYWwtYWRkb25zL21hdGVyaWFsLWFkZG9ucy9wcm9qZWN0cy9tYXRlcmlhbC1hZGRvbnMvc3JjLyIsInNvdXJjZXMiOlsibGliL3N0ZXBwZXIvc3RlcHBlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBMkIsTUFBTSxzQkFBc0IsQ0FBQztBQUVoRyxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1QsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDMUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFVL0QsTUFBTSxPQUFPLGFBQWMsU0FBUSxPQUFPO0lBaUJ4QyxZQUFnRSxPQUF5QixFQUFVLGlCQUFtQztRQUNwSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFEK0MsWUFBTyxHQUFQLE9BQU8s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SyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQWEsRUFBRSxJQUFtQjtRQUNqRCxPQUFPLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3hFLENBQUM7OztZQXBGRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGFBQWE7Z0JBQ3ZCLHU3RUFBdUM7Z0JBRXZDLElBQUksRUFBRTtvQkFDSiwwQkFBMEIsRUFBRSxNQUFNO29CQUNsQyx5QkFBeUIsRUFBRSxZQUFZO29CQUN2QyxNQUFNLEVBQUUsU0FBUztpQkFDbEI7Z0JBQ0QsVUFBVSxFQUFFLENBQUMsb0JBQW9CLENBQUMsc0JBQXNCLENBQUM7Z0JBQ3pELG1FQUFtRTtnQkFDbkUsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO2dCQUNuRSxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtnQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2hEOzs7WUE3SVEsY0FBYyx1QkFxS2xCLFFBQVE7WUEvSlgsaUJBQWlCO1lBR2pCLFVBQVU7NENBK0pQLE1BQU0sU0FBQyxRQUFROzs7NEJBdkJqQixNQUFNOzhCQUVOLEtBQUs7OEJBR0wsS0FBSzswQkFHTCxZQUFZLFNBQUMsbUJBQW1CO3FCQUdoQyxlQUFlLFNBQUMsYUFBYSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGlvbmFsaXR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHsgQ2RrU3RlcCwgQ2RrU3RlcHBlciwgU1RFUF9TVEFURSwgU3RlcENvbnRlbnRQb3NpdGlvblN0YXRlfSBmcm9tICdAYW5ndWxhci9jZGsvc3RlcHBlcic7XG5pbXBvcnQgeyBBbmltYXRpb25FdmVudCB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGRyZW4sXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3RlcEhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vc3RlcC1oZWFkZXIvc3RlcC1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IG1hZFN0ZXBwZXJBbmltYXRpb25zIH0gZnJvbSAnLi9tYWQtc3RlcHBlci1hbmltYXRpb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYWQtc3RlcCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zdGVwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3RlcHBlci5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IENka1N0ZXAsIHVzZUV4aXN0aW5nOiBTdGVwQ29tcG9uZW50IH1dLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU3RlcENvbXBvbmVudCBleHRlbmRzIENka1N0ZXAgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICAvKiogQWN0aW9uIGV2ZW50IGZvciB0aGUgbmV4dCBidXR0b24uIElmIG5vdCBzZXQgdGhlIFN0ZXBDb21wb25lbnQgd2lsbCBoYW5kbGUgdGhlIHN0ZXAgbmF2aWdhdGlvbiAqL1xuICBAT3V0cHV0KClcbiAgb25OZXh0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqIEFjdGlvbiBldmVudCBmb3IgdGhlIGRvbmUgYnV0dG9uLiBJZiBub3Qgc2V0IHRoZSBTdGVwQ29tcG9uZW50IHdpbGwgaGFuZGxlIHRoZSBzdGVwIG5hdmlnYXRpb24gICovXG4gIEBPdXRwdXQoKVxuICBvbkRvbmUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKioqIEFjdGlvbiBldmVudCB3aGVuIHRoZSBoZWFkZXIgaXMgY2xpY2tlZC4gSWYgbm90IHNldCB0aGUgU3RlcENvbXBvbmVudCB3aWxsIGhhbmRsZSB0aGUgc3RlcCBuYXZpZ2F0aW9uKi9cbiAgQE91dHB1dCgpXG4gIG9uSGVhZGVyQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBzdGVwQ2xvc2VkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfaXNTZWxlY3RlZCA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gU3RlcHBlckNvbXBvbmVudCkpIHByaXZhdGUgc3RlcHBlcjogU3RlcHBlckNvbXBvbmVudCwgcHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xuICAgIHN1cGVyKHN0ZXBwZXIpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIHRoaXMuX2lzU2VsZWN0ZWQgPSB0aGlzLl9zdGVwcGVyLnN0ZXBzLmNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgICAgICB0aGlzLl9zdGVwcGVyLnNlbGVjdGlvbkNoYW5nZS5waXBlKFxuICAgICAgICAgICAgbWFwKGV2ZW50ID0+IGV2ZW50LnNlbGVjdGVkU3RlcCA9PT0gdGhpcyksXG4gICAgICAgICAgICB0YXAoKCkgPT4gKHRoaXMuc3RlcENsb3NlZCA9IGZhbHNlKSksXG4gICAgICAgICAgICBzdGFydFdpdGgodGhpcy5fc3RlcHBlci5zZWxlY3RlZCA9PT0gdGhpcyksXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2lzU2VsZWN0ZWQudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZXh0KG1hcmtGb3JtQXNUb3VjaGVkID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMuc3RlcFZhbGlkYXRpb24obWFya0Zvcm1Bc1RvdWNoZWQpO1xuXG4gICAgaWYgKHRoaXMub25OZXh0Lm9ic2VydmVycy5sZW5ndGggPD0gMCkge1xuICAgICAgdGhpcy5zdGVwcGVyLm5leHQoKTtcbiAgICB9XG4gICAgdGhpcy5vbk5leHQuZW1pdCgpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdEFuZE1hcmtBc1RvdWNoZWQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIC8vTWFyayBjdXJyZW50IHNlbGVjdGVkIHN0ZXAgYXMgdG91Y2hlZCBiZWZvcmUgc2VsZWN0aW5nIHRvIGRpc3BsYXkgZXJyb3JzIGluIHRoZSBmcm9tXG4gICAgdGhpcy5fc3RlcHBlci5zZWxlY3RlZD8uc3RlcENvbnRyb2w/Lm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICB0aGlzLnN0ZXBDbG9zZWQgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5vbkhlYWRlckNsaWNrLm9ic2VydmVycy5sZW5ndGggPD0gMCkge1xuICAgICAgdGhpcy5zZWxlY3QoKTtcbiAgICB9XG4gICAgdGhpcy5vbkhlYWRlckNsaWNrLmVtaXQoaW5kZXgpO1xuICB9XG5cbiAgcHVibGljIGNvbXBsZXRlTGFzdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN0ZXBWYWxpZGF0aW9uKHRydWUpO1xuICAgIHRoaXMuc3RlcENsb3NlZCA9IHRydWU7XG5cbiAgICBpZiAodGhpcy5vbkRvbmUub2JzZXJ2ZXJzLmxlbmd0aCA8PSAwKSB7XG4gICAgICB0aGlzLnN0ZXBwZXIubmV4dCgpO1xuICAgIH1cblxuICAgIHRoaXMub25Eb25lLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyByZXNldFZhbGlkYXRpb25zKCk6IHZvaWQge1xuICAgIHRoaXMuaGFzRXJyb3IgPSBmYWxzZTtcbiAgICB0aGlzLmNvbXBsZXRlZCA9IHRydWU7XG4gICAgdGhpcy5zdGF0ZSA9IFNURVBfU1RBVEUuRE9ORTtcbiAgfVxuXG4gIHByaXZhdGUgc3RlcFZhbGlkYXRpb24obWFya0Zvcm1Bc1RvdWNoZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAobWFya0Zvcm1Bc1RvdWNoZWQpe1xuICAgICAgdGhpcy5zdGVwQ29udHJvbD8ubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zdGVwQ29udHJvbD8udmFsaWQpIHtcbiAgICAgIHRoaXMuaGFzRXJyb3IgPSBmYWxzZTtcbiAgICAgIHRoaXMuY29tcGxldGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuc3RhdGUgPSBTVEVQX1NUQVRFLkRPTkU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29tcGxldGVkID0gZmFsc2U7XG4gICAgICB0aGlzLmhhc0Vycm9yID0gdHJ1ZTtcbiAgICAgIHRoaXMuc3RhdGUgPSBTVEVQX1NUQVRFLkVSUk9SO1xuICAgIH1cbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYWQtc3RlcHBlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zdGVwcGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3RlcHBlci5jb21wb25lbnQuc2NzcyddLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5zdGVwcGVyLXZlcnRpY2FsXSc6ICd0cnVlJyxcbiAgICAnW2F0dHIuYXJpYS1vcmllbnRhdGlvbl0nOiAnXCJ2ZXJ0aWNhbFwiJyxcbiAgICAncm9sZSc6ICd0YWJsaXN0JyxcbiAgfSxcbiAgYW5pbWF0aW9uczogW21hZFN0ZXBwZXJBbmltYXRpb25zLnZlcnRpY2FsU3RlcFRyYW5zaXRpb25dLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVzZS1iZWZvcmUtZGVmaW5lXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogQ2RrU3RlcHBlciwgdXNlRXhpc3Rpbmc6IFN0ZXBwZXJDb21wb25lbnQgfV0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTdGVwcGVyQ29tcG9uZW50IGV4dGVuZHMgQ2RrU3RlcHBlciBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCB7XG5cbiAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgY3VycmVudCBzdGVwIGlzIGRvbmUgdHJhbnNpdGlvbmluZyBpbi4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IGFuaW1hdGlvbkRvbmU6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBASW5wdXQoKVxuICBuZXh0QnV0dG9uTGFiZWw6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBkb25lQnV0dG9uTGFiZWw6IHN0cmluZztcbiAgLyoqIFN0ZXAgaGVhZGVycyBvZiBhbGwgc3RlcHMgaW5zaWRlIHRoZSBzdGVwcGVyICovXG4gIEBWaWV3Q2hpbGRyZW4oU3RlcEhlYWRlckNvbXBvbmVudCkgX3N0ZXBIZWFkZXI6IFF1ZXJ5TGlzdDxTdGVwSGVhZGVyQ29tcG9uZW50PjtcblxuICAvKiogU3RlcHMgaW5zaWRlIHRoZSBTdGVwcGVyICovXG4gIEBDb250ZW50Q2hpbGRyZW4oU3RlcENvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBfc3RlcHM6IFF1ZXJ5TGlzdDxTdGVwQ29tcG9uZW50PjtcblxuICAvKiogU3RlcHMgdGhhdCBiZWxvbmcgdG8gdGhlIGN1cnJlbnQgc3RlcHBlciwgZXhjbHVkaW5nIG9uZXMgZnJvbSBuZXN0ZWQgc3RlcHBlcnMuICovXG4gIHN0ZXBzOiBRdWVyeUxpc3Q8U3RlcENvbXBvbmVudD4gPSBuZXcgUXVlcnlMaXN0PFN0ZXBDb21wb25lbnQ+KCk7XG5cbiAgcmVhZG9ubHkgX2FuaW1hdGlvbkRvbmUgPSBuZXcgU3ViamVjdDxBbmltYXRpb25FdmVudD4oKTtcblxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIGRpcjogRGlyZWN0aW9uYWxpdHksXG4gICAgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIF9kb2N1bWVudDogYW55LFxuICApIHtcbiAgICBzdXBlcihkaXIsIGNoYW5nZURldGVjdG9yUmVmLCBlbGVtZW50UmVmLCBfZG9jdW1lbnQpO1xuICAgIHRoaXMuX29yaWVudGF0aW9uID0gJ3ZlcnRpY2FsJztcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIE9ubHkgbGluZWFyIHN0ZXBwZXIgaW1wbGVtZW50YXRpb24gaXMgc3VwcG9ydGVkXG4gICAgc3VwZXIubGluZWFyID0gdHJ1ZTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICBzdXBlci5uZ0FmdGVyQ29udGVudEluaXQoKTtcblxuICAgIHRoaXMuc3RlcHMuY2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5fc3RhdGVDaGFuZ2VkKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9hbmltYXRpb25Eb25lXG4gICAgICAucGlwZShcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKHgsIHkpID0+IHguZnJvbVN0YXRlID09PSB5LmZyb21TdGF0ZSAmJiB4LnRvU3RhdGUgPT09IHkudG9TdGF0ZSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgIGlmICgoZXZlbnQudG9TdGF0ZSBhcyBTdGVwQ29udGVudFBvc2l0aW9uU3RhdGUpID09PSAnY3VycmVudCcpIHtcbiAgICAgICAgICB0aGlzLmFuaW1hdGlvbkRvbmUuZW1pdCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgcGF0Y2hlZCB0byBlbmFibGUgdGhlIGNsb3Npbmcgb2YgdGhlIGxhc3Qgc3RlcC5cbiAgICovXG4gIF9nZXRBbmltYXRpb25EaXJlY3Rpb24oaW5kZXg6IG51bWJlcik6IFN0ZXBDb250ZW50UG9zaXRpb25TdGF0ZSB7XG4gICAgY29uc3QgY2xvc2VMYXN0U3RlcCA9IHRoaXMuc2VsZWN0ZWRJbmRleCA9PT0gdGhpcy5zdGVwcy5sZW5ndGggLSAxICYmIHRoaXMuX3N0ZXBzLmxhc3Q/LmNvbXBsZXRlZCAmJiB0aGlzLl9zdGVwcy5sYXN0Py5zdGVwQ2xvc2VkO1xuICAgIGlmIChjbG9zZUxhc3RTdGVwKSB7XG4gICAgICByZXR1cm4gJ25leHQnO1xuICAgIH1cbiAgICByZXR1cm4gc3VwZXIuX2dldEFuaW1hdGlvbkRpcmVjdGlvbihpbmRleCk7XG4gIH1cblxuICBfc3RlcElzTmF2aWdhYmxlKGluZGV4OiBudW1iZXIsIHN0ZXA6IFN0ZXBDb21wb25lbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3RlcC5jb21wbGV0ZWQgfHwgdGhpcy5zZWxlY3RlZEluZGV4ID09PSBpbmRleCB8fCAhdGhpcy5saW5lYXI7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -45,7 +45,7 @@ export class ToolbarComponent {
|
|
|
45
45
|
ToolbarComponent.decorators = [
|
|
46
46
|
{ type: Component, args: [{
|
|
47
47
|
selector: 'mad-toolbar',
|
|
48
|
-
template: "<mat-toolbar class=\"content-toolbar\">\n <a [routerLink]=\"getBackAction().routerLink\" *ngIf=\"isRouterLink()\">\n <button [id]=\"'go-back'\" color=\"primary\" mat-icon-button class=\"go-back-button\">\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n <a [href]=\"getBackAction().href\" *ngIf=\"isAbsoluteLink()\">\n <button [id]=\"'go-back'\" class=\"go-back-button\" color=\"primary\" mat-icon-button>\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n <a (click)=\"getBackAction().action()\" *ngIf=\"isAction()\">\n <button [id]=\"'go-back'\" color=\"primary\" mat-icon-button class=\"go-back-button\">\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n\n <span class=\"toolbar-title\">{{ getTitle() }}</span>\n\n <ng-container *ngFor=\"let mainAction of getMainActions(); let i = index\">\n <ng-container *ngIf=\"hasPermission(mainAction) | async\">\n <div *ngIf=\"!(isHandset$ | async)\">\n <a [routerLink]=\"mainAction.routerLink\">\n <mad-primary-button [id]=\"mainAction.matIcon\" style=\"margin-left: 56px\">\n <mat-icon>{{ mainAction.matIcon }}</mat-icon>\n {{ mainAction.actionName }}\n </mad-primary-button>\n </a>\n </div>\n <div *ngIf=\"isHandset$ | async\">\n <mad-material-action-button\n [actionName]=\"mainAction.actionName\"\n [icon]=\"mainAction.matIcon\"\n [liftHigher]=\"mainAction.liftHigherOnMobile\"\n [liftHigher2]=\"i > 0\"\n [routerLink]=\"mainAction.routerLink\"\n [id]=\"mainAction.matIcon\"\n >\n </mad-material-action-button>\n </div>\n </ng-container>\n </ng-container>\n\n <div class=\"right-aligned no-print\">\n <ng-container *ngFor=\"let action of getToolbarActions(); let i = index\">\n <ng-container *ngIf=\"hasPermission(action) | async\">\n <mad-icon-button\n (click)=\"action.action()\"\n *ngIf=\"!(isHandset$ | async) || i < (getToolbarActions().length > 2 ? 1 : 2)\"\n [id]=\"action.matIcon\"\n [matTooltip]=\"action.actionName\"\n type=\"button\"\n >\n <mat-icon\n [matBadgeColor]=\"action.badge ? action.badge.color : 'primary'\"\n matBadgePosition=\"below after\"\n [matBadge]=\"action.badge ? action.badge.value : null\"\n >{{ action.matIcon }}</mat-icon\n >\n </mad-icon-button>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"isHandset$ | async\">\n <ng-container *ngIf=\"getToolbarActions().length > 2\">\n <
|
|
48
|
+
template: "<mat-toolbar class=\"content-toolbar\">\n <a [routerLink]=\"getBackAction().routerLink\" *ngIf=\"isRouterLink()\">\n <button [id]=\"'go-back'\" color=\"primary\" mat-icon-button class=\"go-back-button\">\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n <a [href]=\"getBackAction().href\" *ngIf=\"isAbsoluteLink()\">\n <button [id]=\"'go-back'\" class=\"go-back-button\" color=\"primary\" mat-icon-button>\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n <a (click)=\"getBackAction().action()\" *ngIf=\"isAction()\">\n <button [id]=\"'go-back'\" color=\"primary\" mat-icon-button class=\"go-back-button\">\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n\n <span class=\"toolbar-title\">{{ getTitle() }}</span>\n\n <ng-container *ngFor=\"let mainAction of getMainActions(); let i = index\">\n <ng-container *ngIf=\"hasPermission(mainAction) | async\">\n <div *ngIf=\"!(isHandset$ | async)\">\n <a [routerLink]=\"mainAction.routerLink\">\n <mad-primary-button [id]=\"mainAction.matIcon\" style=\"margin-left: 56px\">\n <mat-icon>{{ mainAction.matIcon }}</mat-icon>\n {{ mainAction.actionName }}\n </mad-primary-button>\n </a>\n </div>\n <div *ngIf=\"isHandset$ | async\">\n <mad-material-action-button\n [actionName]=\"mainAction.actionName\"\n [icon]=\"mainAction.matIcon\"\n [liftHigher]=\"mainAction.liftHigherOnMobile\"\n [liftHigher2]=\"i > 0\"\n [routerLink]=\"mainAction.routerLink\"\n [id]=\"mainAction.matIcon\"\n >\n </mad-material-action-button>\n </div>\n </ng-container>\n </ng-container>\n\n <div class=\"right-aligned no-print\">\n <ng-container *ngFor=\"let action of getToolbarActions(); let i = index\">\n <ng-container *ngIf=\"hasPermission(action) | async\">\n <mad-icon-button\n (click)=\"action.action()\"\n *ngIf=\"!(isHandset$ | async) || i < (getToolbarActions().length > 2 ? 1 : 2)\"\n [id]=\"action.matIcon\"\n [matTooltip]=\"action.actionName\"\n type=\"button\"\n >\n <mat-icon\n [matBadgeColor]=\"action.badge ? action.badge.color : 'primary'\"\n matBadgePosition=\"below after\"\n [matBadge]=\"action.badge ? action.badge.value : null\"\n >{{ action.matIcon }}</mat-icon\n >\n </mad-icon-button>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"isHandset$ | async\">\n <ng-container *ngIf=\"getToolbarActions().length > 2\">\n <mad-icon-button type=\"button\" [matMenuTriggerFor]=\"burgerMenu\" matTooltip=\"More\">\n <mat-icon>more_vert</mat-icon>\n </mad-icon-button>\n <mat-menu #burgerMenu=\"matMenu\">\n <ng-container *ngFor=\"let action of getToolbarActions(); let i = index\">\n <ng-container *ngIf=\"hasPermission(action) | async\">\n <button *ngIf=\"i >= 1\" mat-menu-item (click)=\"action.action()\">\n <mat-icon\n color=\"primary\"\n [matBadgeColor]=\"action.badge ? action.badge.color : 'primary'\"\n [matBadge]=\"action.badge ? action.badge.value : null\"\n matBadgePosition=\"below after\"\n >{{ action.matIcon }}</mat-icon\n >\n {{ action.actionName }}\n </button>\n </ng-container>\n </ng-container>\n </mat-menu>\n </ng-container>\n </ng-container>\n </div>\n</mat-toolbar>\n",
|
|
49
49
|
styles: ["mat-toolbar{background:#fff}.content-toolbar{border-bottom:1px solid #dcdcdc;height:57px}.right-aligned{margin-left:auto;margin-right:0;overflow:hidden}.go-back-button{padding-left:0;padding-right:0}.toolbar-title{margin-right:72px}::ng-deep.mat-badge-content{bottom:-7px!important;right:-7px!important}"]
|
|
50
50
|
},] }
|
|
51
51
|
];
|
|
@@ -54,4 +54,4 @@ ToolbarComponent.ctorParameters = () => [
|
|
|
54
54
|
{ type: Title },
|
|
55
55
|
{ type: ToolbarService }
|
|
56
56
|
];
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvbWF0ZXJpYWwtYWRkb25zL21hdGVyaWFsLWFkZG9ucy9wcm9qZWN0cy9tYXRlcmlhbC1hZGRvbnMvc3JjLyIsInNvdXJjZXMiOlsibGliL3Rvb2xiYXIvdG9vbGJhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVFyQyxNQUFNLE9BQU8sZ0JBQWdCO0lBRzNCLFlBQW9CLGtCQUFzQyxFQUFVLFlBQW1CLEVBQVUsY0FBOEI7UUFBM0csdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFPO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBRi9ILGVBQVUsR0FBd0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUVLLENBQUM7SUFFbkksUUFBUTtRQUNOLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDckQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUM7UUFDdEQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxZQUFZLElBQUksWUFBWSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztRQUN0RyxPQUFPLENBQUMsU0FBUyxJQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLEdBQUcsU0FBUyxDQUFDO0lBQ2hGLENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQWM7UUFDMUIsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDN0IsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDakI7UUFDRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUMsVUFBVSxDQUFDO0lBQ2pHLENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FBQztJQUMzRixDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxNQUFNLENBQUM7SUFDN0YsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDN0MsQ0FBQzs7O1lBOUNGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsYUFBYTtnQkFDdkIsaW9IQUF1Qzs7YUFFeEM7OztZQVJRLGtCQUFrQjtZQUhsQixLQUFLO1lBQ0wsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IFRvb2xiYXJTZXJ2aWNlIH0gZnJvbSAnLi90b29sYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJyZWFrcG9pbnRPYnNlcnZlciwgQnJlYWtwb2ludHMgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFjdGlvbiwgQmFja0FjdGlvbiwgTWFpbkFjdGlvbiwgVG9vbGJhckFjdGlvbiB9IGZyb20gJy4vdG9vbGJhci1hY3Rpb24uaW50ZXJmYWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWFkLXRvb2xiYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vdG9vbGJhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Rvb2xiYXIuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBUb29sYmFyQ29tcG9uZW50IHtcbiAgaXNIYW5kc2V0JDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuYnJlYWtwb2ludE9ic2VydmVyLm9ic2VydmUoW0JyZWFrcG9pbnRzLkhhbmRzZXRdKS5waXBlKG1hcChyZXN1bHQgPT4gcmVzdWx0Lm1hdGNoZXMpKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJyZWFrcG9pbnRPYnNlcnZlcjogQnJlYWtwb2ludE9ic2VydmVyLCBwcml2YXRlIHRpdGxlU2VydmljZTogVGl0bGUsIHByaXZhdGUgdG9vbGJhclNlcnZpY2U6IFRvb2xiYXJTZXJ2aWNlKSB7fVxuXG4gIGdldFRpdGxlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgZGF0YVRpdGxlID0gdGhpcy50b29sYmFyU2VydmljZS5nZXREYXRhVGl0bGUoKTtcbiAgICBjb25zdCB0b29sYmFyVGl0bGUgPSB0aGlzLnRvb2xiYXJTZXJ2aWNlLnRvb2xiYXJUaXRsZTtcbiAgICBjb25zdCB0aXRsZSA9ICF0b29sYmFyVGl0bGUgfHwgdG9vbGJhclRpdGxlLmxlbmd0aCA8PSAwID8gdGhpcy50aXRsZVNlcnZpY2UuZ2V0VGl0bGUoKSA6IHRvb2xiYXJUaXRsZTtcbiAgICByZXR1cm4gIWRhdGFUaXRsZSB8fCBkYXRhVGl0bGUubGVuZ3RoIDw9IDAgPyB0aXRsZSA6IHRpdGxlICsgJzogJyArIGRhdGFUaXRsZTtcbiAgfVxuXG4gIGdldFRvb2xiYXJBY3Rpb25zKCk6IFRvb2xiYXJBY3Rpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMudG9vbGJhclNlcnZpY2UuZ2V0VG9vbGJhckFjdGlvbnMoKTtcbiAgfVxuXG4gIGdldE1haW5BY3Rpb25zKCk6IE1haW5BY3Rpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMudG9vbGJhclNlcnZpY2UuZ2V0TWFpbkFjdGlvbnMoKTtcbiAgfVxuXG4gIGhhc1Blcm1pc3Npb24oYWN0aW9uOiBBY3Rpb24pOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBpZiAoIWFjdGlvbiB8fCAhYWN0aW9uLnNob3dJZikge1xuICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgIH1cbiAgICByZXR1cm4gYWN0aW9uLnNob3dJZjtcbiAgfVxuXG4gIGlzUm91dGVyTGluaygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50b29sYmFyU2VydmljZS5nZXRCYWNrQWN0aW9uKCkgJiYgISF0aGlzLnRvb2xiYXJTZXJ2aWNlLmdldEJhY2tBY3Rpb24oKS5yb3V0ZXJMaW5rO1xuICB9XG5cbiAgaXNBYnNvbHV0ZUxpbmsoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudG9vbGJhclNlcnZpY2UuZ2V0QmFja0FjdGlvbigpICYmICEhdGhpcy50b29sYmFyU2VydmljZS5nZXRCYWNrQWN0aW9uKCkuaHJlZjtcbiAgfVxuXG4gIGlzQWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRvb2xiYXJTZXJ2aWNlLmdldEJhY2tBY3Rpb24oKSAmJiAhIXRoaXMudG9vbGJhclNlcnZpY2UuZ2V0QmFja0FjdGlvbigpLmFjdGlvbjtcbiAgfVxuXG4gIGdldEJhY2tBY3Rpb24oKTogQmFja0FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMudG9vbGJhclNlcnZpY2UuZ2V0QmFja0FjdGlvbigpO1xuICB9XG59XG4iXX0=
|
|
@@ -8,7 +8,7 @@ import { MatFormFieldModule } from '@angular/material/form-field';
|
|
|
8
8
|
import { MatInputModule } from '@angular/material/input';
|
|
9
9
|
import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
10
10
|
import { Title } from '@angular/platform-browser';
|
|
11
|
-
import { TranslateService } from '@ngx-translate/core';
|
|
11
|
+
import { TranslateService, TranslateModule } from '@ngx-translate/core';
|
|
12
12
|
import { of, Subject, Subscription } from 'rxjs';
|
|
13
13
|
import { Breakpoints, BreakpointObserver } from '@angular/cdk/layout';
|
|
14
14
|
import { map, throttleTime, switchMap, tap, startWith, takeUntil, distinctUntilChanged } from 'rxjs/operators';
|
|
@@ -20,6 +20,10 @@ import { trigger, transition, style, animate, state } from '@angular/animations'
|
|
|
20
20
|
import { MatTableDataSource, MatTableModule } from '@angular/material/table';
|
|
21
21
|
import { MatSort, MatSortModule } from '@angular/material/sort';
|
|
22
22
|
import { MatPaginator, MatPaginatorModule } from '@angular/material/paginator';
|
|
23
|
+
import { SelectionModel } from '@angular/cdk/collections';
|
|
24
|
+
import { v4 } from 'uuid';
|
|
25
|
+
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
26
|
+
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
23
27
|
import { Directionality } from '@angular/cdk/bidi';
|
|
24
28
|
import { CdkStepHeader, STEP_STATE, CdkStep, CdkStepper, CdkStepperModule } from '@angular/cdk/stepper';
|
|
25
29
|
import { FocusMonitor } from '@angular/cdk/a11y';
|
|
@@ -798,7 +802,7 @@ class ToolbarComponent {
|
|
|
798
802
|
ToolbarComponent.decorators = [
|
|
799
803
|
{ type: Component, args: [{
|
|
800
804
|
selector: 'mad-toolbar',
|
|
801
|
-
template: "<mat-toolbar class=\"content-toolbar\">\n <a [routerLink]=\"getBackAction().routerLink\" *ngIf=\"isRouterLink()\">\n <button [id]=\"'go-back'\" color=\"primary\" mat-icon-button class=\"go-back-button\">\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n <a [href]=\"getBackAction().href\" *ngIf=\"isAbsoluteLink()\">\n <button [id]=\"'go-back'\" class=\"go-back-button\" color=\"primary\" mat-icon-button>\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n <a (click)=\"getBackAction().action()\" *ngIf=\"isAction()\">\n <button [id]=\"'go-back'\" color=\"primary\" mat-icon-button class=\"go-back-button\">\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n\n <span class=\"toolbar-title\">{{ getTitle() }}</span>\n\n <ng-container *ngFor=\"let mainAction of getMainActions(); let i = index\">\n <ng-container *ngIf=\"hasPermission(mainAction) | async\">\n <div *ngIf=\"!(isHandset$ | async)\">\n <a [routerLink]=\"mainAction.routerLink\">\n <mad-primary-button [id]=\"mainAction.matIcon\" style=\"margin-left: 56px\">\n <mat-icon>{{ mainAction.matIcon }}</mat-icon>\n {{ mainAction.actionName }}\n </mad-primary-button>\n </a>\n </div>\n <div *ngIf=\"isHandset$ | async\">\n <mad-material-action-button\n [actionName]=\"mainAction.actionName\"\n [icon]=\"mainAction.matIcon\"\n [liftHigher]=\"mainAction.liftHigherOnMobile\"\n [liftHigher2]=\"i > 0\"\n [routerLink]=\"mainAction.routerLink\"\n [id]=\"mainAction.matIcon\"\n >\n </mad-material-action-button>\n </div>\n </ng-container>\n </ng-container>\n\n <div class=\"right-aligned no-print\">\n <ng-container *ngFor=\"let action of getToolbarActions(); let i = index\">\n <ng-container *ngIf=\"hasPermission(action) | async\">\n <mad-icon-button\n (click)=\"action.action()\"\n *ngIf=\"!(isHandset$ | async) || i < (getToolbarActions().length > 2 ? 1 : 2)\"\n [id]=\"action.matIcon\"\n [matTooltip]=\"action.actionName\"\n type=\"button\"\n >\n <mat-icon\n [matBadgeColor]=\"action.badge ? action.badge.color : 'primary'\"\n matBadgePosition=\"below after\"\n [matBadge]=\"action.badge ? action.badge.value : null\"\n >{{ action.matIcon }}</mat-icon\n >\n </mad-icon-button>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"isHandset$ | async\">\n <ng-container *ngIf=\"getToolbarActions().length > 2\">\n <
|
|
805
|
+
template: "<mat-toolbar class=\"content-toolbar\">\n <a [routerLink]=\"getBackAction().routerLink\" *ngIf=\"isRouterLink()\">\n <button [id]=\"'go-back'\" color=\"primary\" mat-icon-button class=\"go-back-button\">\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n <a [href]=\"getBackAction().href\" *ngIf=\"isAbsoluteLink()\">\n <button [id]=\"'go-back'\" class=\"go-back-button\" color=\"primary\" mat-icon-button>\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n <a (click)=\"getBackAction().action()\" *ngIf=\"isAction()\">\n <button [id]=\"'go-back'\" color=\"primary\" mat-icon-button class=\"go-back-button\">\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n\n <span class=\"toolbar-title\">{{ getTitle() }}</span>\n\n <ng-container *ngFor=\"let mainAction of getMainActions(); let i = index\">\n <ng-container *ngIf=\"hasPermission(mainAction) | async\">\n <div *ngIf=\"!(isHandset$ | async)\">\n <a [routerLink]=\"mainAction.routerLink\">\n <mad-primary-button [id]=\"mainAction.matIcon\" style=\"margin-left: 56px\">\n <mat-icon>{{ mainAction.matIcon }}</mat-icon>\n {{ mainAction.actionName }}\n </mad-primary-button>\n </a>\n </div>\n <div *ngIf=\"isHandset$ | async\">\n <mad-material-action-button\n [actionName]=\"mainAction.actionName\"\n [icon]=\"mainAction.matIcon\"\n [liftHigher]=\"mainAction.liftHigherOnMobile\"\n [liftHigher2]=\"i > 0\"\n [routerLink]=\"mainAction.routerLink\"\n [id]=\"mainAction.matIcon\"\n >\n </mad-material-action-button>\n </div>\n </ng-container>\n </ng-container>\n\n <div class=\"right-aligned no-print\">\n <ng-container *ngFor=\"let action of getToolbarActions(); let i = index\">\n <ng-container *ngIf=\"hasPermission(action) | async\">\n <mad-icon-button\n (click)=\"action.action()\"\n *ngIf=\"!(isHandset$ | async) || i < (getToolbarActions().length > 2 ? 1 : 2)\"\n [id]=\"action.matIcon\"\n [matTooltip]=\"action.actionName\"\n type=\"button\"\n >\n <mat-icon\n [matBadgeColor]=\"action.badge ? action.badge.color : 'primary'\"\n matBadgePosition=\"below after\"\n [matBadge]=\"action.badge ? action.badge.value : null\"\n >{{ action.matIcon }}</mat-icon\n >\n </mad-icon-button>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"isHandset$ | async\">\n <ng-container *ngIf=\"getToolbarActions().length > 2\">\n <mad-icon-button type=\"button\" [matMenuTriggerFor]=\"burgerMenu\" matTooltip=\"More\">\n <mat-icon>more_vert</mat-icon>\n </mad-icon-button>\n <mat-menu #burgerMenu=\"matMenu\">\n <ng-container *ngFor=\"let action of getToolbarActions(); let i = index\">\n <ng-container *ngIf=\"hasPermission(action) | async\">\n <button *ngIf=\"i >= 1\" mat-menu-item (click)=\"action.action()\">\n <mat-icon\n color=\"primary\"\n [matBadgeColor]=\"action.badge ? action.badge.color : 'primary'\"\n [matBadge]=\"action.badge ? action.badge.value : null\"\n matBadgePosition=\"below after\"\n >{{ action.matIcon }}</mat-icon\n >\n {{ action.actionName }}\n </button>\n </ng-container>\n </ng-container>\n </mat-menu>\n </ng-container>\n </ng-container>\n </div>\n</mat-toolbar>\n",
|
|
802
806
|
styles: ["mat-toolbar{background:#fff}.content-toolbar{border-bottom:1px solid #dcdcdc;height:57px}.right-aligned{margin-left:auto;margin-right:0;overflow:hidden}.go-back-button{padding-left:0;padding-right:0}.toolbar-title{margin-right:72px}::ng-deep.mat-badge-content{bottom:-7px!important;right:-7px!important}"]
|
|
803
807
|
},] }
|
|
804
808
|
];
|
|
@@ -1499,30 +1503,49 @@ TableModule.decorators = [
|
|
|
1499
1503
|
},] }
|
|
1500
1504
|
];
|
|
1501
1505
|
|
|
1506
|
+
class DataTableActionType {
|
|
1507
|
+
}
|
|
1508
|
+
DataTableActionType.SINGLE = "SINGLE";
|
|
1509
|
+
DataTableActionType.BATCH = "BATCH";
|
|
1510
|
+
DataTableActionType.NONE = "NONE";
|
|
1511
|
+
|
|
1502
1512
|
class DataTableComponent {
|
|
1503
1513
|
constructor() {
|
|
1504
1514
|
var _a;
|
|
1505
|
-
this.ACTION_COLUMN_NAME =
|
|
1515
|
+
this.ACTION_COLUMN_NAME = "__action__";
|
|
1516
|
+
this.SINGLE = DataTableActionType.SINGLE;
|
|
1517
|
+
this.BATCH = DataTableActionType.BATCH;
|
|
1518
|
+
this.NONE = DataTableActionType.NONE;
|
|
1506
1519
|
this.columns = [];
|
|
1507
|
-
this.filterLabel =
|
|
1508
|
-
this.filterPlaceholder =
|
|
1520
|
+
this.filterLabel = "Filter";
|
|
1521
|
+
this.filterPlaceholder = "";
|
|
1522
|
+
this.noDataText = "No matching data found";
|
|
1509
1523
|
this.pageSizeOptions = [5, 10, 15];
|
|
1510
1524
|
this.defaultPageSize = ((_a = this.pageSizeOptions) === null || _a === void 0 ? void 0 : _a[0]) || 10;
|
|
1511
|
-
this.
|
|
1512
|
-
this.tableActions = [];
|
|
1513
|
-
this.tableAction = new EventEmitter();
|
|
1514
|
-
this.rowAction = new EventEmitter();
|
|
1525
|
+
this.actions = [];
|
|
1515
1526
|
this.sortEvent = new EventEmitter();
|
|
1527
|
+
this.actionEvent = new EventEmitter();
|
|
1528
|
+
this.pagingEvent = new EventEmitter();
|
|
1529
|
+
this.tableActions = [];
|
|
1530
|
+
this.rowActions = [];
|
|
1531
|
+
this.allSelected = false;
|
|
1532
|
+
this.displayedDataMap = new Map();
|
|
1533
|
+
this.actualDataMap = new Map();
|
|
1534
|
+
this.selectionModel = new SelectionModel(true);
|
|
1516
1535
|
this.isFilterEnabled = false;
|
|
1517
1536
|
this.isPaginationEnabled = false;
|
|
1537
|
+
this.mode = this.NONE;
|
|
1538
|
+
this.isRowClickable = false;
|
|
1539
|
+
this.isLoading = false;
|
|
1518
1540
|
}
|
|
1519
|
-
set
|
|
1541
|
+
set tableData(data) {
|
|
1520
1542
|
if (!this.dataSource) {
|
|
1521
1543
|
this.dataSource = new MatTableDataSource(data);
|
|
1522
1544
|
}
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1545
|
+
this.createDataMapsAndSetDisplayedDataSourceData(data);
|
|
1546
|
+
}
|
|
1547
|
+
set loading(isLoading) {
|
|
1548
|
+
this.isLoading = isLoading;
|
|
1526
1549
|
}
|
|
1527
1550
|
set paginationEnabled(isPaginationEnabled) {
|
|
1528
1551
|
this.isPaginationEnabled = isPaginationEnabled;
|
|
@@ -1536,47 +1559,203 @@ class DataTableComponent {
|
|
|
1536
1559
|
this.isFilterEnabled = isFilterEnabled;
|
|
1537
1560
|
this.setFilterValue(undefined);
|
|
1538
1561
|
}
|
|
1562
|
+
set forceMode(mode) {
|
|
1563
|
+
if (mode === this.SINGLE || mode === this.BATCH || mode === this.NONE) {
|
|
1564
|
+
this._forceMode = mode;
|
|
1565
|
+
this.mode = mode;
|
|
1566
|
+
this.setActions();
|
|
1567
|
+
}
|
|
1568
|
+
}
|
|
1539
1569
|
ngOnInit() {
|
|
1540
1570
|
this.columnNames = this.columns.map(column => column.label);
|
|
1541
|
-
this.
|
|
1542
|
-
|
|
1543
|
-
|
|
1571
|
+
this.mode = this.getTableMode();
|
|
1572
|
+
this.setActions();
|
|
1573
|
+
if (this.mode !== this.NONE) {
|
|
1574
|
+
this.isRowClickable = true;
|
|
1544
1575
|
this.defaultAction = this.rowActions[0];
|
|
1545
1576
|
}
|
|
1577
|
+
this.columnNames.unshift(this.ACTION_COLUMN_NAME);
|
|
1546
1578
|
}
|
|
1547
1579
|
ngAfterViewInit() {
|
|
1548
1580
|
this.dataSource.paginator = this.paginator;
|
|
1549
1581
|
this.dataSource.sort = this.sort;
|
|
1550
1582
|
}
|
|
1551
|
-
|
|
1552
|
-
|
|
1583
|
+
get selectedCount() {
|
|
1584
|
+
var _a;
|
|
1585
|
+
return ((_a = this.selectionModel) === null || _a === void 0 ? void 0 : _a.selected) ? this.selectionModel.selected.length : 0;
|
|
1586
|
+
}
|
|
1587
|
+
get rowCount() {
|
|
1588
|
+
var _a;
|
|
1589
|
+
return ((_a = this.dataSource) === null || _a === void 0 ? void 0 : _a._pageData(this.dataSource.data)) ? this.dataSource._pageData(this.dataSource.data).length : 0;
|
|
1590
|
+
}
|
|
1591
|
+
getSelectedCount(actionType) {
|
|
1592
|
+
const count = this.selectedCount;
|
|
1593
|
+
if (actionType != this.BATCH || count < 2) {
|
|
1594
|
+
return "";
|
|
1595
|
+
}
|
|
1596
|
+
return " (" + count + ")";
|
|
1597
|
+
}
|
|
1598
|
+
isDisabled(actionType) {
|
|
1599
|
+
switch (actionType) {
|
|
1600
|
+
case this.SINGLE:
|
|
1601
|
+
return this.selectedCount != 1;
|
|
1602
|
+
case this.BATCH:
|
|
1603
|
+
return this.selectedCount < 1;
|
|
1604
|
+
default:
|
|
1605
|
+
return false;
|
|
1606
|
+
}
|
|
1607
|
+
}
|
|
1608
|
+
onToggleSelectAll() {
|
|
1609
|
+
// clear all selection first
|
|
1610
|
+
this.selectionModel.clear();
|
|
1611
|
+
// toggle all checkbox
|
|
1612
|
+
this.allSelected = !this.allSelected;
|
|
1613
|
+
if (this.allSelected) {
|
|
1614
|
+
// select all rows of the current page
|
|
1615
|
+
this.dataSource._pageData(this.dataSource.data).forEach((row) => {
|
|
1616
|
+
const dataRow = row;
|
|
1617
|
+
const rowId = "" + dataRow.rowId;
|
|
1618
|
+
this.selectionModel.select(rowId);
|
|
1619
|
+
});
|
|
1620
|
+
}
|
|
1621
|
+
}
|
|
1622
|
+
isSelected(rowId) {
|
|
1623
|
+
return this.selectionModel.isSelected(rowId);
|
|
1624
|
+
}
|
|
1625
|
+
setFilterValue(value) {
|
|
1626
|
+
this.dataSource.filter = value === null || value === void 0 ? void 0 : value.trim().toLowerCase();
|
|
1627
|
+
}
|
|
1628
|
+
onRowCheckbox(event, row) {
|
|
1629
|
+
event.stopPropagation(); // no click event on row
|
|
1630
|
+
this.selectionModel.toggle(row.rowId);
|
|
1553
1631
|
}
|
|
1554
1632
|
onRowEvent(event, row, action = this.defaultAction) {
|
|
1555
|
-
|
|
1556
|
-
this.
|
|
1633
|
+
switch (this.mode) {
|
|
1634
|
+
case this.BATCH:
|
|
1635
|
+
this.onRowCheckbox(event, row);
|
|
1636
|
+
break;
|
|
1637
|
+
case this.SINGLE:
|
|
1638
|
+
// emit the default action if the row (not the icon!) was clicked
|
|
1639
|
+
if (!!action && !DataTableComponent.isClickOnRowMenuIcon(event)) {
|
|
1640
|
+
const selected = [];
|
|
1641
|
+
// if ID-generator is provided, return the ID, else return the ACTUAL data
|
|
1642
|
+
selected.push(this.idGenerator ? row.rowId : this.actualDataMap.get(row.rowId));
|
|
1643
|
+
this.emitTableAction(action, selected);
|
|
1644
|
+
}
|
|
1645
|
+
break;
|
|
1646
|
+
default:
|
|
1647
|
+
// do nothing if mode is NONE (or null)
|
|
1648
|
+
return;
|
|
1557
1649
|
}
|
|
1558
1650
|
}
|
|
1559
1651
|
onSortingEvent(sortingParams) {
|
|
1560
1652
|
this.sortEvent.emit(sortingParams);
|
|
1561
1653
|
}
|
|
1654
|
+
onPaginationEvent(event) {
|
|
1655
|
+
this.pagingEvent.emit(event);
|
|
1656
|
+
}
|
|
1562
1657
|
onTableAction(tableAction) {
|
|
1563
1658
|
if (!!tableAction) {
|
|
1564
|
-
|
|
1659
|
+
const selection = [];
|
|
1660
|
+
for (const selected of this.selectionModel.selected) {
|
|
1661
|
+
selection.push(this.idGenerator ? selected : this.actualDataMap.get(selected));
|
|
1662
|
+
}
|
|
1663
|
+
tableAction.selected = selection;
|
|
1664
|
+
this.actionEvent.emit(tableAction);
|
|
1565
1665
|
}
|
|
1566
1666
|
}
|
|
1567
|
-
|
|
1568
|
-
|
|
1667
|
+
static transformData(value, transformer, transformerParams) {
|
|
1668
|
+
if (!transformer || !(transformer instanceof Function)) {
|
|
1669
|
+
return value;
|
|
1670
|
+
}
|
|
1671
|
+
return transformer(value, transformerParams);
|
|
1569
1672
|
}
|
|
1570
|
-
|
|
1673
|
+
static generateRowId() {
|
|
1674
|
+
return v4();
|
|
1675
|
+
}
|
|
1676
|
+
static isClickOnRowMenuIcon(event) {
|
|
1571
1677
|
var _a;
|
|
1572
|
-
return (_a = event === null || event === void 0 ? void 0 : event.target) === null || _a === void 0 ? void 0 : _a.classList.contains(
|
|
1678
|
+
return (_a = event === null || event === void 0 ? void 0 : event.target) === null || _a === void 0 ? void 0 : _a.classList.contains("mat-icon");
|
|
1679
|
+
}
|
|
1680
|
+
emitTableAction(action, selected) {
|
|
1681
|
+
const emitAction = Object.assign({}, action);
|
|
1682
|
+
if (action.type !== this.NONE) {
|
|
1683
|
+
emitAction.selected = [...selected];
|
|
1684
|
+
}
|
|
1685
|
+
this.actionEvent.emit(emitAction);
|
|
1686
|
+
}
|
|
1687
|
+
generateDisplayedDataElement(rowId, actualDataElement) {
|
|
1688
|
+
const displayedDataElement = {};
|
|
1689
|
+
displayedDataElement["rowId"] = rowId;
|
|
1690
|
+
for (const column of this.columns) {
|
|
1691
|
+
const actualValue = actualDataElement[column.dataPropertyName];
|
|
1692
|
+
displayedDataElement[column.dataPropertyName] = DataTableComponent.transformData(actualValue, column.transformer, column.transformerParams);
|
|
1693
|
+
}
|
|
1694
|
+
return displayedDataElement;
|
|
1695
|
+
}
|
|
1696
|
+
setActions() {
|
|
1697
|
+
this.rowActions = [];
|
|
1698
|
+
this.tableActions = [];
|
|
1699
|
+
for (const action of this.actions) {
|
|
1700
|
+
if (this.mode !== action.hiddenInMode) {
|
|
1701
|
+
switch (action.type) {
|
|
1702
|
+
case this.SINGLE:
|
|
1703
|
+
if (this.mode === this.SINGLE) {
|
|
1704
|
+
this.rowActions.push(action);
|
|
1705
|
+
}
|
|
1706
|
+
else {
|
|
1707
|
+
this.tableActions.push(action);
|
|
1708
|
+
}
|
|
1709
|
+
break;
|
|
1710
|
+
case this.BATCH:
|
|
1711
|
+
if (this.mode !== this.SINGLE) {
|
|
1712
|
+
this.tableActions.push(action);
|
|
1713
|
+
}
|
|
1714
|
+
break;
|
|
1715
|
+
default:
|
|
1716
|
+
this.tableActions.push(action);
|
|
1717
|
+
}
|
|
1718
|
+
}
|
|
1719
|
+
}
|
|
1720
|
+
}
|
|
1721
|
+
createDataMapsAndSetDisplayedDataSourceData(data) {
|
|
1722
|
+
const displayedDataList = [];
|
|
1723
|
+
this.actualDataMap.clear();
|
|
1724
|
+
this.displayedDataMap.clear();
|
|
1725
|
+
for (const dataEntry of data) {
|
|
1726
|
+
const rowId = (this.idGenerator) ? this.idGenerator(dataEntry) : DataTableComponent.generateRowId();
|
|
1727
|
+
this.actualDataMap.set(rowId, dataEntry);
|
|
1728
|
+
const displayedDataElement = this.generateDisplayedDataElement(rowId, dataEntry);
|
|
1729
|
+
this.displayedDataMap.set(rowId, displayedDataElement);
|
|
1730
|
+
displayedDataList.push(displayedDataElement);
|
|
1731
|
+
}
|
|
1732
|
+
this.dataSource.data = displayedDataList;
|
|
1733
|
+
}
|
|
1734
|
+
getTableMode() {
|
|
1735
|
+
if (this._forceMode) {
|
|
1736
|
+
return this._forceMode;
|
|
1737
|
+
}
|
|
1738
|
+
if (!this.actions) {
|
|
1739
|
+
return this.NONE;
|
|
1740
|
+
}
|
|
1741
|
+
const distinctActionTypes = new Set();
|
|
1742
|
+
for (const rowAction of this.actions) {
|
|
1743
|
+
distinctActionTypes.add(rowAction.type);
|
|
1744
|
+
}
|
|
1745
|
+
if (distinctActionTypes.has(this.BATCH)) {
|
|
1746
|
+
return this.BATCH;
|
|
1747
|
+
}
|
|
1748
|
+
if (distinctActionTypes.has(this.SINGLE)) {
|
|
1749
|
+
return this.SINGLE;
|
|
1750
|
+
}
|
|
1751
|
+
return this.NONE;
|
|
1573
1752
|
}
|
|
1574
1753
|
}
|
|
1575
1754
|
DataTableComponent.decorators = [
|
|
1576
1755
|
{ type: Component, args: [{
|
|
1577
|
-
selector:
|
|
1578
|
-
template: "<!-- Table actions -->\n<div *ngIf=\"tableActions?.length\">\n
|
|
1579
|
-
styles: [".text-right{padding-right:24px!important;text-align:right!important}.table-action{margin-bottom:.5em;margin-right:.5em}.row-action-button{width:10px}.noDataText{text-align:center;width:100%}.mad-table{overflow-x:auto;width:100
|
|
1756
|
+
selector: "mad-data-table",
|
|
1757
|
+
template: "<div class=\"mad-datatable-action-bar\">\n <!-- Table actions: displayed before the table -->\n <div *ngIf=\"tableActions?.length\">\n <mad-outline-button\n [disabled]=\"isDisabled(tableAction.type)\"\n class=\"table-action\"\n *ngFor=\"let tableAction of tableActions\"\n (click)=\"onTableAction(tableAction)\">\n {{ tableAction.label | translate }} {{ getSelectedCount(tableAction.type) }}\n </mad-outline-button>\n </div>\n <!-- Table filter -->\n <mat-form-field *ngIf=\"isFilterEnabled\">\n <mat-label>{{ filterLabel | translate }}</mat-label>\n <input matInput autocomplete=\"off\" (keyup)=\"setFilterValue($event?.target?.value)\"\n placeholder=\"{{ filterPlaceholder }}\" />\n </mat-form-field>\n</div>\n\n\n<!-- Row action menu -->\n<mat-menu #rowActionMenu=\"matMenu\">\n <ng-template matMenuContent let-element=\"element\">\n <button *ngFor=\"let rowAction of rowActions\" mat-menu-item class=\"row-action\"\n (click)=\"onRowEvent($event, element, rowAction)\">\n {{ rowAction.label | translate }}\n </button>\n </ng-template>\n</mat-menu>\n\n<!-- Table -->\n<div *ngIf=\"rowCount > 0; else noData\" class=\"mad-table\">\n <div class=\"datatable-spinner-wrapper\" *ngIf=\"isLoading\">\n <mat-spinner [diameter]=\"50\" [strokeWidth]=\"3\"></mat-spinner>\n </div>\n\n <table mat-table [dataSource]=\"dataSource\" matSort (matSortChange)=\"onSortingEvent($event)\">\n <!-- Row actions column-->\n <ng-container [matColumnDef]=\"ACTION_COLUMN_NAME\">\n <th scope=\"col\" mat-header-cell *matHeaderCellDef class=\"row-action-button\">\n <!-- BATCH: master checkbox -->\n <div *ngIf=\"mode === BATCH\" class=\"mad-datatable-checkbox-container\">\n <mat-checkbox\n (change)=\"onToggleSelectAll()\"\n [checked]=\"allSelected\"\n >\n </mat-checkbox>\n </div>\n <!-- SINGLE / NONE: nothing in header row -->\n </th>\n <td mat-cell *matCellDef=\"let element\" class=\"row-action-button\">\n <!-- BATCH: row checkbox -->\n <div *ngIf=\"mode === BATCH\" class=\"mad-datatable-checkbox-container\">\n <mat-checkbox\n (click)=\"onRowCheckbox($event, element.rowId)\"\n [checked]=\"isSelected(element.rowId)\"\n >\n </mat-checkbox>\n </div>\n <!-- SINGLE: row action menu icon -->\n <mad-icon-button\n *ngIf=\"mode === SINGLE\"\n [matMenuTriggerData]=\"{ element: element }\" [matMenuTriggerFor]=\"rowActionMenu\"\n >\n <mat-icon>more_vert</mat-icon>\n </mad-icon-button>\n <!-- NONE: nothing -->\n </td>\n </ng-container>\n <!-- Columns with data -->\n <ng-container *ngFor=\"let column of columns\" [matColumnDef]=\"column.label\">\n <ng-container *ngIf=\"column.isSortable; else noSort\">\n <th\n scope=\"col\"\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header=\"{{ column.label | translate}}\"\n [arrowPosition]=\"column.isRightAligned ? 'before' : 'after'\"\n [class.text-right]=\"column.isRightAligned\"\n >\n {{ column.label }}\n </th>\n </ng-container>\n <ng-template #noSort>\n <th scope=\"col\" mat-header-cell *matHeaderCellDef [class.text-right]=\"column.isRightAligned\">\n {{ column.label }}\n </th>\n </ng-template>\n <td mat-cell *matCellDef=\"let element\" [class.text-right]=\"column.isRightAligned\" [ngSwitch]=\"column.transformer\">\n <span>\n {{ element[column.dataPropertyName] }}\n </span>\n </td>\n </ng-container>\n <tr mat-header-row *matHeaderRowDef=\"columnNames\"></tr>\n <tr\n mat-row\n [class.clickable-table-row]=\"isRowClickable\"\n (click)=\"onRowEvent($event, row)\"\n *matRowDef=\"let row; columns: columnNames\"\n ></tr>\n </table>\n\n <!-- Pagination -->\n <mat-paginator\n [style.display]=\"isPaginationEnabled ? 'block' : 'none'\"\n [pageSize]=\"defaultPageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"onPaginationEvent($event)\"\n showFirstLastButtons\n >\n </mat-paginator>\n</div>\n\n<!-- No data alert -->\n<ng-template #noData>\n <div class=\"noDataText\">\n <div class=\"datatable-spinner-wrapper\" *ngIf=\"isLoading\">\n <mat-spinner [diameter]=\"50\" [strokeWidth]=\"3\"></mat-spinner>\n </div>\n {{ noDataText }}\n </div>\n</ng-template>\n",
|
|
1758
|
+
styles: [".text-right{padding-right:24px!important;text-align:right!important}.table-action{margin-bottom:.5em;margin-right:.5em}.row-action-button{width:10px}.noDataText{text-align:center}.mad-table,.noDataText{position:relative;width:100%}.mad-table{overflow-x:auto}.mad-datatable-action-bar{align-items:baseline;display:flex;justify-content:space-between}.mad-datatable-checkbox-container{margin-right:16px}.datatable-spinner-wrapper{align-items:center;background-color:#fff;display:flex;height:100%;justify-content:center;left:0;opacity:.8;pointer-events:unset;position:absolute;top:0;width:100%;z-index:99999}"]
|
|
1580
1759
|
},] }
|
|
1581
1760
|
];
|
|
1582
1761
|
DataTableComponent.propDecorators = {
|
|
@@ -1586,14 +1765,16 @@ DataTableComponent.propDecorators = {
|
|
|
1586
1765
|
noDataText: [{ type: Input }],
|
|
1587
1766
|
pageSizeOptions: [{ type: Input }],
|
|
1588
1767
|
defaultPageSize: [{ type: Input }],
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1768
|
+
actions: [{ type: Input }],
|
|
1769
|
+
idGenerator: [{ type: Input }],
|
|
1770
|
+
tableData: [{ type: Input }],
|
|
1771
|
+
loading: [{ type: Input }],
|
|
1592
1772
|
paginationEnabled: [{ type: Input }],
|
|
1593
1773
|
filterEnabled: [{ type: Input }],
|
|
1594
|
-
|
|
1595
|
-
rowAction: [{ type: Output }],
|
|
1774
|
+
forceMode: [{ type: Input }],
|
|
1596
1775
|
sortEvent: [{ type: Output }],
|
|
1776
|
+
actionEvent: [{ type: Output }],
|
|
1777
|
+
pagingEvent: [{ type: Output }],
|
|
1597
1778
|
paginator: [{ type: ViewChild, args: [MatPaginator, { static: false },] }],
|
|
1598
1779
|
sort: [{ type: ViewChild, args: [MatSort, { static: true },] }]
|
|
1599
1780
|
};
|
|
@@ -1613,9 +1794,13 @@ DataTableModule.decorators = [
|
|
|
1613
1794
|
MatPaginatorModule,
|
|
1614
1795
|
MatSortModule,
|
|
1615
1796
|
MatTableModule,
|
|
1797
|
+
MatProgressSpinnerModule,
|
|
1616
1798
|
ButtonModule,
|
|
1799
|
+
TranslateModule,
|
|
1800
|
+
MatCheckboxModule,
|
|
1801
|
+
MatBadgeModule
|
|
1617
1802
|
],
|
|
1618
|
-
exports: [DataTableComponent]
|
|
1803
|
+
exports: [DataTableComponent]
|
|
1619
1804
|
},] }
|
|
1620
1805
|
];
|
|
1621
1806
|
|
|
@@ -1725,8 +1910,8 @@ class StepComponent extends CdkStep {
|
|
|
1725
1910
|
ngOnDestroy() {
|
|
1726
1911
|
this._isSelected.unsubscribe();
|
|
1727
1912
|
}
|
|
1728
|
-
next() {
|
|
1729
|
-
this.stepValidation();
|
|
1913
|
+
next(markFormAsTouched = true) {
|
|
1914
|
+
this.stepValidation(markFormAsTouched);
|
|
1730
1915
|
if (this.onNext.observers.length <= 0) {
|
|
1731
1916
|
this.stepper.next();
|
|
1732
1917
|
}
|
|
@@ -1743,7 +1928,7 @@ class StepComponent extends CdkStep {
|
|
|
1743
1928
|
this.onHeaderClick.emit(index);
|
|
1744
1929
|
}
|
|
1745
1930
|
completeLast() {
|
|
1746
|
-
this.stepValidation();
|
|
1931
|
+
this.stepValidation(true);
|
|
1747
1932
|
this.stepClosed = true;
|
|
1748
1933
|
if (this.onDone.observers.length <= 0) {
|
|
1749
1934
|
this.stepper.next();
|
|
@@ -1755,9 +1940,11 @@ class StepComponent extends CdkStep {
|
|
|
1755
1940
|
this.completed = true;
|
|
1756
1941
|
this.state = STEP_STATE.DONE;
|
|
1757
1942
|
}
|
|
1758
|
-
stepValidation() {
|
|
1943
|
+
stepValidation(markFormAsTouched) {
|
|
1759
1944
|
var _a, _b;
|
|
1760
|
-
(
|
|
1945
|
+
if (markFormAsTouched) {
|
|
1946
|
+
(_a = this.stepControl) === null || _a === void 0 ? void 0 : _a.markAllAsTouched();
|
|
1947
|
+
}
|
|
1761
1948
|
if ((_b = this.stepControl) === null || _b === void 0 ? void 0 : _b.valid) {
|
|
1762
1949
|
this.hasError = false;
|
|
1763
1950
|
this.completed = true;
|
|
@@ -1995,6 +2182,10 @@ class FlowbarComponent {
|
|
|
1995
2182
|
ngAfterViewInit() {
|
|
1996
2183
|
this.stepper._getIndicatorType = () => 'number';
|
|
1997
2184
|
}
|
|
2185
|
+
getIndexForActiveStep() {
|
|
2186
|
+
const selectedIndex = this._steps.indexOf(this._activeStep);
|
|
2187
|
+
return selectedIndex === -1 ? 0 : selectedIndex;
|
|
2188
|
+
}
|
|
1998
2189
|
changeActiveStep(step) {
|
|
1999
2190
|
const previousIndex = this._steps.indexOf(this._activeStep);
|
|
2000
2191
|
this._activeStep = step;
|
|
@@ -2136,8 +2327,8 @@ class FlowbarComponent {
|
|
|
2136
2327
|
FlowbarComponent.decorators = [
|
|
2137
2328
|
{ type: Component, args: [{
|
|
2138
2329
|
selector: 'mad-flowbar',
|
|
2139
|
-
template: "<div class=\"stepper-container\">\n <mat-horizontal-stepper #stepper (click)=\"triggerClick()\">\n <mat-step *ngFor=\"let step of _steps\" [aria-labelledby]=\"!step.enabled ? 'disabled' : null\">\n <ng-template matStepLabel>\n <div class=\"step-header-overlay\" *ngIf=\"this._headerClick.observers.length > 0\" (click)=\"headerClick($event, step)\"></div>\n <span>{{step.label}}</span>\n </ng-template>\n </mat-step>\n </mat-horizontal-stepper>\n</div>\n",
|
|
2140
|
-
styles: [".stepper-container{display:flex;padding:0 1rem}::ng-deep .mat-stepper-horizontal .mat-horizontal-stepper-header{height:auto;padding:0}::ng-deep .mat-step-header[aria-labelledby=disabled]{cursor:not-allowed;pointer-events:none!important}::ng-deep .mat-stepper-horizontal .mat-horizontal-content-container{padding:0 0 10px}::ng-deep .mat-stepper-horizontal .mat-stepper-horizontal-line{border-top-width:4px;margin:0 5px}.step-header-overlay{height:100%;position:absolute;width:100%}"]
|
|
2330
|
+
template: "<div class=\"stepper-container\">\n <mat-horizontal-stepper #stepper [selectedIndex]=\"this.getIndexForActiveStep()\" (click)=\"triggerClick()\">\n <mat-step *ngFor=\"let step of _steps\" [aria-labelledby]=\"!step.enabled ? 'disabled' : null\">\n <ng-template matStepLabel>\n <div class=\"step-header-overlay\" *ngIf=\"this._headerClick.observers.length > 0\" (click)=\"headerClick($event, step)\"></div>\n <span>{{step.label}}</span>\n </ng-template>\n </mat-step>\n </mat-horizontal-stepper>\n</div>\n",
|
|
2331
|
+
styles: [".stepper-container{display:flex;padding:0 1rem}::ng-deep .mat-stepper-horizontal .mat-horizontal-stepper-header{height:auto;padding:0}::ng-deep .mat-step-header[aria-labelledby=disabled]{cursor:not-allowed;pointer-events:none!important}::ng-deep .mat-stepper-horizontal .mat-horizontal-content-container{padding:0 0 10px}::ng-deep .mat-stepper-horizontal .mat-stepper-horizontal-line{border-top-width:4px;margin:0 5px}.step-header-overlay{height:100%;position:absolute;right:0;top:0;width:100%}"]
|
|
2141
2332
|
},] }
|
|
2142
2333
|
];
|
|
2143
2334
|
FlowbarComponent.propDecorators = {
|