@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.
- package/esm2022/lib/alert/alert.component.mjs +46 -0
- package/esm2022/lib/button.directive.mjs +86 -0
- package/esm2022/lib/components.module.mjs +130 -0
- package/esm2022/lib/date-display/date-display-config.mjs +12 -0
- package/esm2022/lib/date-display/date-display.pipe.mjs +35 -0
- package/esm2022/lib/date-display/date.pipe.mjs +41 -0
- package/esm2022/lib/date-time/date-time.component.mjs +139 -0
- package/esm2022/lib/date-time/time-value.mjs +2 -0
- package/esm2022/lib/dialog/container/drawer-container.component.mjs +57 -0
- package/esm2022/lib/dialog/dialog-config.mjs +50 -0
- package/esm2022/lib/dialog/dialog-injectors.mjs +5 -0
- package/esm2022/lib/dialog/dialog-ref.mjs +57 -0
- package/esm2022/lib/dialog/dialog.module.mjs +25 -0
- package/esm2022/lib/dialog/mz-dialog.service.mjs +108 -0
- package/esm2022/lib/dropdown/dropdown-item.directive.mjs +28 -0
- package/esm2022/lib/dropdown/dropdown.component.mjs +27 -0
- package/esm2022/lib/dropdown/dropdown.module.mjs +17 -0
- package/esm2022/lib/enum-display/enum-display.pipe.mjs +48 -0
- package/esm2022/lib/filter/filter-option.model.mjs +2 -0
- package/esm2022/lib/filter/filter.component.mjs +42 -0
- package/esm2022/lib/guard-deactivate.mjs +14 -0
- package/esm2022/lib/infinite-scroll/infinite-scroll.component.mjs +45 -0
- package/esm2022/lib/inline-edit/inline-edit.component.mjs +65 -0
- package/esm2022/lib/models/loading-state.mjs +2 -0
- package/esm2022/lib/models/page-event.mjs +2 -0
- package/esm2022/lib/models/result-table-options.mjs +2 -0
- package/esm2022/lib/models/sort-event.mjs +2 -0
- package/esm2022/lib/models/subject.mjs +2 -0
- package/esm2022/lib/models/wizard-step-link.mjs +2 -0
- package/esm2022/lib/options-filter/options-filter.component.mjs +66 -0
- package/esm2022/lib/page-header/page-header.component.mjs +27 -0
- package/esm2022/lib/page-loading-indicator/page-loading-indicator.component.mjs +32 -0
- package/esm2022/lib/pagination/pagination-default-options.mjs +2 -0
- package/esm2022/lib/pagination/pagination-default-options.token.mjs +3 -0
- package/esm2022/lib/pagination/pagination.component.mjs +90 -0
- package/esm2022/lib/phone-number/phone-number.pipe.mjs +24 -0
- package/esm2022/lib/result-table/result-table.component.mjs +65 -0
- package/esm2022/lib/result-table/result-table.model.mjs +2 -0
- package/esm2022/lib/sort-key.directive.mjs +91 -0
- package/esm2022/lib/sort.directive.mjs +34 -0
- package/esm2022/lib/spinner/spinner.component.mjs +21 -0
- package/esm2022/lib/subject-display/subject-display.pipe.mjs +20 -0
- package/esm2022/lib/svg-icon/svg-icon-config.mjs +10 -0
- package/esm2022/lib/svg-icon/svg-icon.component.mjs +39 -0
- package/esm2022/lib/testing/muzieh-component-harness.mjs +3 -0
- package/esm2022/lib/testing/result-table-harness.mjs +66 -0
- package/esm2022/lib/time-value-accessor.directive.mjs +57 -0
- package/esm2022/lib/time-value-validator.directive.mjs +37 -0
- package/esm2022/lib/wizard-progress-tracker/wizard-progress-tracker.component.mjs +32 -0
- package/esm2022/muziehdesign-components.mjs +5 -0
- package/esm2022/public-api.mjs +53 -0
- package/fesm2022/muziehdesign-components.mjs +108 -108
- package/fesm2022/muziehdesign-components.mjs.map +1 -1
- package/lib/dialog/dialog-injectors.d.ts +1 -1
- 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==
|