@muziehdesign/components 18.3.0-beta.2385 → 19.2.0-beta.2377

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.
Files changed (55) hide show
  1. package/esm2022/lib/alert/alert.component.mjs +46 -0
  2. package/esm2022/lib/button.directive.mjs +86 -0
  3. package/esm2022/lib/components.module.mjs +130 -0
  4. package/esm2022/lib/date-display/date-display-config.mjs +12 -0
  5. package/esm2022/lib/date-display/date-display.pipe.mjs +35 -0
  6. package/esm2022/lib/date-display/date.pipe.mjs +41 -0
  7. package/esm2022/lib/date-time/date-time.component.mjs +139 -0
  8. package/esm2022/lib/date-time/time-value.mjs +2 -0
  9. package/esm2022/lib/dialog/container/drawer-container.component.mjs +57 -0
  10. package/esm2022/lib/dialog/dialog-config.mjs +50 -0
  11. package/esm2022/lib/dialog/dialog-injectors.mjs +5 -0
  12. package/esm2022/lib/dialog/dialog-ref.mjs +57 -0
  13. package/esm2022/lib/dialog/dialog.module.mjs +25 -0
  14. package/esm2022/lib/dialog/mz-dialog.service.mjs +108 -0
  15. package/esm2022/lib/dropdown/dropdown-item.directive.mjs +28 -0
  16. package/esm2022/lib/dropdown/dropdown.component.mjs +27 -0
  17. package/esm2022/lib/dropdown/dropdown.module.mjs +17 -0
  18. package/esm2022/lib/enum-display/enum-display.pipe.mjs +48 -0
  19. package/esm2022/lib/filter/filter-option.model.mjs +2 -0
  20. package/esm2022/lib/filter/filter.component.mjs +42 -0
  21. package/esm2022/lib/guard-deactivate.mjs +14 -0
  22. package/esm2022/lib/infinite-scroll/infinite-scroll.component.mjs +45 -0
  23. package/esm2022/lib/inline-edit/inline-edit.component.mjs +65 -0
  24. package/esm2022/lib/models/loading-state.mjs +2 -0
  25. package/esm2022/lib/models/page-event.mjs +2 -0
  26. package/esm2022/lib/models/result-table-options.mjs +2 -0
  27. package/esm2022/lib/models/sort-event.mjs +2 -0
  28. package/esm2022/lib/models/subject.mjs +2 -0
  29. package/esm2022/lib/models/wizard-step-link.mjs +2 -0
  30. package/esm2022/lib/options-filter/options-filter.component.mjs +66 -0
  31. package/esm2022/lib/page-header/page-header.component.mjs +27 -0
  32. package/esm2022/lib/page-loading-indicator/page-loading-indicator.component.mjs +32 -0
  33. package/esm2022/lib/pagination/pagination-default-options.mjs +2 -0
  34. package/esm2022/lib/pagination/pagination-default-options.token.mjs +3 -0
  35. package/esm2022/lib/pagination/pagination.component.mjs +90 -0
  36. package/esm2022/lib/phone-number/phone-number.pipe.mjs +24 -0
  37. package/esm2022/lib/result-table/result-table.component.mjs +65 -0
  38. package/esm2022/lib/result-table/result-table.model.mjs +2 -0
  39. package/esm2022/lib/sort-key.directive.mjs +91 -0
  40. package/esm2022/lib/sort.directive.mjs +34 -0
  41. package/esm2022/lib/spinner/spinner.component.mjs +21 -0
  42. package/esm2022/lib/subject-display/subject-display.pipe.mjs +20 -0
  43. package/esm2022/lib/svg-icon/svg-icon-config.mjs +10 -0
  44. package/esm2022/lib/svg-icon/svg-icon.component.mjs +39 -0
  45. package/esm2022/lib/testing/muzieh-component-harness.mjs +3 -0
  46. package/esm2022/lib/testing/result-table-harness.mjs +66 -0
  47. package/esm2022/lib/time-value-accessor.directive.mjs +57 -0
  48. package/esm2022/lib/time-value-validator.directive.mjs +37 -0
  49. package/esm2022/lib/wizard-progress-tracker/wizard-progress-tracker.component.mjs +32 -0
  50. package/esm2022/muziehdesign-components.mjs +5 -0
  51. package/esm2022/public-api.mjs +53 -0
  52. package/fesm2022/muziehdesign-components.mjs +108 -108
  53. package/fesm2022/muziehdesign-components.mjs.map +1 -1
  54. package/lib/dialog/dialog-injectors.d.ts +1 -1
  55. package/package.json +6 -4
@@ -0,0 +1,65 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, ContentChild, EventEmitter, Input, Output, TemplateRef } from '@angular/core';
3
+ import { PaginationComponent } from '../pagination/pagination.component';
4
+ import { SpinnerComponent } from '../spinner/spinner.component';
5
+ import { SvgIconComponent } from '../svg-icon/svg-icon.component';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common";
8
+ export class ResultTableComponent {
9
+ constructor() {
10
+ this.loading = false;
11
+ this.pageSizeOptions = [20, 50, 100];
12
+ this.pageChange = new EventEmitter();
13
+ this.options = { hidePagination: false, skipScrolling: false };
14
+ }
15
+ ngAfterViewInit() {
16
+ }
17
+ changePage(page, table) {
18
+ this.pageChange.emit(page);
19
+ if (!this.options.skipScrolling) {
20
+ setTimeout(() => {
21
+ table.scrollIntoView({ behavior: 'smooth', block: 'start' });
22
+ });
23
+ }
24
+ }
25
+ searchAgain() {
26
+ this.pageChange.emit({ pageNumber: this.model?.pageNumber || 1, pageSize: this.model?.pageSize || 20 }); // TODO
27
+ }
28
+ get state() {
29
+ if (this.loading) {
30
+ return 'loading';
31
+ }
32
+ if (this.error) {
33
+ return 'failed';
34
+ }
35
+ return 'succeeded';
36
+ }
37
+ get isEmpty() {
38
+ return !this.model || this.model.items.length === 0;
39
+ }
40
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: ResultTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
41
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.1", type: ResultTableComponent, isStandalone: true, selector: "mz-result-table", inputs: { loading: "loading", error: "error", model: "model", pageSizeOptions: "pageSizeOptions", options: "options" }, outputs: { pageChange: "pageChange" }, queries: [{ propertyName: "headerTemplate", first: true, predicate: ["headerTemplate"], descendants: true }, { propertyName: "bodyTemplate", first: true, predicate: ["bodyTemplate"], descendants: true }], ngImport: i0, template: "<div class=\"result-table\" [ngClass]=\"{'loading': state === 'loading', 'failed': state === 'failed'}\" #tableRef>\n <div class=\"loading-overlay-spinner\" *ngIf=\"state === 'loading'\">\n <mz-spinner size=\"large\" type=\"primary\"></mz-spinner>\n </div>\n <table class=\"table\" [ngClass]=\"{'has-overlay' : state === 'loading'}\">\n <caption *ngIf=\"state === 'succeeded' && model && model.items.length > 0\">\n {{(model.pageNumber-1) * model.pageSize + 1}} - {{(model.pageNumber-1) * model.pageSize + model.items.length}} of {{ model.totalItems }} results\n </caption>\n <thead>\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </thead>\n <tbody>\n @if(state === 'succeeded' && !isEmpty) {\n <ng-container *ngTemplateOutlet=\"bodyTemplate\"></ng-container>\n }\n </tbody>\n </table>\n <div class=\"table-pagination\" *ngIf=\"state === 'succeeded' && !options?.hidePagination && !isEmpty\">\n <mz-pagination [length]=\"model!.totalItems\" [page]=\"model!.pageNumber\" [pageSize]=\"model!.pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (changePage)=\"changePage($event, tableRef)\"></mz-pagination>\n </div>\n <div class=\"state-message\" *ngIf=\"state == 'succeeded' && isEmpty\">\n <div class=\"title\">No results found</div>\n </div>\n <div class=\"state-message\" *ngIf=\"state == 'failed'\">\n <div class=\"title\">\n <mz-svg-icon key=\"x-circle\" type=\"solid\" class=\"text-danger\"></mz-svg-icon>\n Something went wrong\n </div>\n <div>Unexpected error, <a (click)=\"searchAgain()\" class=\"link-action\">try searching again</a>.</div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PaginationComponent, selector: "mz-pagination", inputs: ["length", "page", "pageSize", "pageSizeOptions"], outputs: ["changePage"] }, { kind: "component", type: SpinnerComponent, selector: "mz-spinner", inputs: ["size", "type"] }, { kind: "component", type: SvgIconComponent, selector: "mz-svg-icon", inputs: ["key", "type", "size"] }] }); }
42
+ }
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: ResultTableComponent, decorators: [{
44
+ type: Component,
45
+ args: [{ selector: 'mz-result-table', imports: [CommonModule, PaginationComponent, SpinnerComponent, SvgIconComponent], standalone: true, template: "<div class=\"result-table\" [ngClass]=\"{'loading': state === 'loading', 'failed': state === 'failed'}\" #tableRef>\n <div class=\"loading-overlay-spinner\" *ngIf=\"state === 'loading'\">\n <mz-spinner size=\"large\" type=\"primary\"></mz-spinner>\n </div>\n <table class=\"table\" [ngClass]=\"{'has-overlay' : state === 'loading'}\">\n <caption *ngIf=\"state === 'succeeded' && model && model.items.length > 0\">\n {{(model.pageNumber-1) * model.pageSize + 1}} - {{(model.pageNumber-1) * model.pageSize + model.items.length}} of {{ model.totalItems }} results\n </caption>\n <thead>\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </thead>\n <tbody>\n @if(state === 'succeeded' && !isEmpty) {\n <ng-container *ngTemplateOutlet=\"bodyTemplate\"></ng-container>\n }\n </tbody>\n </table>\n <div class=\"table-pagination\" *ngIf=\"state === 'succeeded' && !options?.hidePagination && !isEmpty\">\n <mz-pagination [length]=\"model!.totalItems\" [page]=\"model!.pageNumber\" [pageSize]=\"model!.pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (changePage)=\"changePage($event, tableRef)\"></mz-pagination>\n </div>\n <div class=\"state-message\" *ngIf=\"state == 'succeeded' && isEmpty\">\n <div class=\"title\">No results found</div>\n </div>\n <div class=\"state-message\" *ngIf=\"state == 'failed'\">\n <div class=\"title\">\n <mz-svg-icon key=\"x-circle\" type=\"solid\" class=\"text-danger\"></mz-svg-icon>\n Something went wrong\n </div>\n <div>Unexpected error, <a (click)=\"searchAgain()\" class=\"link-action\">try searching again</a>.</div>\n </div>\n</div>\n" }]
46
+ }], ctorParameters: () => [], propDecorators: { loading: [{
47
+ type: Input
48
+ }], error: [{
49
+ type: Input
50
+ }], model: [{
51
+ type: Input
52
+ }], headerTemplate: [{
53
+ type: ContentChild,
54
+ args: ['headerTemplate']
55
+ }], bodyTemplate: [{
56
+ type: ContentChild,
57
+ args: ['bodyTemplate']
58
+ }], pageSizeOptions: [{
59
+ type: Input
60
+ }], pageChange: [{
61
+ type: Output
62
+ }], options: [{
63
+ type: Input
64
+ }] } });
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9yZXN1bHQtdGFibGUvcmVzdWx0LXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9yZXN1bHQtdGFibGUvcmVzdWx0LXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR2pILE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7QUFVbEUsTUFBTSxPQUFPLG9CQUFvQjtJQWM3QjtRQVpnQixZQUFPLEdBQVksS0FBSyxDQUFDO1FBT2hDLG9CQUFlLEdBQWEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBYSxDQUFDO1FBRTVDLFlBQU8sR0FBdUIsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUUvRSxDQUFDO0lBRWhCLGVBQWU7SUFFZixDQUFDO0lBRUQsVUFBVSxDQUFDLElBQWUsRUFBRSxLQUFrQjtRQUMxQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM3QixVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNaLEtBQUssQ0FBQyxjQUFjLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQ2pFLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTztJQUNwSCxDQUFDO0lBRUQsSUFBVyxLQUFLO1FBQ1osSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDZixPQUFPLFNBQVMsQ0FBQztRQUNyQixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDYixPQUFPLFFBQVEsQ0FBQztRQUNwQixDQUFDO1FBRUQsT0FBTyxXQUFXLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQVcsT0FBTztRQUNkLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7SUFDeEQsQ0FBQzs4R0E5Q1Esb0JBQW9CO2tHQUFwQixvQkFBb0IsdWJDaEJqQyxveERBaUNBLHlERHBCYyxZQUFZLHdZQUFFLG1CQUFtQiw4SUFBRSxnQkFBZ0IsaUZBQUUsZ0JBQWdCOzsyRkFHdEUsb0JBQW9CO2tCQVBoQyxTQUFTOytCQUNJLGlCQUFpQixXQUdsQixDQUFDLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQyxjQUNwRSxJQUFJO3dEQUlBLE9BQU87c0JBQXRCLEtBQUs7Z0JBQ1UsS0FBSztzQkFBcEIsS0FBSztnQkFDVSxLQUFLO3NCQUFwQixLQUFLO2dCQUUwQixjQUFjO3NCQUE3QyxZQUFZO3VCQUFDLGdCQUFnQjtnQkFDQSxZQUFZO3NCQUF6QyxZQUFZO3VCQUFDLGNBQWM7Z0JBRW5CLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ1csVUFBVTtzQkFBMUIsTUFBTTtnQkFFUyxPQUFPO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQYWdlRXZlbnQgfSBmcm9tICcuLi9tb2RlbHMvcGFnZS1ldmVudCc7XG5pbXBvcnQgeyBSZXN1bHRUYWJsZU9wdGlvbnMgfSBmcm9tICcuLi9tb2RlbHMvcmVzdWx0LXRhYmxlLW9wdGlvbnMnO1xuaW1wb3J0IHsgUGFnaW5hdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3Bpbm5lckNvbXBvbmVudCB9IGZyb20gJy4uL3NwaW5uZXIvc3Bpbm5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3ZnSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL3N2Zy1pY29uL3N2Zy1pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZXN1bHRUYWJsZU1vZGVsIH0gZnJvbSAnLi9yZXN1bHQtdGFibGUubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ216LXJlc3VsdC10YWJsZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Jlc3VsdC10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vcmVzdWx0LXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUGFnaW5hdGlvbkNvbXBvbmVudCwgU3Bpbm5lckNvbXBvbmVudCwgU3ZnSWNvbkNvbXBvbmVudF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgUmVzdWx0VGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcblxuICAgIEBJbnB1dCgpIHB1YmxpYyBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgcHVibGljIGVycm9yPzogRXJyb3I7XG4gICAgQElucHV0KCkgcHVibGljIG1vZGVsOiBSZXN1bHRUYWJsZU1vZGVsPGFueT4gfCB1bmRlZmluZWQgfCBudWxsO1xuXG4gICAgQENvbnRlbnRDaGlsZCgnaGVhZGVyVGVtcGxhdGUnKSBoZWFkZXJUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgQENvbnRlbnRDaGlsZCgnYm9keVRlbXBsYXRlJykgYm9keVRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBJbnB1dCgpIHBhZ2VTaXplT3B0aW9uczogbnVtYmVyW10gPSBbMjAsIDUwLCAxMDBdO1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgcGFnZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnZUV2ZW50PigpO1xuXG4gICAgQElucHV0KCkgcHVibGljIG9wdGlvbnM6IFJlc3VsdFRhYmxlT3B0aW9ucyA9IHsgaGlkZVBhZ2luYXRpb246IGZhbHNlLCBza2lwU2Nyb2xsaW5nOiBmYWxzZSB9O1xuXG4gICAgY29uc3RydWN0b3IoKSB7fVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuXG4gICAgfVxuXG4gICAgY2hhbmdlUGFnZShwYWdlOiBQYWdlRXZlbnQsIHRhYmxlOiBIVE1MRWxlbWVudCkge1xuICAgICAgICB0aGlzLnBhZ2VDaGFuZ2UuZW1pdChwYWdlKTtcbiAgICAgICAgaWYoIXRoaXMub3B0aW9ucy5za2lwU2Nyb2xsaW5nKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0YWJsZS5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICdzdGFydCcgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNlYXJjaEFnYWluKCkge1xuICAgICAgICB0aGlzLnBhZ2VDaGFuZ2UuZW1pdCh7IHBhZ2VOdW1iZXI6IHRoaXMubW9kZWw/LnBhZ2VOdW1iZXIgfHwgMSwgcGFnZVNpemU6IHRoaXMubW9kZWw/LnBhZ2VTaXplIHx8IDIwIH0pOyAvLyBUT0RPXG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzdGF0ZSgpOiAnbG9hZGluZycgfCAnZmFpbGVkJyB8ICdzdWNjZWVkZWQnIHtcbiAgICAgICAgaWYgKHRoaXMubG9hZGluZykge1xuICAgICAgICAgICAgcmV0dXJuICdsb2FkaW5nJztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5lcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICdzdWNjZWVkZWQnO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNFbXB0eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLm1vZGVsIHx8IHRoaXMubW9kZWwuaXRlbXMubGVuZ3RoID09PSAwO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJyZXN1bHQtdGFibGVcIiBbbmdDbGFzc109XCJ7J2xvYWRpbmcnOiBzdGF0ZSA9PT0gJ2xvYWRpbmcnLCAnZmFpbGVkJzogc3RhdGUgPT09ICdmYWlsZWQnfVwiICN0YWJsZVJlZj5cbiAgICA8ZGl2IGNsYXNzPVwibG9hZGluZy1vdmVybGF5LXNwaW5uZXJcIiAqbmdJZj1cInN0YXRlID09PSAnbG9hZGluZydcIj5cbiAgICAgICAgPG16LXNwaW5uZXIgc2l6ZT1cImxhcmdlXCIgdHlwZT1cInByaW1hcnlcIj48L216LXNwaW5uZXI+XG4gICAgPC9kaXY+XG4gICAgPHRhYmxlIGNsYXNzPVwidGFibGVcIiBbbmdDbGFzc109XCJ7J2hhcy1vdmVybGF5JyA6IHN0YXRlID09PSAnbG9hZGluZyd9XCI+XG4gICAgICAgIDxjYXB0aW9uICpuZ0lmPVwic3RhdGUgPT09ICdzdWNjZWVkZWQnICYmIG1vZGVsICYmIG1vZGVsLml0ZW1zLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgIHt7KG1vZGVsLnBhZ2VOdW1iZXItMSkgKiBtb2RlbC5wYWdlU2l6ZSArIDF9fSAtIHt7KG1vZGVsLnBhZ2VOdW1iZXItMSkgKiBtb2RlbC5wYWdlU2l6ZSArIG1vZGVsLml0ZW1zLmxlbmd0aH19IG9mIHt7IG1vZGVsLnRvdGFsSXRlbXMgfX0gcmVzdWx0c1xuICAgICAgICA8L2NhcHRpb24+XG4gICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3RoZWFkPlxuICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICBAaWYoc3RhdGUgPT09ICdzdWNjZWVkZWQnICYmICFpc0VtcHR5KSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJvZHlUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L3Rib2R5PlxuICAgIDwvdGFibGU+XG4gICAgPGRpdiBjbGFzcz1cInRhYmxlLXBhZ2luYXRpb25cIiAqbmdJZj1cInN0YXRlID09PSAnc3VjY2VlZGVkJyAmJiAhb3B0aW9ucz8uaGlkZVBhZ2luYXRpb24gJiYgIWlzRW1wdHlcIj5cbiAgICAgICAgPG16LXBhZ2luYXRpb24gW2xlbmd0aF09XCJtb2RlbCEudG90YWxJdGVtc1wiIFtwYWdlXT1cIm1vZGVsIS5wYWdlTnVtYmVyXCIgW3BhZ2VTaXplXT1cIm1vZGVsIS5wYWdlU2l6ZVwiXG4gICAgICAgICAgICBbcGFnZVNpemVPcHRpb25zXT1cInBhZ2VTaXplT3B0aW9uc1wiXG4gICAgICAgICAgICAoY2hhbmdlUGFnZSk9XCJjaGFuZ2VQYWdlKCRldmVudCwgdGFibGVSZWYpXCI+PC9tei1wYWdpbmF0aW9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzdGF0ZS1tZXNzYWdlXCIgKm5nSWY9XCJzdGF0ZSA9PSAnc3VjY2VlZGVkJyAmJiBpc0VtcHR5XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPk5vIHJlc3VsdHMgZm91bmQ8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic3RhdGUtbWVzc2FnZVwiICpuZ0lmPVwic3RhdGUgPT0gJ2ZhaWxlZCdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+XG4gICAgICAgICAgICA8bXotc3ZnLWljb24ga2V5PVwieC1jaXJjbGVcIiB0eXBlPVwic29saWRcIiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+PC9tei1zdmctaWNvbj5cbiAgICAgICAgICAgIFNvbWV0aGluZyB3ZW50IHdyb25nXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2PlVuZXhwZWN0ZWQgZXJyb3IsIDxhIChjbGljayk9XCJzZWFyY2hBZ2FpbigpXCIgY2xhc3M9XCJsaW5rLWFjdGlvblwiPnRyeSBzZWFyY2hpbmcgYWdhaW48L2E+LjwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LXRhYmxlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3Jlc3VsdC10YWJsZS9yZXN1bHQtdGFibGUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIlxuZXhwb3J0IHR5cGUgUmVzdWx0VGFibGVNb2RlbDxUPiA9IHtcbiAgICB0b3RhbEl0ZW1zOiBudW1iZXI7XG4gICAgaXRlbXM6IFRbXTtcbiAgICBwYWdlTnVtYmVyOiBudW1iZXI7XG4gICAgcGFnZVNpemU6IG51bWJlcjtcbn1cbiJdfQ==
@@ -0,0 +1,91 @@
1
+ import { Directive, ElementRef, Input, Renderer2 } from '@angular/core';
2
+ import { SortDirective } from './sort.directive';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./sort.directive";
5
+ export class SortKeyDirective {
6
+ constructor(sortable, renderer, hostElement) {
7
+ this.sortable = sortable;
8
+ this.renderer = renderer;
9
+ this.hostElement = hostElement;
10
+ this.order = 'asc';
11
+ this.updatedSort = '';
12
+ }
13
+ ngOnInit() {
14
+ this.addSortClass();
15
+ this.sortable.mzSortOnChange$.subscribe(() => {
16
+ this.updatedSort = this.mzSortKey === this.sortable.active ? this.sortable._mzSort : this.mzSortKey;
17
+ this.setOrder(this.updatedSort);
18
+ if (this.isActive()) {
19
+ this.addActiveClass();
20
+ }
21
+ else {
22
+ this.removeActiveClass();
23
+ }
24
+ });
25
+ }
26
+ onClick($event) {
27
+ // remove active css classes
28
+ this.removeActiveClass();
29
+ // update current sort value (-order, order)
30
+ this.updateSortKeyValue();
31
+ // update parent directive active column and emit output
32
+ this.updateActiveValue();
33
+ // add arrow css clases
34
+ this.addActiveClass();
35
+ }
36
+ getAriaSortAttribute() {
37
+ if (!this.isActive()) {
38
+ return 'none';
39
+ }
40
+ return this.order === 'asc' ? 'ascending' : 'descending';
41
+ }
42
+ updateSortKeyValue() {
43
+ if (this.isActive()) {
44
+ this.updatedSort = this.order === 'desc' ? this.updatedSort.slice(1) : `-${this.updatedSort}`;
45
+ }
46
+ else {
47
+ this.updatedSort = this.mzSortKey;
48
+ }
49
+ this.setOrder(this.updatedSort);
50
+ }
51
+ updateActiveValue() {
52
+ this.sortable.active = this.mzSortKey;
53
+ this.sortable.sort.emit({ sort: this.updatedSort });
54
+ }
55
+ addSortClass() {
56
+ const spanElement = this.renderer.createElement('span');
57
+ spanElement.classList.add("sort-icon");
58
+ this.renderer.appendChild(this.hostElement.nativeElement, spanElement);
59
+ this.renderer.addClass(this.hostElement.nativeElement, 'sort-trigger');
60
+ }
61
+ addActiveClass() {
62
+ this.renderer.addClass(this.hostElement.nativeElement, this.order === 'asc' ? 'sort-ascending' : 'sort-descending');
63
+ }
64
+ removeActiveClass() {
65
+ this.renderer.removeClass(this.hostElement.nativeElement, 'sort-ascending');
66
+ this.renderer.removeClass(this.hostElement.nativeElement, 'sort-descending');
67
+ }
68
+ isActive() {
69
+ return this.mzSortKey === this.sortable.active;
70
+ }
71
+ setOrder(sort) {
72
+ this.order = sort.includes('-') ? 'desc' : 'asc';
73
+ }
74
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: SortKeyDirective, deps: [{ token: i1.SortDirective }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
75
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.1", type: SortKeyDirective, isStandalone: true, selector: "[mzSortKey]", inputs: { mzSortKey: "mzSortKey" }, host: { attributes: { "role": "button" }, listeners: { "click": "onClick()" }, properties: { "attr.aria-sort": "getAriaSortAttribute()" } }, ngImport: i0 }); }
76
+ }
77
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: SortKeyDirective, decorators: [{
78
+ type: Directive,
79
+ args: [{
80
+ selector: '[mzSortKey]',
81
+ host: {
82
+ 'role': 'button',
83
+ '[attr.aria-sort]': 'getAriaSortAttribute()',
84
+ '(click)': 'onClick()',
85
+ },
86
+ standalone: true,
87
+ }]
88
+ }], ctorParameters: () => [{ type: i1.SortDirective }, { type: i0.Renderer2 }, { type: i0.ElementRef }], propDecorators: { mzSortKey: [{
89
+ type: Input
90
+ }] } });
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1rZXkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3NvcnQta2V5LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBZSxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBV2pELE1BQU0sT0FBTyxnQkFBZ0I7SUFLekIsWUFBb0IsUUFBdUIsRUFBVSxRQUFtQixFQUFVLFdBQXVCO1FBQXJGLGFBQVEsR0FBUixRQUFRLENBQWU7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFIekcsVUFBSyxHQUFHLEtBQUssQ0FBQztRQUNkLGdCQUFXLEdBQUcsRUFBRSxDQUFDO0lBRTJGLENBQUM7SUFFN0csUUFBUTtRQUNKLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3pDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDcEcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFaEMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzFCLENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZ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QUM7SUFDckQsQ0FBQzs4R0EvRVEsZ0JBQWdCO2tHQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBVDVCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLElBQUksRUFBRTt3QkFDRixNQUFNLEVBQUUsUUFBUTt3QkFDaEIsa0JBQWtCLEVBQUUsd0JBQXdCO3dCQUM1QyxTQUFTLEVBQUUsV0FBVztxQkFDekI7b0JBQ0QsVUFBVSxFQUFFLElBQUk7aUJBQ25CO21JQUVZLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNvcnREaXJlY3RpdmUgfSBmcm9tICcuL3NvcnQuZGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbbXpTb3J0S2V5XScsXG4gICAgaG9zdDoge1xuICAgICAgICAncm9sZSc6ICdidXR0b24nLFxuICAgICAgICAnW2F0dHIuYXJpYS1zb3J0XSc6ICdnZXRBcmlhU29ydEF0dHJpYnV0ZSgpJyxcbiAgICAgICAgJyhjbGljayknOiAnb25DbGljaygpJyxcbiAgICB9LFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFNvcnRLZXlEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIG16U29ydEtleSE6IHN0cmluZztcbiAgICBvcmRlciA9ICdhc2MnO1xuICAgIHVwZGF0ZWRTb3J0ID0gJyc7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNvcnRhYmxlOiBTb3J0RGlyZWN0aXZlLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsIHByaXZhdGUgaG9zdEVsZW1lbnQ6IEVsZW1lbnRSZWYpIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hZGRTb3J0Q2xhc3MoKTtcbiAgICAgICAgdGhpcy5zb3J0YWJsZS5telNvcnRPbkNoYW5nZSQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlZFNvcnQgPSB0aGlzLm16U29ydEtleSA9PT0gdGhpcy5zb3J0YWJsZS5hY3RpdmUgPyB0aGlzLnNvcnRhYmxlLl9telNvcnQgOiB0aGlzLm16U29ydEtleTtcbiAgICAgICAgICAgIHRoaXMuc2V0T3JkZXIodGhpcy51cGRhdGVkU29ydCk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzQWN0aXZlKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEFjdGl2ZUNsYXNzKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlQWN0aXZlQ2xhc3MoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25DbGljaygkZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIC8vIHJlbW92ZSBhY3RpdmUgY3NzIGNsYXNzZXNcbiAgICAgICAgdGhpcy5yZW1vdmVBY3RpdmVDbGFzcygpO1xuXG4gICAgICAgIC8vIHVwZGF0ZSBjdXJyZW50IHNvcnQgdmFsdWUgKC1vcmRlciwgb3JkZXIpXG4gICAgICAgIHRoaXMudXBkYXRlU29ydEtleVZhbHVlKCk7XG5cbiAgICAgICAgLy8gdXBkYXRlIHBhcmVudCBkaXJlY3RpdmUgYWN0aXZlIGNvbHVtbiBhbmQgZW1pdCBvdXRwdXRcbiAgICAgICAgdGhpcy51cGRhdGVBY3RpdmVWYWx1ZSgpO1xuXG4gICAgICAgIC8vIGFkZCBhcnJvdyBjc3MgY2xhc2VzXG4gICAgICAgIHRoaXMuYWRkQWN0aXZlQ2xhc3MoKTtcbiAgICB9XG5cbiAgICBnZXRBcmlhU29ydEF0dHJpYnV0ZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzQWN0aXZlKCkpIHtcbiAgICAgICAgICAgIHJldHVybiAnbm9uZSc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMub3JkZXIgPT09ICdhc2MnID8gJ2FzY2VuZGluZycgOiAnZGVzY2VuZGluZyc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVTb3J0S2V5VmFsdWUoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzQWN0aXZlKCkpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlZFNvcnQgPSB0aGlzLm9yZGVyID09PSAnZGVzYycgPyB0aGlzLnVwZGF0ZWRTb3J0LnNsaWNlKDEpIDogYC0ke3RoaXMudXBkYXRlZFNvcnR9YDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlZFNvcnQgPSB0aGlzLm16U29ydEtleTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0T3JkZXIodGhpcy51cGRhdGVkU29ydCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVBY3RpdmVWYWx1ZSgpIHtcbiAgICAgICAgdGhpcy5zb3J0YWJsZS5hY3RpdmUgPSB0aGlzLm16U29ydEtleTtcbiAgICAgICAgdGhpcy5zb3J0YWJsZS5zb3J0LmVtaXQoeyBzb3J0OiB0aGlzLnVwZGF0ZWRTb3J0IH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkU29ydENsYXNzKCkge1xuICAgICAgICBjb25zdCBzcGFuRWxlbWVudCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICBzcGFuRWxlbWVudC5jbGFzc0xpc3QuYWRkKFwic29ydC1pY29uXCIpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgc3BhbkVsZW1lbnQpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3NvcnQtdHJpZ2dlcicpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkQWN0aXZlQ2xhc3MoKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LCB0aGlzLm9yZGVyID09PSAnYXNjJyA/ICdzb3J0LWFzY2VuZGluZycgOiAnc29ydC1kZXNjZW5kaW5nJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW1vdmVBY3RpdmVDbGFzcygpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdzb3J0LWFzY2VuZGluZycpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3NvcnQtZGVzY2VuZGluZycpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNBY3RpdmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm16U29ydEtleSA9PT0gdGhpcy5zb3J0YWJsZS5hY3RpdmU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRPcmRlcihzb3J0OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5vcmRlciA9IHNvcnQuaW5jbHVkZXMoJy0nKSA/ICdkZXNjJyA6ICdhc2MnO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,34 @@
1
+ import { Directive, EventEmitter, Input, Output } from '@angular/core';
2
+ import { BehaviorSubject } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export class SortDirective {
5
+ set mzSort(value) {
6
+ this._mzSort = value;
7
+ this.setActiveHeaderSort();
8
+ }
9
+ constructor() {
10
+ this.sort = new EventEmitter();
11
+ this.mzSortOnChange$ = new BehaviorSubject('');
12
+ }
13
+ ngOnChanges() {
14
+ this.mzSortOnChange$.next(this.active);
15
+ }
16
+ setActiveHeaderSort() {
17
+ this.active = this._mzSort.includes('-') ? this._mzSort.slice(1) : this._mzSort;
18
+ }
19
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: SortDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
20
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.1", type: SortDirective, isStandalone: true, selector: "[mzSort]", inputs: { mzSort: "mzSort" }, outputs: { sort: "sort" }, usesOnChanges: true, ngImport: i0 }); }
21
+ }
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: SortDirective, decorators: [{
23
+ type: Directive,
24
+ args: [{
25
+ selector: '[mzSort]',
26
+ standalone: true,
27
+ }]
28
+ }], ctorParameters: () => [], propDecorators: { sort: [{
29
+ type: Output
30
+ }], mzSort: [{
31
+ type: Input,
32
+ args: ['mzSort']
33
+ }] } });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc29ydC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQU92QyxNQUFNLE9BQU8sYUFBYTtJQUd0QixJQUFxQixNQUFNLENBQUMsS0FBYTtRQUNyQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBTUQ7UUFWVSxTQUFJLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQztRQU0vQyxvQkFBZSxHQUFHLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFDO0lBSW5DLENBQUM7SUFFaEIsV0FBVztRQUNQLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsbUJBQW1CO1FBQ2YsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDcEYsQ0FBQzs4R0FwQlEsYUFBYTtrR0FBYixhQUFhOzsyRkFBYixhQUFhO2tCQUp6QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxVQUFVO29CQUNwQixVQUFVLEVBQUUsSUFBSTtpQkFDbkI7d0RBR2EsSUFBSTtzQkFBYixNQUFNO2dCQUNjLE1BQU07c0JBQTFCLEtBQUs7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU29ydEV2ZW50IH0gZnJvbSAnLi9tb2RlbHMvc29ydC1ldmVudCc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW216U29ydF0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFNvcnREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuXG4gICAgQE91dHB1dCgpIHNvcnQgPSBuZXcgRXZlbnRFbWl0dGVyPFNvcnRFdmVudD4oKTtcbiAgICBASW5wdXQoJ216U29ydCcpIHNldCBtelNvcnQodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9telNvcnQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zZXRBY3RpdmVIZWFkZXJTb3J0KCk7XG4gICAgfVxuXG4gICAgbXpTb3J0T25DaGFuZ2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgICBfbXpTb3J0ITogc3RyaW5nO1xuICAgIGFjdGl2ZSE6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKCkge31cblxuICAgIG5nT25DaGFuZ2VzKCk6IGFueSB7XG4gICAgICAgIHRoaXMubXpTb3J0T25DaGFuZ2UkLm5leHQodGhpcy5hY3RpdmUpO1xuICAgIH1cblxuICAgIHNldEFjdGl2ZUhlYWRlclNvcnQoKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlID0gdGhpcy5fbXpTb3J0LmluY2x1ZGVzKCctJykgPyB0aGlzLl9telNvcnQuc2xpY2UoMSkgOiB0aGlzLl9telNvcnQ7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,21 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, Input } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ export class SpinnerComponent {
6
+ constructor() {
7
+ this.size = 'medium';
8
+ this.type = 'primary';
9
+ }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: SpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.1", type: SpinnerComponent, isStandalone: true, selector: "mz-spinner", inputs: { size: "size", type: "type" }, ngImport: i0, template: "<svg class=\"mz-spinner\" [ngClass]=\"{'large': size == 'large', 'medium': size == 'medium', 'text-primary': type == 'primary', 'text-secondary': type == 'secondary'}\" xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\" viewBox=\"0 0 24 24\">\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\n <path class=\"opacity-75\" fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\">\n </path>\n</svg>\n", styles: [".mz-spinner{animation:spin 1s linear infinite;margin:auto}.mz-spinner.medium{height:1.25rem;width:1.25rem}.mz-spinner.large{height:4rem;width:4rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
12
+ }
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: SpinnerComponent, decorators: [{
14
+ type: Component,
15
+ args: [{ selector: 'mz-spinner', standalone: true, imports: [CommonModule], template: "<svg class=\"mz-spinner\" [ngClass]=\"{'large': size == 'large', 'medium': size == 'medium', 'text-primary': type == 'primary', 'text-secondary': type == 'secondary'}\" xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\" viewBox=\"0 0 24 24\">\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\n <path class=\"opacity-75\" fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\">\n </path>\n</svg>\n", styles: [".mz-spinner{animation:spin 1s linear infinite;margin:auto}.mz-spinner.medium{height:1.25rem;width:1.25rem}.mz-spinner.large{height:4rem;width:4rem}\n"] }]
16
+ }], ctorParameters: () => [], propDecorators: { size: [{
17
+ type: Input
18
+ }], type: [{
19
+ type: Input
20
+ }] } });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bpbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc3Bpbm5lci9zcGlubmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zcGlubmVyL3NwaW5uZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7QUFTekQsTUFBTSxPQUFPLGdCQUFnQjtJQUkzQjtRQUZTLFNBQUksR0FBdUIsUUFBUSxDQUFDO1FBQ3BDLFNBQUksR0FBdUMsU0FBUyxDQUFDO0lBQzlDLENBQUM7OEdBSk4sZ0JBQWdCO2tHQUFoQixnQkFBZ0IsOEdDVjdCLDBqQkFPQSw4TURDWSxZQUFZOzsyRkFFWCxnQkFBZ0I7a0JBUDVCLFNBQVM7K0JBQ0UsWUFBWSxjQUdWLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQzt3REFJZCxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtei1zcGlubmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NwaW5uZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zcGlubmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIFNwaW5uZXJDb21wb25lbnQgIHtcblxuICBASW5wdXQoKSBzaXplOiAnbWVkaXVtJyB8ICdsYXJnZScgPSAnbWVkaXVtJztcbiAgQElucHV0KCkgdHlwZTogJ3ByaW1hcnknIHwgJ3NlY29uZGFyeScgfCAnY3VzdG9tJyA9ICdwcmltYXJ5JztcbiAgY29uc3RydWN0b3IoKSB7IH1cblxufVxuIiwiPHN2ZyBjbGFzcz1cIm16LXNwaW5uZXJcIiBbbmdDbGFzc109XCJ7J2xhcmdlJzogc2l6ZSA9PSAnbGFyZ2UnLCAnbWVkaXVtJzogc2l6ZSA9PSAnbWVkaXVtJywgJ3RleHQtcHJpbWFyeSc6IHR5cGUgPT0gJ3ByaW1hcnknLCAndGV4dC1zZWNvbmRhcnknOiB0eXBlID09ICdzZWNvbmRhcnknfVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgIGZpbGw9XCJub25lXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgIDxjaXJjbGUgY2xhc3M9XCJvcGFjaXR5LTI1XCIgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMTBcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCI0XCI+PC9jaXJjbGU+XG4gICAgPHBhdGggY2xhc3M9XCJvcGFjaXR5LTc1XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgIGQ9XCJNNCAxMmE4IDggMCAwMTgtOFYwQzUuMzczIDAgMCA1LjM3MyAwIDEyaDR6bTIgNS4yOTFBNy45NjIgNy45NjIgMCAwMTQgMTJIMGMwIDMuMDQyIDEuMTM1IDUuODI0IDMgNy45MzhsMy0yLjY0N3pcIj5cbiAgICA8L3BhdGg+XG48L3N2Zz5cbiJdfQ==
@@ -0,0 +1,20 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class SubjectDisplayPipe {
4
+ transform(subject) {
5
+ if (!subject) {
6
+ return null;
7
+ }
8
+ return subject.givenName && subject.familyName ? `${subject.givenName} ${subject.familyName}` : subject.userPrincipalName;
9
+ }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: SubjectDisplayPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
11
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.1.1", ngImport: i0, type: SubjectDisplayPipe, isStandalone: true, name: "mzSubjectDisplay" }); }
12
+ }
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: SubjectDisplayPipe, decorators: [{
14
+ type: Pipe,
15
+ args: [{
16
+ name: 'mzSubjectDisplay',
17
+ standalone: true,
18
+ }]
19
+ }] });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViamVjdC1kaXNwbGF5LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc3ViamVjdC1kaXNwbGF5L3N1YmplY3QtZGlzcGxheS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQU9wRCxNQUFNLE9BQU8sa0JBQWtCO0lBQzNCLFNBQVMsQ0FBQyxPQUFpQjtRQUN2QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDWCxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLFNBQVMsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztJQUM5SCxDQUFDOzhHQU5RLGtCQUFrQjs0R0FBbEIsa0JBQWtCOzsyRkFBbEIsa0JBQWtCO2tCQUo5QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxrQkFBa0I7b0JBQ3hCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICcuLi9tb2RlbHMvc3ViamVjdCc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ216U3ViamVjdERpc3BsYXknLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBTdWJqZWN0RGlzcGxheVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0oc3ViamVjdD86IFN1YmplY3QpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgaWYgKCFzdWJqZWN0KSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3ViamVjdC5naXZlbk5hbWUgJiYgc3ViamVjdC5mYW1pbHlOYW1lID8gYCR7c3ViamVjdC5naXZlbk5hbWV9ICR7c3ViamVjdC5mYW1pbHlOYW1lfWAgOiBzdWJqZWN0LnVzZXJQcmluY2lwYWxOYW1lO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,10 @@
1
+ import { InjectionToken } from "@angular/core";
2
+ export const SVG_ICON_DEFAULT_OPTIONS = new InjectionToken('MzSvgIconOptions', {
3
+ providedIn: 'root',
4
+ factory: () => {
5
+ return {
6
+ svgIconDefinitionUrl: './assets/icondefinitions.svg'
7
+ };
8
+ }
9
+ });
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLWljb24tY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3N2Zy1pY29uL3N2Zy1pY29uLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTS9DLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLElBQUksY0FBYyxDQUFpQixrQkFBa0IsRUFBRTtJQUMzRixVQUFVLEVBQUUsTUFBTTtJQUNsQixPQUFPLEVBQUUsR0FBRSxFQUFFO1FBQ1QsT0FBTztZQUNILG9CQUFvQixFQUFFLDhCQUE4QjtTQUM5QixDQUFDO0lBQy9CLENBQUM7Q0FDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3ZnSWNvbk9wdGlvbnMge1xuICAgIHN2Z0ljb25EZWZpbml0aW9uVXJsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBTVkdfSUNPTl9ERUZBVUxUX09QVElPTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48U3ZnSWNvbk9wdGlvbnM+KCdNelN2Z0ljb25PcHRpb25zJywge1xuICAgIHByb3ZpZGVkSW46ICdyb290JyxcbiAgICBmYWN0b3J5OiAoKT0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN2Z0ljb25EZWZpbml0aW9uVXJsOiAnLi9hc3NldHMvaWNvbmRlZmluaXRpb25zLnN2ZydcbiAgICAgICAgfSBzYXRpc2ZpZXMgU3ZnSWNvbk9wdGlvbnM7XG4gICAgfVxufSk7Il19
@@ -0,0 +1,39 @@
1
+ import { Component, HostBinding, Inject, Input } from '@angular/core';
2
+ import { SVG_ICON_DEFAULT_OPTIONS } from './svg-icon-config';
3
+ import * as i0 from "@angular/core";
4
+ export class SvgIconComponent {
5
+ constructor(config) {
6
+ this.config = config;
7
+ this.type = 'outline';
8
+ this.size = 'medium';
9
+ this.fileUrl = config.svgIconDefinitionUrl;
10
+ }
11
+ get url() {
12
+ if (this.type) {
13
+ return this.fileUrl + '#' + this.key + '-' + this.type;
14
+ }
15
+ return this.fileUrl + '#' + this.key;
16
+ }
17
+ get classes() {
18
+ return `icon icon-${this.type} icon-${this.size}`;
19
+ }
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: SvgIconComponent, deps: [{ token: SVG_ICON_DEFAULT_OPTIONS }], target: i0.ɵɵFactoryTarget.Component }); }
21
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.1", type: SvgIconComponent, isStandalone: true, selector: "mz-svg-icon", inputs: { key: "key", type: "type", size: "size" }, host: { properties: { "class": "this.classes" } }, ngImport: i0, template: "<svg xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n <use [attr.href]=\"url\" />\n</svg>", styles: [":host.icon-medium{width:1.25rem;height:1.25rem}:host.icon{display:inline-block}svg{height:100%;width:100%}\n"] }); }
22
+ }
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: SvgIconComponent, decorators: [{
24
+ type: Component,
25
+ args: [{ selector: 'mz-svg-icon', standalone: true, imports: [], template: "<svg xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n <use [attr.href]=\"url\" />\n</svg>", styles: [":host.icon-medium{width:1.25rem;height:1.25rem}:host.icon{display:inline-block}svg{height:100%;width:100%}\n"] }]
26
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
27
+ type: Inject,
28
+ args: [SVG_ICON_DEFAULT_OPTIONS]
29
+ }] }], propDecorators: { key: [{
30
+ type: Input
31
+ }], type: [{
32
+ type: Input
33
+ }], size: [{
34
+ type: Input
35
+ }], classes: [{
36
+ type: HostBinding,
37
+ args: ['class']
38
+ }] } });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLWljb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3N2Zy1pY29uL3N2Zy1pY29uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zdmctaWNvbi9zdmctaWNvbi5jb21wb25lbnQuc3ZnIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSx3QkFBd0IsRUFBa0IsTUFBTSxtQkFBbUIsQ0FBQzs7QUFTN0UsTUFBTSxPQUFPLGdCQUFnQjtJQU0zQixZQUFxRCxNQUFzQjtRQUF0QixXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUpsRSxTQUFJLEdBQWlDLFNBQVMsQ0FBQztRQUMvQyxTQUFJLEdBQVcsUUFBUSxDQUFDO1FBSS9CLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDO0lBQzdDLENBQUM7SUFFRCxJQUFJLEdBQUc7UUFDTCxJQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNiLE9BQU8sSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN6RCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUNJLE9BQU87UUFDVCxPQUFPLGFBQWEsSUFBSSxDQUFDLElBQUksU0FBUyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEQsQ0FBQzs4R0FyQlUsZ0JBQWdCLGtCQU1QLHdCQUF3QjtrR0FOakMsZ0JBQWdCLDhLQ1Y3QiwwR0FFTTs7MkZEUU8sZ0JBQWdCO2tCQVA1QixTQUFTOytCQUNFLGFBQWEsY0FHWCxJQUFJLFdBQ1AsRUFBRTs7MEJBUUUsTUFBTTsyQkFBQyx3QkFBd0I7eUNBTG5DLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQWdCRixPQUFPO3NCQURWLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIEluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNWR19JQ09OX0RFRkFVTFRfT1BUSU9OUywgU3ZnSWNvbk9wdGlvbnMgfSBmcm9tICcuL3N2Zy1pY29uLWNvbmZpZyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ216LXN2Zy1pY29uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N2Zy1pY29uLmNvbXBvbmVudC5zdmcnLFxuICBzdHlsZVVybHM6IFsnLi9zdmctaWNvbi5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBTdmdJY29uQ29tcG9uZW50IHtcbiAgQElucHV0KCkga2V5ITogc3RyaW5nO1xuICBASW5wdXQoKSB0eXBlOiAnb3V0bGluZScgfCAnc29saWQnIHwgc3RyaW5nID0gJ291dGxpbmUnO1xuICBASW5wdXQoKSBzaXplOiBzdHJpbmcgPSAnbWVkaXVtJztcbiAgZmlsZVVybDogc3RyaW5nO1xuICBcbiAgY29uc3RydWN0b3IoQEluamVjdChTVkdfSUNPTl9ERUZBVUxUX09QVElPTlMpIHB1YmxpYyBjb25maWc6IFN2Z0ljb25PcHRpb25zKSB7XG4gICAgdGhpcy5maWxlVXJsID0gY29uZmlnLnN2Z0ljb25EZWZpbml0aW9uVXJsO1xuICB9XG5cbiAgZ2V0IHVybCgpOiBzdHJpbmcge1xuICAgIGlmKHRoaXMudHlwZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsZVVybCArICcjJyArIHRoaXMua2V5ICsgJy0nICsgdGhpcy50eXBlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmZpbGVVcmwgKyAnIycgKyB0aGlzLmtleTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBnZXQgY2xhc3NlcygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgaWNvbiBpY29uLSR7dGhpcy50eXBlfSBpY29uLSR7dGhpcy5zaXplfWA7XG4gIH1cbn1cbiIsIjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgIDx1c2UgW2F0dHIuaHJlZl09XCJ1cmxcIiAvPlxuPC9zdmc+Il19
@@ -0,0 +1,3 @@
1
+ export class MuziehComponentHarness {
2
+ }
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXV6aWVoLWNvbXBvbmVudC1oYXJuZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3Rlc3RpbmcvbXV6aWVoLWNvbXBvbmVudC1oYXJuZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBZ0Isc0JBQXNCO0NBQU0iLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgYWJzdHJhY3QgY2xhc3MgTXV6aWVoQ29tcG9uZW50SGFybmVzczxUPiB7fVxuIl19
@@ -0,0 +1,66 @@
1
+ import { By } from '@angular/platform-browser';
2
+ import { ResultTableComponent } from '../result-table/result-table.component';
3
+ import { MuziehComponentHarness } from './muzieh-component-harness';
4
+ export class ResultTableHarness extends MuziehComponentHarness {
5
+ get resultTableDebugElement() {
6
+ const containerDebugElement = this.refreshContainerEvent();
7
+ if (!containerDebugElement) {
8
+ throw new Error('Invalid container debug element');
9
+ }
10
+ // we need this to default to the container if null for testing the original component
11
+ const resultTableDebugElement = containerDebugElement.query(By.directive(ResultTableComponent)) || containerDebugElement;
12
+ if (!resultTableDebugElement) {
13
+ throw new Error('Invalid result table debug element');
14
+ }
15
+ return resultTableDebugElement;
16
+ }
17
+ get resultTableComponentInstance() {
18
+ return this.evaluateComponentInstance(this.resultTableDebugElement);
19
+ }
20
+ constructor(refreshContainerEvent) {
21
+ super();
22
+ this.refreshContainerEvent = refreshContainerEvent;
23
+ }
24
+ getHeaderColumns() {
25
+ return this.resultTableDebugElement.queryAll(By.css('thead tr th')).map((td) => td.nativeElement.textContent?.trim());
26
+ }
27
+ getRenderedResults() {
28
+ const contentDebugElement = this.resultTableDebugElement;
29
+ const componentInstance = this.evaluateComponentInstance(contentDebugElement);
30
+ const results = contentDebugElement.queryAll(By.css('tbody tr')).map((el) => el.queryAll(By.css('td')).map((td) => td.nativeElement.textContent?.trim()));
31
+ const { pageNumber: page, pageSize, totalItems: total } = componentInstance.model;
32
+ return {
33
+ results,
34
+ page,
35
+ pageSize,
36
+ total,
37
+ };
38
+ }
39
+ getResultsHeaderSummary() {
40
+ const headerCaptionDebugElement = this.resultTableDebugElement.query(By.css('table caption'));
41
+ if (!headerCaptionDebugElement) {
42
+ throw new Error('DebugElement not found');
43
+ }
44
+ return headerCaptionDebugElement.nativeElement.textContent?.trim();
45
+ }
46
+ hasErrorMessage() {
47
+ return this.resultTableDebugElement.queryAll(By.css('.state-message .title .text-danger')).length > 0;
48
+ }
49
+ hasNoResultsMessage() {
50
+ const errorDebugElement = this.resultTableDebugElement.query(By.css('.state-message .title'));
51
+ if (!errorDebugElement) {
52
+ throw new Error('DebugElement not found');
53
+ }
54
+ return errorDebugElement.nativeElement.textContent?.trim() === 'No results found';
55
+ }
56
+ hasPaginationAvailable() {
57
+ return this.resultTableDebugElement.queryAll(By.css('.table-pagination')).length > 0;
58
+ }
59
+ hasResultsHeaderSummary() {
60
+ return this.resultTableDebugElement.queryAll(By.css('table caption')).length > 0;
61
+ }
62
+ evaluateComponentInstance(container) {
63
+ return container.componentInstance;
64
+ }
65
+ }
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LXRhYmxlLWhhcm5lc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvdGVzdGluZy9yZXN1bHQtdGFibGUtaGFybmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFOUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFcEUsTUFBTSxPQUFPLGtCQUFtQixTQUFRLHNCQUE0QztJQUdoRixJQUFZLHVCQUF1QjtRQUMvQixNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzNELElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBQ0Qsc0ZBQXNGO1FBQ3RGLE1BQU0sdUJBQXVCLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxJQUFJLHFCQUFxQixDQUFDO1FBQ3pILElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztRQUMxRCxDQUFDO1FBQ0QsT0FBTyx1QkFBdUIsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBSSw0QkFBNEI7UUFDNUIsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELFlBQVkscUJBQXlDO1FBQ2pELEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLHFCQUFxQixHQUFHLHFCQUFxQixDQUFDO0lBQ3ZELENB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O1xuaW1wb3J0IHsgQnkgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IFJlc3VsdFRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vcmVzdWx0LXRhYmxlL3Jlc3VsdC10YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVzdWx0VGFibGVNb2RlbCB9IGZyb20gJy4uL3Jlc3VsdC10YWJsZS9yZXN1bHQtdGFibGUubW9kZWwnO1xuaW1wb3J0IHsgTXV6aWVoQ29tcG9uZW50SGFybmVzcyB9IGZyb20gJy4vbXV6aWVoLWNvbXBvbmVudC1oYXJuZXNzJztcblxuZXhwb3J0IGNsYXNzIFJlc3VsdFRhYmxlSGFybmVzcyBleHRlbmRzIE11emllaENvbXBvbmVudEhhcm5lc3M8UmVzdWx0VGFibGVDb21wb25lbnQ+IHtcbiAgICBwcml2YXRlIHJlZnJlc2hDb250YWluZXJFdmVudDogKCkgPT4gRGVidWdFbGVtZW50O1xuXG4gICAgcHJpdmF0ZSBnZXQgcmVzdWx0VGFibGVEZWJ1Z0VsZW1lbnQoKSB7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lckRlYnVnRWxlbWVudCA9IHRoaXMucmVmcmVzaENvbnRhaW5lckV2ZW50KCk7XG4gICAgICAgIGlmICghY29udGFpbmVyRGVidWdFbGVtZW50KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY29udGFpbmVyIGRlYnVnIGVsZW1lbnQnKTtcbiAgICAgICAgfVxuICAgICAgICAvLyB3ZSBuZWVkIHRoaXMgdG8gZGVmYXVsdCB0byB0aGUgY29udGFpbmVyIGlmIG51bGwgZm9yIHRlc3RpbmcgdGhlIG9yaWdpbmFsIGNvbXBvbmVudFxuICAgICAgICBjb25zdCByZXN1bHRUYWJsZURlYnVnRWxlbWVudCA9IGNvbnRhaW5lckRlYnVnRWxlbWVudC5xdWVyeShCeS5kaXJlY3RpdmUoUmVzdWx0VGFibGVDb21wb25lbnQpKSB8fCBjb250YWluZXJEZWJ1Z0VsZW1lbnQ7XG4gICAgICAgIGlmICghcmVzdWx0VGFibGVEZWJ1Z0VsZW1lbnQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCByZXN1bHQgdGFibGUgZGVidWcgZWxlbWVudCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHRUYWJsZURlYnVnRWxlbWVudDtcbiAgICB9XG5cbiAgICBnZXQgcmVzdWx0VGFibGVDb21wb25lbnRJbnN0YW5jZSgpOiBSZXN1bHRUYWJsZUNvbXBvbmVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmV2YWx1YXRlQ29tcG9uZW50SW5zdGFuY2UodGhpcy5yZXN1bHRUYWJsZURlYnVnRWxlbWVudCk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocmVmcmVzaENvbnRhaW5lckV2ZW50OiAoKSA9PiBEZWJ1Z0VsZW1lbnQpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5yZWZyZXNoQ29udGFpbmVyRXZlbnQgPSByZWZyZXNoQ29udGFpbmVyRXZlbnQ7XG4gICAgfVxuXG4gICAgZ2V0SGVhZGVyQ29sdW1ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVzdWx0VGFibGVEZWJ1Z0VsZW1lbnQucXVlcnlBbGwoQnkuY3NzKCd0aGVhZCB0ciB0aCcpKS5tYXAoKHRkKSA9PiAodGQubmF0aXZlRWxlbWVudCBhcyBIVE1MVGFibGVDZWxsRWxlbWVudCkudGV4dENvbnRlbnQ/LnRyaW0oKSk7XG4gICAgfVxuXG4gICAgZ2V0UmVuZGVyZWRSZXN1bHRzKCkge1xuICAgICAgICBjb25zdCBjb250ZW50RGVidWdFbGVtZW50ID0gdGhpcy5yZXN1bHRUYWJsZURlYnVnRWxlbWVudDtcbiAgICAgICAgY29uc3QgY29tcG9uZW50SW5zdGFuY2UgPSB0aGlzLmV2YWx1YXRlQ29tcG9uZW50SW5zdGFuY2UoY29udGVudERlYnVnRWxlbWVudCk7XG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBjb250ZW50RGVidWdFbGVtZW50LnF1ZXJ5QWxsKEJ5LmNzcygndGJvZHkgdHInKSkubWFwKChlbCkgPT4gZWwucXVlcnlBbGwoQnkuY3NzKCd0ZCcpKS5tYXAoKHRkKSA9PiAodGQubmF0aXZlRWxlbWVudCBhcyBIVE1MVGFibGVDZWxsRWxlbWVudCkudGV4dENvbnRlbnQ/LnRyaW0oKSkpO1xuICAgICAgICBjb25zdCB7IHBhZ2VOdW1iZXI6IHBhZ2UsIHBhZ2VTaXplLCB0b3RhbEl0ZW1zOiB0b3RhbCB9ID0gY29tcG9uZW50SW5zdGFuY2UubW9kZWwgYXMgUmVzdWx0VGFibGVNb2RlbDx1bmtub3duPjtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVzdWx0cyxcbiAgICAgICAgICAgIHBhZ2UsXG4gICAgICAgICAgICBwYWdlU2l6ZSxcbiAgICAgICAgICAgIHRvdGFsLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGdldFJlc3VsdHNIZWFkZXJTdW1tYXJ5KCkge1xuICAgICAgICBjb25zdCBoZWFkZXJDYXB0aW9uRGVidWdFbGVtZW50ID0gdGhpcy5yZXN1bHRUYWJsZURlYnVnRWxlbWVudC5xdWVyeShCeS5jc3MoJ3RhYmxlIGNhcHRpb24nKSk7XG4gICAgICAgIGlmICghaGVhZGVyQ2FwdGlvbkRlYnVnRWxlbWVudCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEZWJ1Z0VsZW1lbnQgbm90IGZvdW5kJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChoZWFkZXJDYXB0aW9uRGVidWdFbGVtZW50Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQpLnRleHRDb250ZW50Py50cmltKCk7XG4gICAgfVxuXG4gICAgaGFzRXJyb3JNZXNzYWdlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXN1bHRUYWJsZURlYnVnRWxlbWVudC5xdWVyeUFsbChCeS5jc3MoJy5zdGF0ZS1tZXNzYWdlIC50aXRsZSAudGV4dC1kYW5nZXInKSkubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICBoYXNOb1Jlc3VsdHNNZXNzYWdlKCkge1xuICAgICAgICBjb25zdCBlcnJvckRlYnVnRWxlbWVudCA9IHRoaXMucmVzdWx0VGFibGVEZWJ1Z0VsZW1lbnQucXVlcnkoQnkuY3NzKCcuc3RhdGUtbWVzc2FnZSAudGl0bGUnKSk7XG4gICAgICAgIGlmICghZXJyb3JEZWJ1Z0VsZW1lbnQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRGVidWdFbGVtZW50IG5vdCBmb3VuZCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoZXJyb3JEZWJ1Z0VsZW1lbnQubmF0aXZlRWxlbWVudCBhcyBIVE1MRGl2RWxlbWVudCkudGV4dENvbnRlbnQ/LnRyaW0oKSA9PT0gJ05vIHJlc3VsdHMgZm91bmQnO1xuICAgIH1cblxuICAgIGhhc1BhZ2luYXRpb25BdmFpbGFibGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlc3VsdFRhYmxlRGVidWdFbGVtZW50LnF1ZXJ5QWxsKEJ5LmNzcygnLnRhYmxlLXBhZ2luYXRpb24nKSkubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICBoYXNSZXN1bHRzSGVhZGVyU3VtbWFyeSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVzdWx0VGFibGVEZWJ1Z0VsZW1lbnQucXVlcnlBbGwoQnkuY3NzKCd0YWJsZSBjYXB0aW9uJykpLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBldmFsdWF0ZUNvbXBvbmVudEluc3RhbmNlKGNvbnRhaW5lcjogRGVidWdFbGVtZW50KTogUmVzdWx0VGFibGVDb21wb25lbnQge1xuICAgICAgICByZXR1cm4gY29udGFpbmVyLmNvbXBvbmVudEluc3RhbmNlIGFzIFJlc3VsdFRhYmxlQ29tcG9uZW50O1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,57 @@
1
+ import { Directive, ElementRef, HostListener, Renderer2 } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import * as i0 from "@angular/core";
4
+ // TODO: need to rename, and need to use ivy instead
5
+ export class TimeValueAccessorDirective {
6
+ constructor(renderer, elementRef) {
7
+ this.renderer = renderer;
8
+ this.elementRef = elementRef;
9
+ this.onChange = (x) => { };
10
+ this.onTouched = () => { };
11
+ }
12
+ writeValue(obj) {
13
+ if (!obj) {
14
+ this.renderer.setProperty(this.elementRef.nativeElement, 'value', null);
15
+ return;
16
+ }
17
+ const hourPrefix = obj?.hour > 9 ? '' : '0';
18
+ const minutePrefix = obj.minute > 9 ? '' : '0';
19
+ this.renderer.setProperty(this.elementRef.nativeElement, 'value', `${hourPrefix}${obj.hour}:${minutePrefix}${obj.minute}`);
20
+ }
21
+ registerOnChange(fn) {
22
+ this.onChange = (value) => {
23
+ if (value === null || value === '') {
24
+ fn(null);
25
+ }
26
+ else {
27
+ const parts = value.split(':');
28
+ fn({ hour: Number(parts[0]), minute: Number(parts[1]) });
29
+ }
30
+ };
31
+ }
32
+ registerOnTouched(fn) {
33
+ this.onTouched = fn;
34
+ }
35
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: TimeValueAccessorDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
36
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.1", type: TimeValueAccessorDirective, isStandalone: true, selector: "input[type=time]", host: { listeners: { "input": "onChange($event.target.value)" } }, providers: [{
37
+ provide: NG_VALUE_ACCESSOR,
38
+ useExisting: TimeValueAccessorDirective,
39
+ multi: true
40
+ }], ngImport: i0 }); }
41
+ }
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: TimeValueAccessorDirective, decorators: [{
43
+ type: Directive,
44
+ args: [{
45
+ selector: 'input[type=time]',
46
+ providers: [{
47
+ provide: NG_VALUE_ACCESSOR,
48
+ useExisting: TimeValueAccessorDirective,
49
+ multi: true
50
+ }],
51
+ standalone: true,
52
+ }]
53
+ }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }], propDecorators: { onChange: [{
54
+ type: HostListener,
55
+ args: ['input', ['$event.target.value']]
56
+ }] } });
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS12YWx1ZS1hY2Nlc3Nvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvdGltZS12YWx1ZS1hY2Nlc3Nvci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQXdCLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7O0FBR3hFLG9EQUFvRDtBQVdwRCxNQUFNLE9BQU8sMEJBQTBCO0lBS3JDLFlBQW9CLFFBQW1CLEVBQVUsVUFBc0I7UUFBbkQsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUFVLGVBQVUsR0FBVixVQUFVLENBQVk7UUFGdkUsYUFBUSxHQUFHLENBQUMsQ0FBTSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDM0IsY0FBUyxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUd0QixDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQWU7UUFDeEIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3hFLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxVQUFVLEdBQUcsR0FBRyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQzVDLE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUMvQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsR0FBRyxVQUFVLEdBQUcsR0FBRyxDQUFDLElBQUksSUFBSSxZQUFZLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDN0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQWlDO1FBQ2hELElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN4QixJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRSxDQUFDO2dCQUNuQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDWCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDL0IsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFlLENBQUMsQ0FBQztZQUN4RSxDQUFDO1FBQ0gsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQWM7UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQzs4R0FoQ1UsMEJBQTBCO2tHQUExQiwwQkFBMEIsa0lBUDFCLENBQUM7Z0JBQ1YsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLDBCQUEwQjtnQkFDdkMsS0FBSyxFQUFFLElBQUk7YUFDWixDQUFDOzsyRkFHUywwQkFBMEI7a0JBVHRDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsU0FBUyxFQUFFLENBQUM7NEJBQ1YsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyw0QkFBNEI7NEJBQ3ZDLEtBQUssRUFBRSxJQUFJO3lCQUNaLENBQUM7b0JBQ0YsVUFBVSxFQUFFLElBQUk7aUJBQ2pCO3VHQUlDLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVGltZVZhbHVlIH0gZnJvbSAnLi9kYXRlLXRpbWUvdGltZS12YWx1ZSc7XG5cbi8vIFRPRE86IG5lZWQgdG8gcmVuYW1lLCBhbmQgbmVlZCB0byB1c2UgaXZ5IGluc3RlYWRcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnaW5wdXRbdHlwZT10aW1lXScsXG4gIHByb3ZpZGVyczogW3tcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogVGltZVZhbHVlQWNjZXNzb3JEaXJlY3RpdmUsXG4gICAgbXVsdGk6IHRydWVcbiAgfV0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFRpbWVWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2lucHV0JywgWyckZXZlbnQudGFyZ2V0LnZhbHVlJ10pXG4gIG9uQ2hhbmdlID0gKHg6IGFueSkgPT4geyB9O1xuICBvblRvdWNoZWQgPSAoKSA9PiB7IH07XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG5cbiAgfVxuXG4gIHdyaXRlVmFsdWUob2JqPzogVGltZVZhbHVlKTogdm9pZCB7XG4gICAgaWYgKCFvYmopIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd2YWx1ZScsIG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBob3VyUHJlZml4ID0gb2JqPy5ob3VyID4gOSA/ICcnIDogJzAnO1xuICAgIGNvbnN0IG1pbnV0ZVByZWZpeCA9IG9iai5taW51dGUgPiA5ID8gJycgOiAnMCc7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3ZhbHVlJywgYCR7aG91clByZWZpeH0ke29iai5ob3VyfToke21pbnV0ZVByZWZpeH0ke29iai5taW51dGV9YCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoeDogVGltZVZhbHVlIHwgbnVsbCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSAodmFsdWUpID0+IHtcbiAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgZm4obnVsbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBwYXJ0cyA9IHZhbHVlLnNwbGl0KCc6Jyk7XG4gICAgICAgIGZuKHsgaG91cjogTnVtYmVyKHBhcnRzWzBdKSwgbWludXRlOiBOdW1iZXIocGFydHNbMV0pIH0gYXMgVGltZVZhbHVlKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,37 @@
1
+ import { Directive } from '@angular/core';
2
+ import { NG_VALIDATORS } from '@angular/forms';
3
+ import * as i0 from "@angular/core";
4
+ export class TimeValueValidatorDirective {
5
+ constructor() { }
6
+ validate(control) {
7
+ const value = control.value;
8
+ if (value == null || value.length == 0) {
9
+ return null;
10
+ }
11
+ /*
12
+ const parts = value.split(':');
13
+ if (parts.length != 2) {
14
+ return { "time": "invalid time" };
15
+ }*/
16
+ return null;
17
+ }
18
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: TimeValueValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
19
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.1", type: TimeValueValidatorDirective, isStandalone: true, selector: "input[type=time]", providers: [{
20
+ provide: NG_VALIDATORS,
21
+ useExisting: TimeValueValidatorDirective,
22
+ multi: true
23
+ }], ngImport: i0 }); }
24
+ }
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: TimeValueValidatorDirective, decorators: [{
26
+ type: Directive,
27
+ args: [{
28
+ selector: 'input[type=time]',
29
+ providers: [{
30
+ provide: NG_VALIDATORS,
31
+ useExisting: TimeValueValidatorDirective,
32
+ multi: true
33
+ }],
34
+ standalone: true,
35
+ }]
36
+ }], ctorParameters: () => [] });
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS12YWx1ZS12YWxpZGF0b3IuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3RpbWUtdmFsdWUtdmFsaWRhdG9yLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBbUIsYUFBYSxFQUErQixNQUFNLGdCQUFnQixDQUFDOztBQVc3RixNQUFNLE9BQU8sMkJBQTJCO0lBRXRDLGdCQUFnQixDQUFDO0lBRWpCLFFBQVEsQ0FBQyxPQUF3QjtRQUMvQixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQzVCLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVEOzs7O1dBSUc7UUFFSCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7OEdBakJVLDJCQUEyQjtrR0FBM0IsMkJBQTJCLCtEQVAzQixDQUFDO2dCQUNWLE9BQU8sRUFBRSxhQUFhO2dCQUN0QixXQUFXLEVBQUUsMkJBQTJCO2dCQUN4QyxLQUFLLEVBQUUsSUFBSTthQUNaLENBQUM7OzJGQUdTLDJCQUEyQjtrQkFUdkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixTQUFTLEVBQUUsQ0FBQzs0QkFDVixPQUFPLEVBQUUsYUFBYTs0QkFDdEIsV0FBVyw2QkFBNkI7NEJBQ3hDLEtBQUssRUFBRSxJQUFJO3lCQUNaLENBQUM7b0JBQ0YsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIE5HX1ZBTElEQVRPUlMsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnaW5wdXRbdHlwZT10aW1lXScsXG4gIHByb3ZpZGVyczogW3tcbiAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgIHVzZUV4aXN0aW5nOiBUaW1lVmFsdWVWYWxpZGF0b3JEaXJlY3RpdmUsXG4gICAgbXVsdGk6IHRydWVcbiAgfV0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFRpbWVWYWx1ZVZhbGlkYXRvckRpcmVjdGl2ZSBpbXBsZW1lbnRzIFZhbGlkYXRvciB7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgY29uc3QgdmFsdWUgPSBjb250cm9sLnZhbHVlO1xuICAgIGlmICh2YWx1ZSA9PSBudWxsIHx8IHZhbHVlLmxlbmd0aCA9PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvKlxuICAgIGNvbnN0IHBhcnRzID0gdmFsdWUuc3BsaXQoJzonKTtcbiAgICBpZiAocGFydHMubGVuZ3RoICE9IDIpIHtcbiAgICAgIHJldHVybiB7IFwidGltZVwiOiBcImludmFsaWQgdGltZVwiIH07XG4gICAgfSovXG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIl19
@@ -0,0 +1,32 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
3
+ import { SvgIconComponent } from '../svg-icon/svg-icon.component';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ export class WizardProgressTrackerComponent {
7
+ constructor() {
8
+ this.steps = [];
9
+ this.currentStep = 0;
10
+ this.stepChange = new EventEmitter();
11
+ this.toggled = true;
12
+ }
13
+ goToStep(step) {
14
+ this.stepChange.emit(step);
15
+ }
16
+ toggle() {
17
+ this.toggled = !this.toggled;
18
+ }
19
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: WizardProgressTrackerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
20
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.1", type: WizardProgressTrackerComponent, isStandalone: true, selector: "mz-wizard-progress-tracker", inputs: { steps: "steps", currentStep: "currentStep" }, outputs: { stepChange: "stepChange" }, ngImport: i0, template: "<div class=\"wizard-progress-tracker\">\n <div class=\"direction-container\">\n <span class=\"steps-count\">Step {{ currentStep + 1 }} of {{ steps.length }}</span>\n <div class=\"wizard-steps-container\" [ngClass]=\"{'toggled': toggled}\">\n <div *ngFor=\"let step of steps; index as i;\" class=\"wizard-step\"\n [ngClass]=\"{ 'previous': i < currentStep, 'current': i === currentStep, 'unvisited': i > currentStep }\">\n <ng-container>\n <div class=\"wizard-step-icon-container\">\n <div class=\"spacer left\">\n </div>\n <div *ngIf=\"i > 0\" class=\"step-line left\"></div>\n\n <div *ngIf=\"i < currentStep\" class=\"wizard-step-icon\">\n <mz-svg-icon key=\"check-circle\" type=\"solid\">\n </mz-svg-icon>\n </div>\n <div *ngIf=\"i === currentStep\" class=\"wizard-step-icon\">\n <div class=\"step-inner-circle\"></div>\n </div>\n <div *ngIf=\"i > currentStep\" class=\"wizard-step-icon\">\n </div>\n\n <div *ngIf=\"i < (steps.length - 1)\" class=\"step-line step-line-right\"></div>\n <div class=\"spacer right\"></div>\n </div>\n <a *ngIf=\"i < currentStep\" class=\"step-desc\" (click)=\"goToStep(step)\"> {{\n step.name\n }}</a>\n <div *ngIf=\" i === currentStep\" class=\"step-desc\"> {{ step.name }}\n </div>\n <div *ngIf=\" i > currentStep\" class=\"step-desc\"> {{ step.name }}\n </div>\n <div class=\"toggable-icon\">\n <button *ngIf=\"!toggled\" (click)=\"toggle()\">\n <mz-svg-icon key=\"chevron-down\"></mz-svg-icon>\n </button>\n <button *ngIf=\"toggled\" (click)=\"toggle()\">\n <mz-svg-icon key=\"chevron-up\"></mz-svg-icon>\n </button>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SvgIconComponent, selector: "mz-svg-icon", inputs: ["key", "type", "size"] }] }); }
21
+ }
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: WizardProgressTrackerComponent, decorators: [{
23
+ type: Component,
24
+ args: [{ selector: 'mz-wizard-progress-tracker', standalone: true, imports: [CommonModule, SvgIconComponent], template: "<div class=\"wizard-progress-tracker\">\n <div class=\"direction-container\">\n <span class=\"steps-count\">Step {{ currentStep + 1 }} of {{ steps.length }}</span>\n <div class=\"wizard-steps-container\" [ngClass]=\"{'toggled': toggled}\">\n <div *ngFor=\"let step of steps; index as i;\" class=\"wizard-step\"\n [ngClass]=\"{ 'previous': i < currentStep, 'current': i === currentStep, 'unvisited': i > currentStep }\">\n <ng-container>\n <div class=\"wizard-step-icon-container\">\n <div class=\"spacer left\">\n </div>\n <div *ngIf=\"i > 0\" class=\"step-line left\"></div>\n\n <div *ngIf=\"i < currentStep\" class=\"wizard-step-icon\">\n <mz-svg-icon key=\"check-circle\" type=\"solid\">\n </mz-svg-icon>\n </div>\n <div *ngIf=\"i === currentStep\" class=\"wizard-step-icon\">\n <div class=\"step-inner-circle\"></div>\n </div>\n <div *ngIf=\"i > currentStep\" class=\"wizard-step-icon\">\n </div>\n\n <div *ngIf=\"i < (steps.length - 1)\" class=\"step-line step-line-right\"></div>\n <div class=\"spacer right\"></div>\n </div>\n <a *ngIf=\"i < currentStep\" class=\"step-desc\" (click)=\"goToStep(step)\"> {{\n step.name\n }}</a>\n <div *ngIf=\" i === currentStep\" class=\"step-desc\"> {{ step.name }}\n </div>\n <div *ngIf=\" i > currentStep\" class=\"step-desc\"> {{ step.name }}\n </div>\n <div class=\"toggable-icon\">\n <button *ngIf=\"!toggled\" (click)=\"toggle()\">\n <mz-svg-icon key=\"chevron-down\"></mz-svg-icon>\n </button>\n <button *ngIf=\"toggled\" (click)=\"toggle()\">\n <mz-svg-icon key=\"chevron-up\"></mz-svg-icon>\n </button>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n" }]
25
+ }], propDecorators: { steps: [{
26
+ type: Input
27
+ }], currentStep: [{
28
+ type: Input
29
+ }], stepChange: [{
30
+ type: Output
31
+ }] } });
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLXByb2dyZXNzLXRyYWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3dpemFyZC1wcm9ncmVzcy10cmFja2VyL3dpemFyZC1wcm9ncmVzcy10cmFja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi93aXphcmQtcHJvZ3Jlc3MtdHJhY2tlci93aXphcmQtcHJvZ3Jlc3MtdHJhY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7O0FBU2xFLE1BQU0sT0FBTyw4QkFBOEI7SUFQM0M7UUFRVyxVQUFLLEdBQXFCLEVBQUUsQ0FBQztRQUM3QixnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUNmLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBa0IsQ0FBQztRQUMxRCxZQUFPLEdBQUcsSUFBSSxDQUFDO0tBU2hCO0lBUEMsUUFBUSxDQUFDLElBQW9CO1FBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxNQUFNO1FBQ0YsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDakMsQ0FBQzs4R0FaVSw4QkFBOEI7a0dBQTlCLDhCQUE4QixxTENaM0MsMDJFQTZDQSx5RERuQ1ksWUFBWSw4VkFBRSxnQkFBZ0I7OzJGQUU3Qiw4QkFBOEI7a0JBUDFDLFNBQVM7K0JBQ0UsNEJBQTRCLGNBR3pCLElBQUksV0FDUixDQUFDLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQzs4QkFHaEMsS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgV2l6YXJkU3RlcExpbmsgfSBmcm9tICcuLi9tb2RlbHMvd2l6YXJkLXN0ZXAtbGluayc7XG5pbXBvcnQgeyBTdmdJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vc3ZnLWljb24vc3ZnLWljb24uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbXotd2l6YXJkLXByb2dyZXNzLXRyYWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vd2l6YXJkLXByb2dyZXNzLXRyYWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93aXphcmQtcHJvZ3Jlc3MtdHJhY2tlci5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiAgdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgU3ZnSWNvbkNvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgV2l6YXJkUHJvZ3Jlc3NUcmFja2VyQ29tcG9uZW50IHtcbiAgQElucHV0KCkgc3RlcHM6IFdpemFyZFN0ZXBMaW5rW10gPSBbXTtcbiAgQElucHV0KCkgY3VycmVudFN0ZXAgPSAwO1xuICBAT3V0cHV0KCkgc3RlcENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8V2l6YXJkU3RlcExpbms+KCk7XG4gIHRvZ2dsZWQgPSB0cnVlO1xuXG4gIGdvVG9TdGVwKHN0ZXA6IFdpemFyZFN0ZXBMaW5rKSB7XG4gICAgdGhpcy5zdGVwQ2hhbmdlLmVtaXQoc3RlcCk7XG4gIH1cblxuICB0b2dnbGUoKTogdm9pZCB7XG4gICAgICB0aGlzLnRvZ2dsZWQgPSAhdGhpcy50b2dnbGVkO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwid2l6YXJkLXByb2dyZXNzLXRyYWNrZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZGlyZWN0aW9uLWNvbnRhaW5lclwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInN0ZXBzLWNvdW50XCI+U3RlcCB7eyBjdXJyZW50U3RlcCArIDEgfX0gb2Yge3sgc3RlcHMubGVuZ3RoIH19PC9zcGFuPlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2l6YXJkLXN0ZXBzLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cInsndG9nZ2xlZCc6IHRvZ2dsZWR9XCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzdGVwIG9mIHN0ZXBzOyBpbmRleCBhcyBpO1wiIGNsYXNzPVwid2l6YXJkLXN0ZXBcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3ByZXZpb3VzJzogaSA8IGN1cnJlbnRTdGVwLCAnY3VycmVudCc6IGkgPT09IGN1cnJlbnRTdGVwLCAndW52aXNpdGVkJzogaSA+IGN1cnJlbnRTdGVwIH1cIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2l6YXJkLXN0ZXAtaWNvbi1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGFjZXIgbGVmdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaSA+IDBcIiBjbGFzcz1cInN0ZXAtbGluZSBsZWZ0XCI+PC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpIDwgY3VycmVudFN0ZXBcIiBjbGFzcz1cIndpemFyZC1zdGVwLWljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bXotc3ZnLWljb24ga2V5PVwiY2hlY2stY2lyY2xlXCIgdHlwZT1cInNvbGlkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tei1zdmctaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImkgPT09IGN1cnJlbnRTdGVwXCIgY2xhc3M9XCJ3aXphcmQtc3RlcC1pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXAtaW5uZXItY2lyY2xlXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpID4gY3VycmVudFN0ZXBcIiBjbGFzcz1cIndpemFyZC1zdGVwLWljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaSA8IChzdGVwcy5sZW5ndGggLSAxKVwiIGNsYXNzPVwic3RlcC1saW5lIHN0ZXAtbGluZS1yaWdodFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwYWNlciByaWdodFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCJpIDwgY3VycmVudFN0ZXBcIiBjbGFzcz1cInN0ZXAtZGVzY1wiIChjbGljayk9XCJnb1RvU3RlcChzdGVwKVwiPiB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RlcC5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICB9fTwvYT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiBpID09PSBjdXJyZW50U3RlcFwiIGNsYXNzPVwic3RlcC1kZXNjXCI+IHt7IHN0ZXAubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiBpID4gY3VycmVudFN0ZXBcIiBjbGFzcz1cInN0ZXAtZGVzY1wiPiB7eyBzdGVwLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b2dnYWJsZS1pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIXRvZ2dsZWRcIiAoY2xpY2spPVwidG9nZ2xlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bXotc3ZnLWljb24ga2V5PVwiY2hldnJvbi1kb3duXCI+PC9tei1zdmctaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInRvZ2dsZWRcIiAoY2xpY2spPVwidG9nZ2xlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bXotc3ZnLWljb24ga2V5PVwiY2hldnJvbi11cFwiPjwvbXotc3ZnLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==