@stemy/ngx-utils 12.1.3 → 13.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/ngx-utils/common-types.mjs +116 -0
- package/esm2020/ngx-utils/components/dynamic-table/dynamic-table.component.mjs +407 -0
- package/esm2020/ngx-utils/components/pagination-menu/pagination-menu.component.mjs +191 -0
- package/esm2020/ngx-utils/components/unordered-list/unordered-list.component.mjs +261 -0
- package/esm2020/ngx-utils/directives/async-method.base.mjs +68 -0
- package/esm2020/ngx-utils/directives/async-method.directive.mjs +28 -0
- package/esm2020/ngx-utils/directives/background.directive.mjs +51 -0
- package/esm2020/ngx-utils/directives/dynamic-table-template.directive.mjs +20 -0
- package/esm2020/ngx-utils/directives/global-template.directive.mjs +30 -0
- package/esm2020/ngx-utils/directives/icon.directive.mjs +71 -0
- package/esm2020/ngx-utils/directives/ngx-template-outlet.directive.mjs +90 -0
- package/esm2020/ngx-utils/directives/pagination-item.directive.mjs +33 -0
- package/esm2020/ngx-utils/directives/pagination.directive.mjs +83 -0
- package/esm2020/ngx-utils/directives/resource-if.directive.mjs +50 -0
- package/esm2020/ngx-utils/directives/sticky-class.directive.mjs +34 -0
- package/esm2020/ngx-utils/directives/sticky.directive.mjs +59 -0
- package/esm2020/ngx-utils/directives/unordered-list-item.directive.mjs +77 -0
- package/esm2020/ngx-utils/directives/unordered-list-template.directive.mjs +26 -0
- package/esm2020/ngx-utils/ngx-utils.module.mjs +322 -0
- package/esm2020/ngx-utils/pipes/chunk.pipe.mjs +25 -0
- package/esm2020/ngx-utils/pipes/entries.pipe.mjs +28 -0
- package/esm2020/ngx-utils/pipes/extra-item-properties.pipe.mjs +31 -0
- package/esm2020/ngx-utils/pipes/filter.pipe.mjs +42 -0
- package/esm2020/ngx-utils/pipes/find.pipe.mjs +29 -0
- package/esm2020/ngx-utils/pipes/format-number.pipe.mjs +21 -0
- package/esm2020/ngx-utils/pipes/get-offset.pipe.mjs +17 -0
- package/esm2020/ngx-utils/pipes/get-type.pipe.mjs +16 -0
- package/esm2020/ngx-utils/pipes/global-template.pipe.mjs +41 -0
- package/esm2020/ngx-utils/pipes/group-by.pipe.mjs +27 -0
- package/esm2020/ngx-utils/pipes/is-type.pipe.mjs +16 -0
- package/esm2020/ngx-utils/pipes/join.pipe.mjs +19 -0
- package/esm2020/ngx-utils/pipes/keys.pipe.mjs +22 -0
- package/esm2020/ngx-utils/pipes/map.pipe.mjs +29 -0
- package/esm2020/ngx-utils/pipes/max.pipe.mjs +26 -0
- package/esm2020/ngx-utils/pipes/min.pipe.mjs +26 -0
- package/esm2020/ngx-utils/pipes/reduce.pipe.mjs +30 -0
- package/esm2020/ngx-utils/pipes/remap.pipe.mjs +32 -0
- package/esm2020/ngx-utils/pipes/replace.pipe.mjs +16 -0
- package/esm2020/ngx-utils/pipes/reverse.pipe.mjs +24 -0
- package/esm2020/ngx-utils/pipes/round.pipe.mjs +21 -0
- package/esm2020/ngx-utils/pipes/safe-html.pipe.mjs +34 -0
- package/esm2020/ngx-utils/pipes/translate.pipe.mjs +86 -0
- package/esm2020/ngx-utils/pipes/values.pipe.mjs +22 -0
- package/esm2020/ngx-utils/plugins/resize-event.plugin.mjs +59 -0
- package/esm2020/ngx-utils/plugins/scroll-event.plugin.mjs +39 -0
- package/esm2020/ngx-utils/services/acl.service.mjs +81 -0
- package/esm2020/ngx-utils/services/api.service.mjs +38 -0
- package/esm2020/ngx-utils/services/auth.service.mjs +14 -0
- package/esm2020/ngx-utils/services/base-http.client.mjs +47 -0
- package/esm2020/ngx-utils/services/base-http.service.mjs +298 -0
- package/esm2020/ngx-utils/services/config.service.mjs +129 -0
- package/esm2020/ngx-utils/services/error-handler.service.mjs +49 -0
- package/esm2020/ngx-utils/services/events.service.mjs +26 -0
- package/esm2020/ngx-utils/services/formatter.service.mjs +47 -0
- package/esm2020/ngx-utils/services/global-template.service.mjs +37 -0
- package/esm2020/ngx-utils/services/icon.service.mjs +26 -0
- package/esm2020/ngx-utils/services/language.service.mjs +113 -0
- package/esm2020/ngx-utils/services/open-api.service.mjs +40 -0
- package/esm2020/ngx-utils/services/promise.service.mjs +55 -0
- package/esm2020/ngx-utils/services/state.service.mjs +173 -0
- package/esm2020/ngx-utils/services/static-language.service.mjs +166 -0
- package/esm2020/ngx-utils/services/storage.service.mjs +49 -0
- package/esm2020/ngx-utils/services/toaster.service.mjs +32 -0
- package/esm2020/ngx-utils/services/translated-url.serializer.mjs +73 -0
- package/esm2020/ngx-utils/services/universal.service.mjs +78 -0
- package/esm2020/ngx-utils/utils/ajax-request-handler.mjs +40 -0
- package/esm2020/ngx-utils/utils/array.utils.mjs +100 -0
- package/esm2020/ngx-utils/utils/auth.guard.mjs +181 -0
- package/esm2020/ngx-utils/utils/canvas.utils.mjs +388 -0
- package/esm2020/ngx-utils/utils/date.utils.mjs +28 -0
- package/esm2020/ngx-utils/utils/file.utils.mjs +90 -0
- package/esm2020/ngx-utils/utils/generic-value.mjs +20 -0
- package/esm2020/ngx-utils/utils/geometry.mjs +132 -0
- package/esm2020/ngx-utils/utils/initializer.mjs +20 -0
- package/esm2020/ngx-utils/utils/loader.utils.mjs +55 -0
- package/esm2020/ngx-utils/utils/math.utils.mjs +15 -0
- package/esm2020/ngx-utils/utils/object.utils.mjs +261 -0
- package/esm2020/ngx-utils/utils/observable.utils.mjs +63 -0
- package/esm2020/ngx-utils/utils/reflect.utils.mjs +33 -0
- package/esm2020/ngx-utils/utils/set.utils.mjs +20 -0
- package/esm2020/ngx-utils/utils/string.utils.mjs +28 -0
- package/esm2020/ngx-utils/utils/timer.utils.mjs +52 -0
- package/esm2020/ngx-utils/utils/unique.utils.mjs +24 -0
- package/esm2020/ngx-utils/utils/vector.mjs +77 -0
- package/esm2020/public_api.mjs +85 -0
- package/esm2020/stemy-ngx-utils.mjs +5 -0
- package/fesm2015/stemy-ngx-utils.mjs +5990 -0
- package/fesm2015/stemy-ngx-utils.mjs.map +1 -0
- package/fesm2020/stemy-ngx-utils.mjs +5650 -0
- package/fesm2020/stemy-ngx-utils.mjs.map +1 -0
- package/ngx-utils/components/dynamic-table/dynamic-table.component.d.ts +3 -0
- package/ngx-utils/components/pagination-menu/pagination-menu.component.d.ts +3 -0
- package/ngx-utils/components/unordered-list/unordered-list.component.d.ts +3 -0
- package/ngx-utils/directives/async-method.base.d.ts +3 -0
- package/ngx-utils/directives/async-method.directive.d.ts +3 -0
- package/ngx-utils/directives/background.directive.d.ts +3 -0
- package/ngx-utils/directives/dynamic-table-template.directive.d.ts +3 -0
- package/ngx-utils/directives/global-template.directive.d.ts +3 -0
- package/ngx-utils/directives/icon.directive.d.ts +3 -0
- package/ngx-utils/directives/ngx-template-outlet.directive.d.ts +3 -0
- package/ngx-utils/directives/pagination-item.directive.d.ts +3 -0
- package/ngx-utils/directives/pagination.directive.d.ts +3 -0
- package/ngx-utils/directives/resource-if.directive.d.ts +3 -0
- package/ngx-utils/directives/sticky-class.directive.d.ts +3 -0
- package/ngx-utils/directives/sticky.directive.d.ts +3 -0
- package/ngx-utils/directives/unordered-list-item.directive.d.ts +3 -0
- package/ngx-utils/directives/unordered-list-template.directive.d.ts +3 -0
- package/ngx-utils/pipes/chunk.pipe.d.ts +3 -0
- package/ngx-utils/pipes/entries.pipe.d.ts +3 -0
- package/ngx-utils/pipes/extra-item-properties.pipe.d.ts +3 -0
- package/ngx-utils/pipes/filter.pipe.d.ts +3 -0
- package/ngx-utils/pipes/find.pipe.d.ts +3 -0
- package/ngx-utils/pipes/format-number.pipe.d.ts +3 -0
- package/ngx-utils/pipes/get-offset.pipe.d.ts +3 -0
- package/ngx-utils/pipes/get-type.pipe.d.ts +3 -0
- package/ngx-utils/pipes/global-template.pipe.d.ts +3 -0
- package/ngx-utils/pipes/group-by.pipe.d.ts +3 -0
- package/ngx-utils/pipes/is-type.pipe.d.ts +3 -0
- package/ngx-utils/pipes/join.pipe.d.ts +3 -0
- package/ngx-utils/pipes/keys.pipe.d.ts +3 -0
- package/ngx-utils/pipes/map.pipe.d.ts +3 -0
- package/ngx-utils/pipes/max.pipe.d.ts +3 -0
- package/ngx-utils/pipes/min.pipe.d.ts +3 -0
- package/ngx-utils/pipes/reduce.pipe.d.ts +3 -0
- package/ngx-utils/pipes/remap.pipe.d.ts +3 -0
- package/ngx-utils/pipes/replace.pipe.d.ts +3 -0
- package/ngx-utils/pipes/reverse.pipe.d.ts +3 -0
- package/ngx-utils/pipes/round.pipe.d.ts +3 -0
- package/ngx-utils/pipes/safe-html.pipe.d.ts +3 -0
- package/ngx-utils/pipes/translate.pipe.d.ts +4 -0
- package/ngx-utils/pipes/values.pipe.d.ts +3 -0
- package/ngx-utils/plugins/resize-event.plugin.d.ts +4 -1
- package/ngx-utils/plugins/scroll-event.plugin.d.ts +4 -1
- package/ngx-utils/services/acl.service.d.ts +3 -0
- package/ngx-utils/services/api.service.d.ts +3 -0
- package/ngx-utils/services/base-http.client.d.ts +3 -0
- package/ngx-utils/services/base-http.service.d.ts +3 -0
- package/ngx-utils/services/config.service.d.ts +3 -0
- package/ngx-utils/services/error-handler.service.d.ts +3 -0
- package/ngx-utils/services/events.service.d.ts +3 -0
- package/ngx-utils/services/formatter.service.d.ts +3 -0
- package/ngx-utils/services/global-template.service.d.ts +3 -0
- package/ngx-utils/services/icon.service.d.ts +3 -0
- package/ngx-utils/services/language.service.d.ts +3 -0
- package/ngx-utils/services/open-api.service.d.ts +3 -0
- package/ngx-utils/services/promise.service.d.ts +3 -0
- package/ngx-utils/services/state.service.d.ts +3 -0
- package/ngx-utils/services/static-language.service.d.ts +3 -0
- package/ngx-utils/services/storage.service.d.ts +3 -0
- package/ngx-utils/services/toaster.service.d.ts +3 -0
- package/ngx-utils/services/translated-url.serializer.d.ts +3 -0
- package/ngx-utils/services/universal.service.d.ts +3 -0
- package/ngx-utils/utils/auth.guard.d.ts +3 -0
- package/package.json +37 -19
- package/public_api.d.ts +1 -0
- package/stemy-ngx-utils.d.ts +1 -2
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Directive, ElementRef, Input, Renderer2 } from "@angular/core";
|
|
2
|
+
import { HttpClient } from "@angular/common/http";
|
|
3
|
+
import { FileUtils } from "../utils/file.utils";
|
|
4
|
+
import { UniversalService } from "../services/universal.service";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common/http";
|
|
7
|
+
import * as i2 from "../services/universal.service";
|
|
8
|
+
const defaultClass = "default-image";
|
|
9
|
+
const loadingClass = "loading-image";
|
|
10
|
+
export class BackgroundDirective {
|
|
11
|
+
constructor(http, element, renderer, universal) {
|
|
12
|
+
this.http = http;
|
|
13
|
+
this.element = element;
|
|
14
|
+
this.renderer = renderer;
|
|
15
|
+
this.universal = universal;
|
|
16
|
+
}
|
|
17
|
+
ngOnChanges(changes) {
|
|
18
|
+
if (this.universal.isServer) {
|
|
19
|
+
this.setBackground(this.background);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
this.renderer.removeClass(this.element.nativeElement, defaultClass);
|
|
23
|
+
this.renderer.addClass(this.element.nativeElement, loadingClass);
|
|
24
|
+
FileUtils.readDataFromUrl(this.http, this.background).then(url => {
|
|
25
|
+
this.setBackground(url);
|
|
26
|
+
}, () => {
|
|
27
|
+
this.renderer.removeClass(this.element.nativeElement, loadingClass);
|
|
28
|
+
this.renderer.addClass(this.element.nativeElement, defaultClass);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
setBackground(url) {
|
|
32
|
+
this.renderer.removeClass(this.element.nativeElement, loadingClass);
|
|
33
|
+
this.renderer.setStyle(this.element.nativeElement, "background-image", `url('${url}')`);
|
|
34
|
+
if (!this.backgroundSize)
|
|
35
|
+
return;
|
|
36
|
+
this.renderer.setStyle(this.element.nativeElement, "background-size", this.backgroundSize);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
BackgroundDirective.ɵfac = function BackgroundDirective_Factory(t) { return new (t || BackgroundDirective)(i0.ɵɵdirectiveInject(i1.HttpClient), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i2.UniversalService)); };
|
|
40
|
+
BackgroundDirective.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: BackgroundDirective, selectors: [["", "background", ""]], inputs: { background: "background", backgroundSize: "backgroundSize" }, features: [i0.ɵɵNgOnChangesFeature] });
|
|
41
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BackgroundDirective, [{
|
|
42
|
+
type: Directive,
|
|
43
|
+
args: [{
|
|
44
|
+
selector: "[background]"
|
|
45
|
+
}]
|
|
46
|
+
}], function () { return [{ type: i1.HttpClient }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i2.UniversalService }]; }, { background: [{
|
|
47
|
+
type: Input
|
|
48
|
+
}], backgroundSize: [{
|
|
49
|
+
type: Input
|
|
50
|
+
}] }); })();
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2dyb3VuZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL2RpcmVjdGl2ZXMvYmFja2dyb3VuZC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFhLFNBQVMsRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFDaEcsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUM5QyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQzs7OztBQUUvRCxNQUFNLFlBQVksR0FBRyxlQUFlLENBQUM7QUFDckMsTUFBTSxZQUFZLEdBQUcsZUFBZSxDQUFDO0FBS3JDLE1BQU0sT0FBTyxtQkFBbUI7SUFLNUIsWUFBb0IsSUFBZ0IsRUFBVSxPQUFtQixFQUFVLFFBQW1CLEVBQVUsU0FBMkI7UUFBL0csU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FBa0I7SUFFbkksQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3BDLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ2pFLFNBQVMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzdELElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUIsQ0FBQyxFQUFFLEdBQUcsRUFBRTtZQUNKLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3JFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLGFBQWEsQ0FBQyxHQUFXO1FBQzdCLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLGtCQUFrQixFQUFFLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUN4RixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWM7WUFBRSxPQUFPO1FBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLGlCQUFpQixFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMvRixDQUFDOztzRkE3QlEsbUJBQW1CO3NFQUFuQixtQkFBbUI7dUZBQW5CLG1CQUFtQjtjQUgvQixTQUFTO2VBQUM7Z0JBQ1AsUUFBUSxFQUFFLGNBQWM7YUFDM0I7NklBR1ksVUFBVTtrQkFBbEIsS0FBSztZQUNHLGNBQWM7a0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIE9uQ2hhbmdlcywgUmVuZGVyZXIyLCBTaW1wbGVDaGFuZ2VzfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0h0dHBDbGllbnR9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQge0ZpbGVVdGlsc30gZnJvbSBcIi4uL3V0aWxzL2ZpbGUudXRpbHNcIjtcclxuaW1wb3J0IHtVbml2ZXJzYWxTZXJ2aWNlfSBmcm9tIFwiLi4vc2VydmljZXMvdW5pdmVyc2FsLnNlcnZpY2VcIjtcclxuXHJcbmNvbnN0IGRlZmF1bHRDbGFzcyA9IFwiZGVmYXVsdC1pbWFnZVwiO1xyXG5jb25zdCBsb2FkaW5nQ2xhc3MgPSBcImxvYWRpbmctaW1hZ2VcIjtcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6IFwiW2JhY2tncm91bmRdXCJcclxufSlcclxuZXhwb3J0IGNsYXNzIEJhY2tncm91bmREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG5cclxuICAgIEBJbnB1dCgpIGJhY2tncm91bmQ6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGJhY2tncm91bmRTaXplOiBzdHJpbmc7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSB1bml2ZXJzYWw6IFVuaXZlcnNhbFNlcnZpY2UpIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnVuaXZlcnNhbC5pc1NlcnZlcikge1xyXG4gICAgICAgICAgICB0aGlzLnNldEJhY2tncm91bmQodGhpcy5iYWNrZ3JvdW5kKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LCBkZWZhdWx0Q2xhc3MpO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIGxvYWRpbmdDbGFzcyk7XHJcbiAgICAgICAgRmlsZVV0aWxzLnJlYWREYXRhRnJvbVVybCh0aGlzLmh0dHAsIHRoaXMuYmFja2dyb3VuZCkudGhlbih1cmwgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNldEJhY2tncm91bmQodXJsKTtcclxuICAgICAgICB9LCAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIGxvYWRpbmdDbGFzcyk7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIGRlZmF1bHRDbGFzcyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzZXRCYWNrZ3JvdW5kKHVybDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgbG9hZGluZ0NsYXNzKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LCBcImJhY2tncm91bmQtaW1hZ2VcIiwgYHVybCgnJHt1cmx9JylgKTtcclxuICAgICAgICBpZiAoIXRoaXMuYmFja2dyb3VuZFNpemUpIHJldHVybjtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LCBcImJhY2tncm91bmQtc2l6ZVwiLCB0aGlzLmJhY2tncm91bmRTaXplKTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Directive, Input, TemplateRef } from "@angular/core";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class DynamicTableTemplateDirective {
|
|
4
|
+
constructor(ref) {
|
|
5
|
+
this.ref = ref;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
DynamicTableTemplateDirective.ɵfac = function DynamicTableTemplateDirective_Factory(t) { return new (t || DynamicTableTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef)); };
|
|
9
|
+
DynamicTableTemplateDirective.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: DynamicTableTemplateDirective, selectors: [["ng-template", "column", ""]], inputs: { column: "column", pure: "pure" } });
|
|
10
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DynamicTableTemplateDirective, [{
|
|
11
|
+
type: Directive,
|
|
12
|
+
args: [{
|
|
13
|
+
selector: "ng-template[column]"
|
|
14
|
+
}]
|
|
15
|
+
}], function () { return [{ type: i0.TemplateRef }]; }, { column: [{
|
|
16
|
+
type: Input
|
|
17
|
+
}], pure: [{
|
|
18
|
+
type: Input
|
|
19
|
+
}] }); })();
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy10YWJsZS10ZW1wbGF0ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL2RpcmVjdGl2ZXMvZHluYW1pYy10YWJsZS10ZW1wbGF0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFDLE1BQU0sZUFBZSxDQUFDOztBQU81RCxNQUFNLE9BQU8sNkJBQTZCO0lBS3RDLFlBQW1CLEdBQXFCO1FBQXJCLFFBQUcsR0FBSCxHQUFHLENBQWtCO0lBQ3hDLENBQUM7OzBHQU5RLDZCQUE2QjtnRkFBN0IsNkJBQTZCO3VGQUE3Qiw2QkFBNkI7Y0FKekMsU0FBUztlQUFDO2dCQUNQLFFBQVEsRUFBRSxxQkFBcUI7YUFDbEM7OERBSVksTUFBTTtrQkFBZCxLQUFLO1lBQ0csSUFBSTtrQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIElucHV0LCBUZW1wbGF0ZVJlZn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtJVGFibGVUZW1wbGF0ZX0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogXCJuZy10ZW1wbGF0ZVtjb2x1bW5dXCJcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBEeW5hbWljVGFibGVUZW1wbGF0ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIElUYWJsZVRlbXBsYXRlIHtcclxuXHJcbiAgICBASW5wdXQoKSBjb2x1bW46IHN0cmluZyB8IHN0cmluZ1tdO1xyXG4gICAgQElucHV0KCkgcHVyZTogYm9vbGVhbjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVmOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Directive, Inject, Input, TemplateRef } from "@angular/core";
|
|
2
|
+
import { GLOBAL_TEMPLATES } from "../common-types";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class GlobalTemplateDirective {
|
|
5
|
+
constructor(globalTemplates, template) {
|
|
6
|
+
this.globalTemplates = globalTemplates;
|
|
7
|
+
this.template = template;
|
|
8
|
+
}
|
|
9
|
+
ngOnInit() {
|
|
10
|
+
this.globalTemplates.add(this.id, this.template);
|
|
11
|
+
}
|
|
12
|
+
ngOnDestroy() {
|
|
13
|
+
this.globalTemplates.remove(this.id);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
GlobalTemplateDirective.ɵfac = function GlobalTemplateDirective_Factory(t) { return new (t || GlobalTemplateDirective)(i0.ɵɵdirectiveInject(GLOBAL_TEMPLATES), i0.ɵɵdirectiveInject(i0.TemplateRef)); };
|
|
17
|
+
GlobalTemplateDirective.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: GlobalTemplateDirective, selectors: [["", "globalTemplate", ""]], inputs: { id: ["globalTemplate", "id"] } });
|
|
18
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(GlobalTemplateDirective, [{
|
|
19
|
+
type: Directive,
|
|
20
|
+
args: [{
|
|
21
|
+
selector: "[globalTemplate]"
|
|
22
|
+
}]
|
|
23
|
+
}], function () { return [{ type: undefined, decorators: [{
|
|
24
|
+
type: Inject,
|
|
25
|
+
args: [GLOBAL_TEMPLATES]
|
|
26
|
+
}] }, { type: i0.TemplateRef }]; }, { id: [{
|
|
27
|
+
type: Input,
|
|
28
|
+
args: ["globalTemplate"]
|
|
29
|
+
}] }); })();
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLXRlbXBsYXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZ3gtdXRpbHMvZGlyZWN0aXZlcy9nbG9iYWwtdGVtcGxhdGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsV0FBVyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBQyxnQkFBZ0IsRUFBbUIsTUFBTSxpQkFBaUIsQ0FBQzs7QUFLbkUsTUFBTSxPQUFPLHVCQUF1QjtJQUloQyxZQUErQyxlQUFpQyxFQUMzRCxRQUEwQjtRQURBLG9CQUFlLEdBQWYsZUFBZSxDQUFrQjtRQUMzRCxhQUFRLEdBQVIsUUFBUSxDQUFrQjtJQUUvQyxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7OzhGQWZRLHVCQUF1Qix1QkFJWixnQkFBZ0I7MEVBSjNCLHVCQUF1Qjt1RkFBdkIsdUJBQXVCO2NBSG5DLFNBQVM7ZUFBQztnQkFDUCxRQUFRLEVBQUUsa0JBQWtCO2FBQy9COztzQkFLZ0IsTUFBTTt1QkFBQyxnQkFBZ0I7a0RBRlgsRUFBRTtrQkFBMUIsS0FBSzttQkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgSW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFRlbXBsYXRlUmVmfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0dMT0JBTF9URU1QTEFURVMsIElHbG9iYWxUZW1wbGF0ZXN9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6IFwiW2dsb2JhbFRlbXBsYXRlXVwiXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHbG9iYWxUZW1wbGF0ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgICBASW5wdXQoXCJnbG9iYWxUZW1wbGF0ZVwiKSBpZDogc3RyaW5nO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoR0xPQkFMX1RFTVBMQVRFUykgcmVhZG9ubHkgZ2xvYmFsVGVtcGxhdGVzOiBJR2xvYmFsVGVtcGxhdGVzLFxyXG4gICAgICAgICAgICAgICAgcmVhZG9ubHkgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5nbG9iYWxUZW1wbGF0ZXMuYWRkKHRoaXMuaWQsIHRoaXMudGVtcGxhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZ2xvYmFsVGVtcGxhdGVzLnJlbW92ZSh0aGlzLmlkKTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { Directive, ElementRef, EventEmitter, HostBinding, HostListener, Inject, Input, Output, Renderer2 } from "@angular/core";
|
|
2
|
+
import { ICON_SERVICE } from "../common-types";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class IconDirective {
|
|
5
|
+
constructor(element, renderer, icons) {
|
|
6
|
+
this.element = element;
|
|
7
|
+
this.renderer = renderer;
|
|
8
|
+
this.icons = icons;
|
|
9
|
+
this.renderer.addClass(this.element.nativeElement, "svg-icon");
|
|
10
|
+
this.activeChange = new EventEmitter();
|
|
11
|
+
}
|
|
12
|
+
get isActive() {
|
|
13
|
+
return this.active;
|
|
14
|
+
}
|
|
15
|
+
ngOnInit() {
|
|
16
|
+
this.iconsLoaded = this.icons.iconsLoaded.subscribe(() => this.changeIcon());
|
|
17
|
+
}
|
|
18
|
+
ngOnDestroy() {
|
|
19
|
+
if (this.iconsLoaded)
|
|
20
|
+
this.iconsLoaded.unsubscribe();
|
|
21
|
+
}
|
|
22
|
+
ngOnChanges(changes) {
|
|
23
|
+
if (changes.icon) {
|
|
24
|
+
this.renderer.removeClass(this.element.nativeElement, `svg-icon-${changes.icon.previousValue}`);
|
|
25
|
+
this.renderer.addClass(this.element.nativeElement, `svg-icon-${changes.icon.currentValue}`);
|
|
26
|
+
}
|
|
27
|
+
this.changeIcon();
|
|
28
|
+
}
|
|
29
|
+
click() {
|
|
30
|
+
this.active = !this.active;
|
|
31
|
+
this.activeChange.emit(this.active);
|
|
32
|
+
this.changeIcon();
|
|
33
|
+
}
|
|
34
|
+
changeIcon() {
|
|
35
|
+
this.icons.getIcon(this.icon, this.activeIcon || `${this.icon}-active`, this.active).then(icon => {
|
|
36
|
+
if (this.icons.isDisabled)
|
|
37
|
+
return;
|
|
38
|
+
this.element.nativeElement.innerHTML = icon;
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
IconDirective.ɵfac = function IconDirective_Factory(t) { return new (t || IconDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(ICON_SERVICE)); };
|
|
43
|
+
IconDirective.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: IconDirective, selectors: [["", "icon", ""]], hostVars: 2, hostBindings: function IconDirective_HostBindings(rf, ctx) { if (rf & 1) {
|
|
44
|
+
i0.ɵɵlistener("click", function IconDirective_click_HostBindingHandler() { return ctx.click(); });
|
|
45
|
+
} if (rf & 2) {
|
|
46
|
+
i0.ɵɵclassProp("active", ctx.isActive);
|
|
47
|
+
} }, inputs: { icon: "icon", activeIcon: "activeIcon", active: "active" }, outputs: { activeChange: "activeChange" }, features: [i0.ɵɵNgOnChangesFeature] });
|
|
48
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(IconDirective, [{
|
|
49
|
+
type: Directive,
|
|
50
|
+
args: [{
|
|
51
|
+
selector: "[icon]"
|
|
52
|
+
}]
|
|
53
|
+
}], function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
|
|
54
|
+
type: Inject,
|
|
55
|
+
args: [ICON_SERVICE]
|
|
56
|
+
}] }]; }, { icon: [{
|
|
57
|
+
type: Input
|
|
58
|
+
}], activeIcon: [{
|
|
59
|
+
type: Input
|
|
60
|
+
}], active: [{
|
|
61
|
+
type: Input
|
|
62
|
+
}], activeChange: [{
|
|
63
|
+
type: Output
|
|
64
|
+
}], isActive: [{
|
|
65
|
+
type: HostBinding,
|
|
66
|
+
args: ["class.active"]
|
|
67
|
+
}], click: [{
|
|
68
|
+
type: HostListener,
|
|
69
|
+
args: ["click"]
|
|
70
|
+
}] }); })();
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL2RpcmVjdGl2ZXMvaWNvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFJTCxNQUFNLEVBQ04sU0FBUyxFQUVaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxZQUFZLEVBQWUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFLM0QsTUFBTSxPQUFPLGFBQWE7SUFjdEIsWUFBb0IsT0FBbUIsRUFBVSxRQUFtQixFQUFnQyxLQUFtQjtRQUFuRyxZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUFnQyxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25ILElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQUNwRCxDQUFDO0lBVkQsSUFDSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFTRCxRQUFRO1FBQ0osSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLElBQUksQ0FBQyxXQUFXO1lBQ2hCLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDZCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxZQUFZLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztZQUNoRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxZQUFZLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztTQUMvRjtRQUNELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBR0QsS0FBSztRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVPLFVBQVU7UUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM3RixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVTtnQkFBRSxPQUFPO1lBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzswRUFoRFEsYUFBYSxnR0Fjd0QsWUFBWTtnRUFkakYsYUFBYTswRkFBYixXQUFPOzs7O3VGQUFQLGFBQWE7Y0FIekIsU0FBUztlQUFDO2dCQUNQLFFBQVEsRUFBRSxRQUFRO2FBQ3JCOztzQkFlMEUsTUFBTTt1QkFBQyxZQUFZO3dCQVpqRixJQUFJO2tCQUFaLEtBQUs7WUFDRyxVQUFVO2tCQUFsQixLQUFLO1lBQ0csTUFBTTtrQkFBZCxLQUFLO1lBQ0ksWUFBWTtrQkFBckIsTUFBTTtZQUdILFFBQVE7a0JBRFgsV0FBVzttQkFBQyxjQUFjO1lBOEIzQixLQUFLO2tCQURKLFlBQVk7bUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBEaXJlY3RpdmUsXHJcbiAgICBFbGVtZW50UmVmLFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgSG9zdEJpbmRpbmcsXHJcbiAgICBIb3N0TGlzdGVuZXIsXHJcbiAgICBJbmplY3QsXHJcbiAgICBJbnB1dCxcclxuICAgIE9uQ2hhbmdlcyxcclxuICAgIE9uRGVzdHJveSxcclxuICAgIE9uSW5pdCxcclxuICAgIE91dHB1dCxcclxuICAgIFJlbmRlcmVyMixcclxuICAgIFNpbXBsZUNoYW5nZXNcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHtJQ09OX1NFUlZJQ0UsIElJY29uU2VydmljZX0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogXCJbaWNvbl1cIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgSWNvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICAgIEBJbnB1dCgpIGljb246IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGFjdGl2ZUljb246IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGFjdGl2ZTogYm9vbGVhbjtcclxuICAgIEBPdXRwdXQoKSBhY3RpdmVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPjtcclxuXHJcbiAgICBASG9zdEJpbmRpbmcoXCJjbGFzcy5hY3RpdmVcIilcclxuICAgIGdldCBpc0FjdGl2ZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGljb25zTG9hZGVkOiBTdWJzY3JpcHRpb247XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsIEBJbmplY3QoSUNPTl9TRVJWSUNFKSBwcml2YXRlIGljb25zOiBJSWNvblNlcnZpY2UpIHtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LCBcInN2Zy1pY29uXCIpO1xyXG4gICAgICAgIHRoaXMuYWN0aXZlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaWNvbnNMb2FkZWQgPSB0aGlzLmljb25zLmljb25zTG9hZGVkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNoYW5nZUljb24oKSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuaWNvbnNMb2FkZWQpXHJcbiAgICAgICAgICAgIHRoaXMuaWNvbnNMb2FkZWQudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGNoYW5nZXMuaWNvbikge1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LCBgc3ZnLWljb24tJHtjaGFuZ2VzLmljb24ucHJldmlvdXNWYWx1ZX1gKTtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgYHN2Zy1pY29uLSR7Y2hhbmdlcy5pY29uLmN1cnJlbnRWYWx1ZX1gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VJY29uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcihcImNsaWNrXCIpXHJcbiAgICBjbGljaygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmFjdGl2ZSA9ICF0aGlzLmFjdGl2ZTtcclxuICAgICAgICB0aGlzLmFjdGl2ZUNoYW5nZS5lbWl0KHRoaXMuYWN0aXZlKTtcclxuICAgICAgICB0aGlzLmNoYW5nZUljb24oKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNoYW5nZUljb24oKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5pY29ucy5nZXRJY29uKHRoaXMuaWNvbiwgdGhpcy5hY3RpdmVJY29uIHx8IGAke3RoaXMuaWNvbn0tYWN0aXZlYCwgdGhpcy5hY3RpdmUpLnRoZW4oaWNvbiA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmljb25zLmlzRGlzYWJsZWQpIHJldHVybjtcclxuICAgICAgICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gaWNvbjtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { Directive, Input, TemplateRef, ViewContainerRef } from "@angular/core";
|
|
2
|
+
import { ObjectUtils } from "../utils/object.utils";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class NgxTemplateOutletDirective {
|
|
5
|
+
constructor(_viewContainerRef) {
|
|
6
|
+
this._viewContainerRef = _viewContainerRef;
|
|
7
|
+
}
|
|
8
|
+
static hasContextShapeChanged(ctxChange) {
|
|
9
|
+
const prevCtxKeys = Object.keys(ctxChange.previousValue || {});
|
|
10
|
+
const currCtxKeys = Object.keys(ctxChange.currentValue || {});
|
|
11
|
+
if (prevCtxKeys.length === currCtxKeys.length) {
|
|
12
|
+
for (const propName of currCtxKeys) {
|
|
13
|
+
if (prevCtxKeys.indexOf(propName) === -1) {
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
ngOnChanges(changes) {
|
|
24
|
+
const recreateView = this.shouldRecreateView(changes);
|
|
25
|
+
if (recreateView) {
|
|
26
|
+
if (this.viewRef)
|
|
27
|
+
this._viewContainerRef.remove(this._viewContainerRef.indexOf(this.viewRef));
|
|
28
|
+
if (this.ngxTemplateOutlet)
|
|
29
|
+
this.viewRef = this._viewContainerRef.createEmbeddedView(this.ngxTemplateOutlet, {});
|
|
30
|
+
}
|
|
31
|
+
this.ngDoCheck();
|
|
32
|
+
}
|
|
33
|
+
ngDoCheck() {
|
|
34
|
+
if (!this.viewRef)
|
|
35
|
+
return;
|
|
36
|
+
const context = this.viewRef.context;
|
|
37
|
+
this.updateExistingContext(this.context, context);
|
|
38
|
+
this.updateExistingContext(this.additionalContext, context);
|
|
39
|
+
context.$implicit = context;
|
|
40
|
+
}
|
|
41
|
+
shouldRecreateView(changes) {
|
|
42
|
+
const ctxChange = changes["context"];
|
|
43
|
+
const aCtxChange = changes["additionalContext"];
|
|
44
|
+
return !!changes["ngxTemplateOutlet"]
|
|
45
|
+
|| (ctxChange && NgxTemplateOutletDirective.hasContextShapeChanged(ctxChange))
|
|
46
|
+
|| (aCtxChange && NgxTemplateOutletDirective.hasContextShapeChanged(aCtxChange));
|
|
47
|
+
}
|
|
48
|
+
updateExistingContext(ctx, context) {
|
|
49
|
+
if (!ctx)
|
|
50
|
+
return;
|
|
51
|
+
let ctxProto = Object.getPrototypeOf(ctx);
|
|
52
|
+
if (ctxProto == Object.prototype) {
|
|
53
|
+
ctxProto = ctx;
|
|
54
|
+
}
|
|
55
|
+
const props = Object.getOwnPropertyNames(ctxProto);
|
|
56
|
+
for (const propName of props) {
|
|
57
|
+
const desc = Object.getOwnPropertyDescriptor(ctxProto, propName);
|
|
58
|
+
// Copy if its a getter and it is not $implicit
|
|
59
|
+
if (desc.get && propName !== "$implicit") {
|
|
60
|
+
Object.defineProperty(context, propName, desc);
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
const func = ObjectUtils.isFunction(desc.value) ? desc.value.bind(ctx) : null;
|
|
64
|
+
if (func && func !== ctxProto.constructor) {
|
|
65
|
+
context[propName] = func;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
for (const propName of Object.keys(ctx)) {
|
|
69
|
+
const desc = Object.getOwnPropertyDescriptor(ctxProto, propName);
|
|
70
|
+
if (desc && desc.get && !desc.set)
|
|
71
|
+
continue;
|
|
72
|
+
context[propName] = ctx[propName];
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
NgxTemplateOutletDirective.ɵfac = function NgxTemplateOutletDirective_Factory(t) { return new (t || NgxTemplateOutletDirective)(i0.ɵɵdirectiveInject(i0.ViewContainerRef)); };
|
|
77
|
+
NgxTemplateOutletDirective.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: NgxTemplateOutletDirective, selectors: [["", "ngxTemplateOutlet", ""]], inputs: { context: "context", additionalContext: "additionalContext", ngxTemplateOutlet: "ngxTemplateOutlet" }, features: [i0.ɵɵNgOnChangesFeature] });
|
|
78
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NgxTemplateOutletDirective, [{
|
|
79
|
+
type: Directive,
|
|
80
|
+
args: [{
|
|
81
|
+
selector: "[ngxTemplateOutlet]"
|
|
82
|
+
}]
|
|
83
|
+
}], function () { return [{ type: i0.ViewContainerRef }]; }, { context: [{
|
|
84
|
+
type: Input
|
|
85
|
+
}], additionalContext: [{
|
|
86
|
+
type: Input
|
|
87
|
+
}], ngxTemplateOutlet: [{
|
|
88
|
+
type: Input
|
|
89
|
+
}] }); })();
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRlbXBsYXRlLW91dGxldC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL2RpcmVjdGl2ZXMvbmd4LXRlbXBsYXRlLW91dGxldC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCxLQUFLLEVBSUwsV0FBVyxFQUNYLGdCQUFnQixFQUNuQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7O0FBS2xELE1BQU0sT0FBTywwQkFBMEI7SUF3Qm5DLFlBQW9CLGlCQUFtQztRQUFuQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO0lBQUcsQ0FBQztJQWhCbkQsTUFBTSxDQUFDLHNCQUFzQixDQUFDLFNBQXVCO1FBQ3pELE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMvRCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDLENBQUM7UUFFOUQsSUFBSSxXQUFXLENBQUMsTUFBTSxLQUFLLFdBQVcsQ0FBQyxNQUFNLEVBQUU7WUFDM0MsS0FBSyxNQUFNLFFBQVEsSUFBSSxXQUFXLEVBQUU7Z0JBQ2hDLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtvQkFDdEMsT0FBTyxJQUFJLENBQUM7aUJBQ2Y7YUFDSjtZQUNELE9BQU8sS0FBSyxDQUFDO1NBQ2hCO2FBQU07WUFDSCxPQUFPLElBQUksQ0FBQztTQUNmO0lBQ0wsQ0FBQztJQUlELFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEQs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QUFJLENBQUMsR0FBRztnQkFBRSxTQUFTO1lBQzVDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDckM7SUFDTCxDQUFDOztvR0E5RVEsMEJBQTBCOzZFQUExQiwwQkFBMEI7dUZBQTFCLDBCQUEwQjtjQUh0QyxTQUFTO2VBQUM7Z0JBQ1AsUUFBUSxFQUFFLHFCQUFxQjthQUNsQzttRUFLbUIsT0FBTztrQkFBdEIsS0FBSztZQUNVLGlCQUFpQjtrQkFBaEMsS0FBSztZQUNVLGlCQUFpQjtrQkFBaEMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBEaXJlY3RpdmUsIERvQ2hlY2ssXHJcbiAgICBFbWJlZGRlZFZpZXdSZWYsXHJcbiAgICBJbnB1dCxcclxuICAgIE9uQ2hhbmdlcyxcclxuICAgIFNpbXBsZUNoYW5nZSxcclxuICAgIFNpbXBsZUNoYW5nZXMsXHJcbiAgICBUZW1wbGF0ZVJlZixcclxuICAgIFZpZXdDb250YWluZXJSZWZcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge09iamVjdFV0aWxzfSBmcm9tIFwiLi4vdXRpbHMvb2JqZWN0LnV0aWxzXCI7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiBcIltuZ3hUZW1wbGF0ZU91dGxldF1cIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4VGVtcGxhdGVPdXRsZXREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMsIERvQ2hlY2sge1xyXG5cclxuICAgIHByaXZhdGUgdmlld1JlZjogRW1iZWRkZWRWaWV3UmVmPGFueT47XHJcblxyXG4gICAgQElucHV0KCkgcHVibGljIGNvbnRleHQ6IE9iamVjdDtcclxuICAgIEBJbnB1dCgpIHB1YmxpYyBhZGRpdGlvbmFsQ29udGV4dDogT2JqZWN0O1xyXG4gICAgQElucHV0KCkgcHVibGljIG5neFRlbXBsYXRlT3V0bGV0OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIGhhc0NvbnRleHRTaGFwZUNoYW5nZWQoY3R4Q2hhbmdlOiBTaW1wbGVDaGFuZ2UpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBwcmV2Q3R4S2V5cyA9IE9iamVjdC5rZXlzKGN0eENoYW5nZS5wcmV2aW91c1ZhbHVlIHx8IHt9KTtcclxuICAgICAgICBjb25zdCBjdXJyQ3R4S2V5cyA9IE9iamVjdC5rZXlzKGN0eENoYW5nZS5jdXJyZW50VmFsdWUgfHwge30pO1xyXG5cclxuICAgICAgICBpZiAocHJldkN0eEtleXMubGVuZ3RoID09PSBjdXJyQ3R4S2V5cy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wTmFtZSBvZiBjdXJyQ3R4S2V5cykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHByZXZDdHhLZXlzLmluZGV4T2YocHJvcE5hbWUpID09PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge31cclxuXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICAgICAgY29uc3QgcmVjcmVhdGVWaWV3ID0gdGhpcy5zaG91bGRSZWNyZWF0ZVZpZXcoY2hhbmdlcyk7XHJcbiAgICAgICAgaWYgKHJlY3JlYXRlVmlldykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy52aWV3UmVmKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRhaW5lclJlZi5yZW1vdmUodGhpcy5fdmlld0NvbnRhaW5lclJlZi5pbmRleE9mKHRoaXMudmlld1JlZikpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5uZ3hUZW1wbGF0ZU91dGxldClcclxuICAgICAgICAgICAgICAgIHRoaXMudmlld1JlZiA9IHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMubmd4VGVtcGxhdGVPdXRsZXQsIHt9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5uZ0RvQ2hlY2soKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ0RvQ2hlY2soKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnZpZXdSZWYpIHJldHVybjtcclxuICAgICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy52aWV3UmVmLmNvbnRleHQ7XHJcbiAgICAgICAgdGhpcy51cGRhdGVFeGlzdGluZ0NvbnRleHQodGhpcy5jb250ZXh0LCBjb250ZXh0KTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUV4aXN0aW5nQ29udGV4dCh0aGlzLmFkZGl0aW9uYWxDb250ZXh0LCBjb250ZXh0KTtcclxuICAgICAgICBjb250ZXh0LiRpbXBsaWNpdCA9IGNvbnRleHQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzaG91bGRSZWNyZWF0ZVZpZXcoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IGN0eENoYW5nZSA9IGNoYW5nZXNbXCJjb250ZXh0XCJdO1xyXG4gICAgICAgIGNvbnN0IGFDdHhDaGFuZ2UgPSBjaGFuZ2VzW1wiYWRkaXRpb25hbENvbnRleHRcIl07XHJcbiAgICAgICAgcmV0dXJuICEhY2hhbmdlc1tcIm5neFRlbXBsYXRlT3V0bGV0XCJdXHJcbiAgICAgICAgICAgIHx8IChjdHhDaGFuZ2UgJiYgTmd4VGVtcGxhdGVPdXRsZXREaXJlY3RpdmUuaGFzQ29udGV4dFNoYXBlQ2hhbmdlZChjdHhDaGFuZ2UpKVxyXG4gICAgICAgICAgICB8fCAoYUN0eENoYW5nZSAmJiBOZ3hUZW1wbGF0ZU91dGxldERpcmVjdGl2ZS5oYXNDb250ZXh0U2hhcGVDaGFuZ2VkKGFDdHhDaGFuZ2UpKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHVwZGF0ZUV4aXN0aW5nQ29udGV4dChjdHg6IGFueSwgY29udGV4dDogYW55KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCFjdHgpIHJldHVybjtcclxuICAgICAgICBsZXQgY3R4UHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoY3R4KTtcclxuICAgICAgICBpZiAoY3R4UHJvdG8gPT0gT2JqZWN0LnByb3RvdHlwZSkge1xyXG4gICAgICAgICAgICBjdHhQcm90byA9IGN0eDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcHJvcHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhjdHhQcm90byk7XHJcbiAgICAgICAgZm9yIChjb25zdCBwcm9wTmFtZSBvZiBwcm9wcykge1xyXG4gICAgICAgICAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjdHhQcm90bywgcHJvcE5hbWUpO1xyXG4gICAgICAgICAgICAvLyBDb3B5IGlmIGl0cyBhIGdldHRlciBhbmQgaXQgaXMgbm90ICRpbXBsaWNpdFxyXG4gICAgICAgICAgICBpZiAoZGVzYy5nZXQgJiYgcHJvcE5hbWUgIT09IFwiJGltcGxpY2l0XCIpIHtcclxuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb250ZXh0LCBwcm9wTmFtZSwgZGVzYyk7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBmdW5jOiBGdW5jdGlvbiA9IE9iamVjdFV0aWxzLmlzRnVuY3Rpb24oZGVzYy52YWx1ZSkgPyBkZXNjLnZhbHVlLmJpbmQoY3R4KSA6IG51bGw7XHJcbiAgICAgICAgICAgIGlmIChmdW5jICYmIGZ1bmMgIT09IGN0eFByb3RvLmNvbnN0cnVjdG9yKSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0W3Byb3BOYW1lXSA9IGZ1bmM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChjb25zdCBwcm9wTmFtZSBvZiBPYmplY3Qua2V5cyhjdHgpKSB7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjdHhQcm90bywgcHJvcE5hbWUpO1xyXG4gICAgICAgICAgICBpZiAoZGVzYyAmJiBkZXNjLmdldCAmJiAhZGVzYy5zZXQpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBjb250ZXh0W3Byb3BOYW1lXSA9IGN0eFtwcm9wTmFtZV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Directive, TemplateRef, ViewContainerRef } from "@angular/core";
|
|
2
|
+
import { PaginationDirective } from "./pagination.directive";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "./pagination.directive";
|
|
5
|
+
export class PaginationItemDirective {
|
|
6
|
+
constructor(pagination, viewContainer, templateRef) {
|
|
7
|
+
this.pagination = pagination;
|
|
8
|
+
this.viewContainer = viewContainer;
|
|
9
|
+
this.templateRef = templateRef;
|
|
10
|
+
}
|
|
11
|
+
ngOnInit() {
|
|
12
|
+
this.onRefresh = this.pagination.onRefresh.subscribe(() => this.renderView());
|
|
13
|
+
}
|
|
14
|
+
ngOnDestroy() {
|
|
15
|
+
this.onRefresh.unsubscribe();
|
|
16
|
+
}
|
|
17
|
+
renderView() {
|
|
18
|
+
this.viewContainer.clear();
|
|
19
|
+
this.pagination.items.forEach((item) => {
|
|
20
|
+
item.$implicit = item;
|
|
21
|
+
this.viewContainer.createEmbeddedView(this.templateRef, item);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
PaginationItemDirective.ɵfac = function PaginationItemDirective_Factory(t) { return new (t || PaginationItemDirective)(i0.ɵɵdirectiveInject(i1.PaginationDirective), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i0.TemplateRef)); };
|
|
26
|
+
PaginationItemDirective.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PaginationItemDirective, selectors: [["", "paginationItem", ""]] });
|
|
27
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PaginationItemDirective, [{
|
|
28
|
+
type: Directive,
|
|
29
|
+
args: [{
|
|
30
|
+
selector: "[paginationItem]"
|
|
31
|
+
}]
|
|
32
|
+
}], function () { return [{ type: i1.PaginationDirective }, { type: i0.ViewContainerRef }, { type: i0.TemplateRef }]; }, null); })();
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi1pdGVtLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZ3gtdXRpbHMvZGlyZWN0aXZlcy9wYWdpbmF0aW9uLWl0ZW0uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQXFCLFdBQVcsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUUxRixPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBSzNELE1BQU0sT0FBTyx1QkFBdUI7SUFJaEMsWUFBb0IsVUFBK0IsRUFBVSxhQUErQixFQUFVLFdBQTZCO1FBQS9HLGVBQVUsR0FBVixVQUFVLENBQXFCO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO0lBRW5JLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFTyxVQUFVO1FBQ2QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtZQUN4QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN0QixJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEUsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzs4RkF0QlEsdUJBQXVCOzBFQUF2Qix1QkFBdUI7dUZBQXZCLHVCQUF1QjtjQUhuQyxTQUFTO2VBQUM7Z0JBQ1AsUUFBUSxFQUFFLGtCQUFrQjthQUMvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWZ9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge1BhZ2luYXRpb25EaXJlY3RpdmV9IGZyb20gXCIuL3BhZ2luYXRpb24uZGlyZWN0aXZlXCI7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiBcIltwYWdpbmF0aW9uSXRlbV1cIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGFnaW5hdGlvbkl0ZW1EaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gICAgcHJpdmF0ZSBvblJlZnJlc2g6IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBhZ2luYXRpb246IFBhZ2luYXRpb25EaXJlY3RpdmUsIHByaXZhdGUgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZiwgcHJpdmF0ZSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Pikge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uUmVmcmVzaCA9IHRoaXMucGFnaW5hdGlvbi5vblJlZnJlc2guc3Vic2NyaWJlKCgpID0+IHRoaXMucmVuZGVyVmlldygpKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uUmVmcmVzaC51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVuZGVyVmlldygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnZpZXdDb250YWluZXIuY2xlYXIoKTtcclxuICAgICAgICB0aGlzLnBhZ2luYXRpb24uaXRlbXMuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGl0ZW0uJGltcGxpY2l0ID0gaXRlbTtcclxuICAgICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmLCBpdGVtKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { Directive, EventEmitter, Input, NgZone, Output } from "@angular/core";
|
|
2
|
+
import { PaginationItemContext } from "../common-types";
|
|
3
|
+
import { TimerUtils } from "../utils/timer.utils";
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class PaginationDirective {
|
|
6
|
+
constructor(zone) {
|
|
7
|
+
this.zone = zone;
|
|
8
|
+
this.pageChange = new EventEmitter();
|
|
9
|
+
this.onRefresh = new EventEmitter();
|
|
10
|
+
this.updateTimer = TimerUtils.createTimeout(() => this.loadData(), this.updateTime);
|
|
11
|
+
}
|
|
12
|
+
get total() {
|
|
13
|
+
return this.data ? this.data.total : 0;
|
|
14
|
+
}
|
|
15
|
+
get items() {
|
|
16
|
+
return this.data ? this.data.items : [];
|
|
17
|
+
}
|
|
18
|
+
ngOnChanges(changes) {
|
|
19
|
+
if (!changes.loader && !changes.itemsPerPage && !changes.page)
|
|
20
|
+
return;
|
|
21
|
+
this.page = isNaN(this.page) || this.page < 1 ? 1 : this.page;
|
|
22
|
+
this.itemsPerPage = isNaN(this.itemsPerPage) || this.itemsPerPage < 1 ? 20 : this.itemsPerPage;
|
|
23
|
+
this.updateTimer.time = isNaN(this.updateTime) || this.updateTime < 0 ? 100 : this.updateTime;
|
|
24
|
+
this.waitFor = this.waitFor || Promise.resolve(true);
|
|
25
|
+
this.refresh();
|
|
26
|
+
}
|
|
27
|
+
refresh() {
|
|
28
|
+
this.waitFor.then(() => {
|
|
29
|
+
this.updateTimer.run();
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
paginate(page) {
|
|
33
|
+
this.page = page;
|
|
34
|
+
this.pageChange.emit(page);
|
|
35
|
+
this.refresh();
|
|
36
|
+
}
|
|
37
|
+
loadData() {
|
|
38
|
+
if (!this.loader)
|
|
39
|
+
return;
|
|
40
|
+
this.loader(this.page, this.itemsPerPage).then(data => {
|
|
41
|
+
this.maxPage = !data || data.total <= 0 ? 1 : Math.floor((data.total - 1) / this.itemsPerPage) + 1;
|
|
42
|
+
this.data = data;
|
|
43
|
+
const baseIndex = (this.page - 1) * this.itemsPerPage;
|
|
44
|
+
const items = (data.items || []);
|
|
45
|
+
data.items = items.map((item, index) => {
|
|
46
|
+
const ix = baseIndex + index;
|
|
47
|
+
return item instanceof PaginationItemContext
|
|
48
|
+
? item
|
|
49
|
+
: new PaginationItemContext(item, items, items.length, index, ix);
|
|
50
|
+
});
|
|
51
|
+
if (this.page > this.maxPage) {
|
|
52
|
+
this.paginate(this.maxPage);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
this.zone.run(() => this.onRefresh.emit(this));
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
PaginationDirective.ɵfac = function PaginationDirective_Factory(t) { return new (t || PaginationDirective)(i0.ɵɵdirectiveInject(i0.NgZone)); };
|
|
60
|
+
PaginationDirective.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PaginationDirective, selectors: [["", "pagination", ""]], inputs: { loader: ["pagination", "loader"], page: "page", itemsPerPage: "itemsPerPage", updateTime: "updateTime", waitFor: "waitFor" }, outputs: { pageChange: "pageChange", onRefresh: "onRefresh" }, exportAs: ["pagination"], features: [i0.ɵɵNgOnChangesFeature] });
|
|
61
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PaginationDirective, [{
|
|
62
|
+
type: Directive,
|
|
63
|
+
args: [{
|
|
64
|
+
selector: "[pagination]",
|
|
65
|
+
exportAs: "pagination"
|
|
66
|
+
}]
|
|
67
|
+
}], function () { return [{ type: i0.NgZone }]; }, { loader: [{
|
|
68
|
+
type: Input,
|
|
69
|
+
args: ["pagination"]
|
|
70
|
+
}], page: [{
|
|
71
|
+
type: Input
|
|
72
|
+
}], itemsPerPage: [{
|
|
73
|
+
type: Input
|
|
74
|
+
}], updateTime: [{
|
|
75
|
+
type: Input
|
|
76
|
+
}], waitFor: [{
|
|
77
|
+
type: Input
|
|
78
|
+
}], pageChange: [{
|
|
79
|
+
type: Output
|
|
80
|
+
}], onRefresh: [{
|
|
81
|
+
type: Output
|
|
82
|
+
}] }); })();
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL2RpcmVjdGl2ZXMvcGFnaW5hdGlvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBYSxNQUFNLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZHLE9BQU8sRUFBZ0QscUJBQXFCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7O0FBTWhELE1BQU0sT0FBTyxtQkFBbUI7SUF3QjVCLFlBQW9CLElBQVk7UUFBWixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQzVCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUM3QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBQ3pELElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3hGLENBQUM7SUExQkQsSUFBSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQXNCRCxXQUFXLENBQUMsT0FBc0I7UUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElB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Z0JBQzVCLE9BQU87YUFDVjtZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztzRkF0RVEsbUJBQW1CO3NFQUFuQixtQkFBbUI7dUZBQW5CLG1CQUFtQjtjQUovQixTQUFTO2VBQUM7Z0JBQ1AsUUFBUSxFQUFFLGNBQWM7Z0JBQ3hCLFFBQVEsRUFBRSxZQUFZO2FBQ3pCO3lEQVd3QixNQUFNO2tCQUExQixLQUFLO21CQUFDLFlBQVk7WUFDVixJQUFJO2tCQUFaLEtBQUs7WUFDRyxZQUFZO2tCQUFwQixLQUFLO1lBQ0csVUFBVTtrQkFBbEIsS0FBSztZQUNHLE9BQU87a0JBQWYsS0FBSztZQUVJLFVBQVU7a0JBQW5CLE1BQU07WUFDRyxTQUFTO2tCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE5nWm9uZSwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXN9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7SVBhZ2luYXRpb25EYXRhLCBJVGltZXIsIFBhZ2luYXRpb25EYXRhTG9hZGVyLCBQYWdpbmF0aW9uSXRlbUNvbnRleHR9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtUaW1lclV0aWxzfSBmcm9tIFwiLi4vdXRpbHMvdGltZXIudXRpbHNcIjtcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6IFwiW3BhZ2luYXRpb25dXCIsXHJcbiAgICBleHBvcnRBczogXCJwYWdpbmF0aW9uXCJcclxufSlcclxuZXhwb3J0IGNsYXNzIFBhZ2luYXRpb25EaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG5cclxuICAgIGdldCB0b3RhbCgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEgPyB0aGlzLmRhdGEudG90YWwgOiAwO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBpdGVtcygpOiBhbnlbXSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YSA/IHRoaXMuZGF0YS5pdGVtcyA6IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dChcInBhZ2luYXRpb25cIikgbG9hZGVyOiBQYWdpbmF0aW9uRGF0YUxvYWRlcjtcclxuICAgIEBJbnB1dCgpIHBhZ2U6IG51bWJlcjtcclxuICAgIEBJbnB1dCgpIGl0ZW1zUGVyUGFnZTogbnVtYmVyO1xyXG4gICAgQElucHV0KCkgdXBkYXRlVGltZTogbnVtYmVyO1xyXG4gICAgQElucHV0KCkgd2FpdEZvcjogUHJvbWlzZTxhbnk+O1xyXG5cclxuICAgIEBPdXRwdXQoKSBwYWdlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPjtcclxuICAgIEBPdXRwdXQoKSBvblJlZnJlc2g6IEV2ZW50RW1pdHRlcjxQYWdpbmF0aW9uRGlyZWN0aXZlPjtcclxuXHJcbiAgICBtYXhQYWdlOiBudW1iZXI7XHJcblxyXG4gICAgcHJpdmF0ZSBkYXRhOiBJUGFnaW5hdGlvbkRhdGE7XHJcbiAgICBwcml2YXRlIHVwZGF0ZVRpbWVyOiBJVGltZXI7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB6b25lOiBOZ1pvbmUpIHtcclxuICAgICAgICB0aGlzLnBhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuICAgICAgICB0aGlzLm9uUmVmcmVzaCA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnaW5hdGlvbkRpcmVjdGl2ZT4oKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZVRpbWVyID0gVGltZXJVdGlscy5jcmVhdGVUaW1lb3V0KCgpID0+IHRoaXMubG9hZERhdGEoKSwgdGhpcy51cGRhdGVUaW1lKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCFjaGFuZ2VzLmxvYWRlciAmJiAhY2hhbmdlcy5pdGVtc1BlclBhZ2UgJiYgIWNoYW5nZXMucGFnZSkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMucGFnZSA9IGlzTmFOKHRoaXMucGFnZSkgfHwgdGhpcy5wYWdlIDwgMSA/IDEgOiB0aGlzLnBhZ2U7XHJcbiAgICAgICAgdGhpcy5pdGVtc1BlclBhZ2UgPSBpc05hTih0aGlzLml0ZW1zUGVyUGFnZSkgfHwgdGhpcy5pdGVtc1BlclBhZ2UgPCAxID8gMjAgOiB0aGlzLml0ZW1zUGVyUGFnZTtcclxuICAgICAgICB0aGlzLnVwZGF0ZVRpbWVyLnRpbWUgPSBpc05hTih0aGlzLnVwZGF0ZVRpbWUpIHx8IHRoaXMudXBkYXRlVGltZSA8IDAgPyAxMDAgOiB0aGlzLnVwZGF0ZVRpbWU7XHJcbiAgICAgICAgdGhpcy53YWl0Rm9yID0gdGhpcy53YWl0Rm9yIHx8IFByb21pc2UucmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgIH1cclxuXHJcbiAgICByZWZyZXNoKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMud2FpdEZvci50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVUaW1lci5ydW4oKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwYWdpbmF0ZShwYWdlOiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnBhZ2UgPSBwYWdlO1xyXG4gICAgICAgIHRoaXMucGFnZUNoYW5nZS5lbWl0KHBhZ2UpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgbG9hZERhdGEoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmxvYWRlcikgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMubG9hZGVyKHRoaXMucGFnZSwgdGhpcy5pdGVtc1BlclBhZ2UpLnRoZW4oZGF0YSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubWF4UGFnZSA9ICFkYXRhIHx8IGRhdGEudG90YWwgPD0gMCA/IDEgOiBNYXRoLmZsb29yKChkYXRhLnRvdGFsIC0gMSkgLyB0aGlzLml0ZW1zUGVyUGFnZSkgKyAxO1xyXG4gICAgICAgICAgICB0aGlzLmRhdGEgPSBkYXRhO1xyXG4gICAgICAgICAgICBjb25zdCBiYXNlSW5kZXggPSAodGhpcy5wYWdlIC0gMSkgKiB0aGlzLml0ZW1zUGVyUGFnZTtcclxuICAgICAgICAgICAgY29uc3QgaXRlbXMgPSAoZGF0YS5pdGVtcyB8fCBbXSk7XHJcbiAgICAgICAgICAgIGRhdGEuaXRlbXMgPSBpdGVtcy5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpeCA9IGJhc2VJbmRleCArIGluZGV4O1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0gaW5zdGFuY2VvZiBQYWdpbmF0aW9uSXRlbUNvbnRleHRcclxuICAgICAgICAgICAgICAgICAgICA/IGl0ZW1cclxuICAgICAgICAgICAgICAgICAgICA6IG5ldyBQYWdpbmF0aW9uSXRlbUNvbnRleHQoaXRlbSwgaXRlbXMsIGl0ZW1zLmxlbmd0aCwgaW5kZXgsIGl4KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnBhZ2UgPiB0aGlzLm1heFBhZ2UpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdGUodGhpcy5tYXhQYWdlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHRoaXMub25SZWZyZXNoLmVtaXQodGhpcykpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Directive, ViewContainerRef, TemplateRef, Input } from "@angular/core";
|
|
2
|
+
import { HttpClient } from "@angular/common/http";
|
|
3
|
+
import { ResourceIfContext } from "../common-types";
|
|
4
|
+
import { FileUtils } from "../utils/file.utils";
|
|
5
|
+
import { UniversalService } from "../services/universal.service";
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/common/http";
|
|
8
|
+
import * as i2 from "../services/universal.service";
|
|
9
|
+
export class ResourceIfDirective {
|
|
10
|
+
constructor(http, viewContainer, templateRef, universal) {
|
|
11
|
+
this.http = http;
|
|
12
|
+
this.viewContainer = viewContainer;
|
|
13
|
+
this.templateRef = templateRef;
|
|
14
|
+
this.universal = universal;
|
|
15
|
+
this.context = new ResourceIfContext();
|
|
16
|
+
}
|
|
17
|
+
set resourceIf(resource) {
|
|
18
|
+
this.resource = resource;
|
|
19
|
+
this.renderView();
|
|
20
|
+
}
|
|
21
|
+
get resourceIf() {
|
|
22
|
+
return this.resource;
|
|
23
|
+
}
|
|
24
|
+
get url() {
|
|
25
|
+
return this.context.url;
|
|
26
|
+
}
|
|
27
|
+
renderView() {
|
|
28
|
+
this.context = new ResourceIfContext();
|
|
29
|
+
this.context.resource = this.resource;
|
|
30
|
+
this.viewContainer.clear();
|
|
31
|
+
if (this.universal.isBrowser && this.resource) {
|
|
32
|
+
FileUtils.readDataFromUrl(this.http, this.resource).then(url => {
|
|
33
|
+
this.context.url = url;
|
|
34
|
+
this.viewContainer.createEmbeddedView(this.templateRef, this.context);
|
|
35
|
+
}, console.log);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
ResourceIfDirective.ɵfac = function ResourceIfDirective_Factory(t) { return new (t || ResourceIfDirective)(i0.ɵɵdirectiveInject(i1.HttpClient), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i0.TemplateRef), i0.ɵɵdirectiveInject(i2.UniversalService)); };
|
|
40
|
+
ResourceIfDirective.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: ResourceIfDirective, selectors: [["", "resourceIf", ""]], inputs: { resourceIf: "resourceIf" }, exportAs: ["resourceIf"] });
|
|
41
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ResourceIfDirective, [{
|
|
42
|
+
type: Directive,
|
|
43
|
+
args: [{
|
|
44
|
+
selector: "[resourceIf]",
|
|
45
|
+
exportAs: "resourceIf"
|
|
46
|
+
}]
|
|
47
|
+
}], function () { return [{ type: i1.HttpClient }, { type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i2.UniversalService }]; }, { resourceIf: [{
|
|
48
|
+
type: Input
|
|
49
|
+
}] }); })();
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtaWYuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25neC11dGlscy9kaXJlY3RpdmVzL3Jlc291cmNlLWlmLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDOUUsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUM5QyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQzs7OztBQU0vRCxNQUFNLE9BQU8sbUJBQW1CO0lBbUI1QixZQUFvQixJQUFnQixFQUFVLGFBQStCLEVBQVUsV0FBNkIsRUFBVSxTQUEyQjtRQUFySSxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDckosSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7SUFDM0MsQ0FBQztJQWhCRCxJQUNJLFVBQVUsQ0FBQyxRQUFnQjtRQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxHQUFHO1FBQ0gsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztJQUM1QixDQUFDO0lBTU8sVUFBVTtRQUNkLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDM0MsU0FBUyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQzNELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMxRSxDQUFDLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ25CO0lBQ0wsQ0FBQzs7c0ZBakNRLG1CQUFtQjtzRUFBbkIsbUJBQW1CO3VGQUFuQixtQkFBbUI7Y0FKL0IsU0FBUztlQUFDO2dCQUNQLFFBQVEsRUFBRSxjQUFjO2dCQUN4QixRQUFRLEVBQUUsWUFBWTthQUN6QjtxSkFPTyxVQUFVO2tCQURiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgVmlld0NvbnRhaW5lclJlZiwgVGVtcGxhdGVSZWYsIElucHV0fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0h0dHBDbGllbnR9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQge1Jlc291cmNlSWZDb250ZXh0fSBmcm9tIFwiLi4vY29tbW9uLXR5cGVzXCI7XHJcbmltcG9ydCB7RmlsZVV0aWxzfSBmcm9tIFwiLi4vdXRpbHMvZmlsZS51dGlsc1wiO1xyXG5pbXBvcnQge1VuaXZlcnNhbFNlcnZpY2V9IGZyb20gXCIuLi9zZXJ2aWNlcy91bml2ZXJzYWwuc2VydmljZVwiO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogXCJbcmVzb3VyY2VJZl1cIixcclxuICAgIGV4cG9ydEFzOiBcInJlc291cmNlSWZcIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VJZkRpcmVjdGl2ZSB7XHJcblxyXG4gICAgcHJpdmF0ZSBjb250ZXh0OiBSZXNvdXJjZUlmQ29udGV4dDtcclxuICAgIHByaXZhdGUgcmVzb3VyY2U6IHN0cmluZztcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgc2V0IHJlc291cmNlSWYocmVzb3VyY2U6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMucmVzb3VyY2UgPSByZXNvdXJjZTtcclxuICAgICAgICB0aGlzLnJlbmRlclZpZXcoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgcmVzb3VyY2VJZigpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJlc291cmNlO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCB1cmwoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb250ZXh0LnVybDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZiwgcHJpdmF0ZSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PiwgcHJpdmF0ZSB1bml2ZXJzYWw6IFVuaXZlcnNhbFNlcnZpY2UpIHtcclxuICAgICAgICB0aGlzLmNvbnRleHQgPSBuZXcgUmVzb3VyY2VJZkNvbnRleHQoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHJlbmRlclZpZXcoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jb250ZXh0ID0gbmV3IFJlc291cmNlSWZDb250ZXh0KCk7XHJcbiAgICAgICAgdGhpcy5jb250ZXh0LnJlc291cmNlID0gdGhpcy5yZXNvdXJjZTtcclxuICAgICAgICB0aGlzLnZpZXdDb250YWluZXIuY2xlYXIoKTtcclxuICAgICAgICBpZiAodGhpcy51bml2ZXJzYWwuaXNCcm93c2VyICYmIHRoaXMucmVzb3VyY2UpIHtcclxuICAgICAgICAgICAgRmlsZVV0aWxzLnJlYWREYXRhRnJvbVVybCh0aGlzLmh0dHAsIHRoaXMucmVzb3VyY2UpLnRoZW4odXJsID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC51cmwgPSB1cmw7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGVSZWYsIHRoaXMuY29udGV4dCk7XHJcbiAgICAgICAgICAgIH0sIGNvbnNvbGUubG9nKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Directive, ElementRef, Input, Renderer2 } from "@angular/core";
|
|
2
|
+
import { EventsService } from "../services/events.service";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../services/events.service";
|
|
5
|
+
export class StickyClassDirective {
|
|
6
|
+
constructor(events, element, renderer) {
|
|
7
|
+
this.events = events;
|
|
8
|
+
this.element = element;
|
|
9
|
+
this.renderer = renderer;
|
|
10
|
+
}
|
|
11
|
+
ngOnInit() {
|
|
12
|
+
this.stickyUpdated = this.events.stickyUpdated.subscribe(() => {
|
|
13
|
+
if (this.events.isSticky) {
|
|
14
|
+
this.renderer.addClass(this.element.nativeElement, this.stickyClass || "sticky-sibling");
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
this.renderer.removeClass(this.element.nativeElement, this.stickyClass || "sticky-sibling");
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
ngOnDestroy() {
|
|
21
|
+
this.stickyUpdated.unsubscribe();
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
StickyClassDirective.ɵfac = function StickyClassDirective_Factory(t) { return new (t || StickyClassDirective)(i0.ɵɵdirectiveInject(i1.EventsService), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2)); };
|
|
25
|
+
StickyClassDirective.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: StickyClassDirective, selectors: [["", "stickyClass", ""]], inputs: { stickyClass: "stickyClass" } });
|
|
26
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(StickyClassDirective, [{
|
|
27
|
+
type: Directive,
|
|
28
|
+
args: [{
|
|
29
|
+
selector: "[stickyClass]"
|
|
30
|
+
}]
|
|
31
|
+
}], function () { return [{ type: i1.EventsService }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, { stickyClass: [{
|
|
32
|
+
type: Input
|
|
33
|
+
}] }); })();
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RpY2t5LWNsYXNzLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZ3gtdXRpbHMvZGlyZWN0aXZlcy9zdGlja3ktY2xhc3MuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBcUIsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpGLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQzs7O0FBS3pELE1BQU0sT0FBTyxvQkFBb0I7SUFNN0IsWUFBb0IsTUFBcUIsRUFBVSxPQUFtQixFQUFVLFFBQW1CO1FBQS9FLFdBQU0sR0FBTixNQUFNLENBQWU7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVztJQUNuRyxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUMxRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFO2dCQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsV0FBVyxJQUFJLGdCQUFnQixDQUFDLENBQUM7Z0JBQ3pGLE9BQU87YUFDVjtZQUNELElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxXQUFXLElBQUksZ0JBQWdCLENBQUMsQ0FBQztRQUNoRyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQyxDQUFDOzt3RkFyQlEsb0JBQW9CO3VFQUFwQixvQkFBb0I7dUZBQXBCLG9CQUFvQjtjQUhoQyxTQUFTO2VBQUM7Z0JBQ1AsUUFBUSxFQUFFLGVBQWU7YUFDNUI7aUhBR1ksV0FBVztrQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFJlbmRlcmVyMn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7RXZlbnRzU2VydmljZX0gZnJvbSBcIi4uL3NlcnZpY2VzL2V2ZW50cy5zZXJ2aWNlXCI7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiBcIltzdGlja3lDbGFzc11cIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3RpY2t5Q2xhc3NEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gICAgQElucHV0KCkgc3RpY2t5Q2xhc3M6IHN0cmluZztcclxuXHJcbiAgICBwcml2YXRlIHN0aWNreVVwZGF0ZWQ6IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGV2ZW50czogRXZlbnRzU2VydmljZSwgcHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnN0aWNreVVwZGF0ZWQgPSB0aGlzLmV2ZW50cy5zdGlja3lVcGRhdGVkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmV2ZW50cy5pc1N0aWNreSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgdGhpcy5zdGlja3lDbGFzcyB8fCBcInN0aWNreS1zaWJsaW5nXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIHRoaXMuc3RpY2t5Q2xhc3MgfHwgXCJzdGlja3ktc2libGluZ1wiKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnN0aWNreVVwZGF0ZWQudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { ChangeDetectorRef, Directive, ElementRef, HostBinding, HostListener } from "@angular/core";
|
|
2
|
+
import { TimerUtils } from "../utils/timer.utils";
|
|
3
|
+
import { EventsService } from "../services/events.service";
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../services/events.service";
|
|
6
|
+
export class StickyDirective {
|
|
7
|
+
constructor(cdr, events, element) {
|
|
8
|
+
this.cdr = cdr;
|
|
9
|
+
this.events = events;
|
|
10
|
+
this.element = element;
|
|
11
|
+
this.parentElement = this.element.nativeElement.parentElement;
|
|
12
|
+
this.updateTimer = TimerUtils.createTimeout(() => {
|
|
13
|
+
this.isUpdating = false;
|
|
14
|
+
this.cdr.detectChanges();
|
|
15
|
+
this.events.updateSticky(this.isSticky);
|
|
16
|
+
}, 10);
|
|
17
|
+
}
|
|
18
|
+
ngOnInit() {
|
|
19
|
+
this.eventForwarded = this.events.eventForwarded.subscribe((e) => {
|
|
20
|
+
if (e && e.type === "scroll")
|
|
21
|
+
this.updateSticky();
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
ngOnDestroy() {
|
|
25
|
+
this.eventForwarded.unsubscribe();
|
|
26
|
+
}
|
|
27
|
+
updateSticky() {
|
|
28
|
+
const distanceToTop = this.parentElement.getBoundingClientRect().top;
|
|
29
|
+
this.isSticky = distanceToTop < 1;
|
|
30
|
+
this.isUpdating = true;
|
|
31
|
+
this.cdr.detectChanges();
|
|
32
|
+
this.updateTimer.run();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
StickyDirective.ɵfac = function StickyDirective_Factory(t) { return new (t || StickyDirective)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.EventsService), i0.ɵɵdirectiveInject(i0.ElementRef)); };
|
|
36
|
+
StickyDirective.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: StickyDirective, selectors: [["", "sticky", ""]], hostVars: 4, hostBindings: function StickyDirective_HostBindings(rf, ctx) { if (rf & 1) {
|
|
37
|
+
i0.ɵɵlistener("resize", function StickyDirective_resize_HostBindingHandler() { return ctx.updateSticky(); }, false, i0.ɵɵresolveWindow)("scroll", function StickyDirective_scroll_HostBindingHandler() { return ctx.updateSticky(); }, false, i0.ɵɵresolveWindow);
|
|
38
|
+
} if (rf & 2) {
|
|
39
|
+
i0.ɵɵclassProp("sticky", ctx.isSticky)("sticky-update", ctx.isUpdating);
|
|
40
|
+
} } });
|
|
41
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(StickyDirective, [{
|
|
42
|
+
type: Directive,
|
|
43
|
+
args: [{
|
|
44
|
+
selector: "[sticky]"
|
|
45
|
+
}]
|
|
46
|
+
}], function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.EventsService }, { type: i0.ElementRef }]; }, { isSticky: [{
|
|
47
|
+
type: HostBinding,
|
|
48
|
+
args: ["class.sticky"]
|
|
49
|
+
}], isUpdating: [{
|
|
50
|
+
type: HostBinding,
|
|
51
|
+
args: ["class.sticky-update"]
|
|
52
|
+
}], updateSticky: [{
|
|
53
|
+
type: HostListener,
|
|
54
|
+
args: ["window:resize"]
|
|
55
|
+
}, {
|
|
56
|
+
type: HostListener,
|
|
57
|
+
args: ["window:scroll"]
|
|
58
|
+
}] }); })();
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RpY2t5LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZ3gtdXRpbHMvZGlyZWN0aXZlcy9zdGlja3kuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBR3JILE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7OztBQUt6RCxNQUFNLE9BQU8sZUFBZTtJQVN4QixZQUFvQixHQUFzQixFQUFVLE1BQXFCLEVBQVUsT0FBbUI7UUFBbEYsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUNsRyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQztRQUM5RCxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFO1lBQzdDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFRLEVBQUUsRUFBRTtZQUNwRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLFFBQVE7Z0JBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFJRCxZQUFZO1FBQ1IsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEdBQUcsQ0FBQztRQUNyRSxJQUFJLENBQUMsUUFBUSxHQUFHLGFBQWEsR0FBRyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQzNCLENBQUM7OzhFQXBDUSxlQUFlO2tFQUFmLGVBQWU7OEZBQWYsa0JBQWMsd0dBQWQsa0JBQWM7Ozs7dUZBQWQsZUFBZTtjQUgzQixTQUFTO2VBQUM7Z0JBQ1AsUUFBUSxFQUFFLFVBQVU7YUFDdkI7eUhBR2dDLFFBQVE7a0JBQXBDLFdBQVc7bUJBQUMsY0FBYztZQUNTLFVBQVU7a0JBQTdDLFdBQVc7bUJBQUMscUJBQXFCO1lBMkJsQyxZQUFZO2tCQUZYLFlBQVk7bUJBQUMsZUFBZTs7a0JBQzVCLFlBQVk7bUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgT25EZXN0cm95LCBPbkluaXR9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge0lUaW1lcn0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5pbXBvcnQge1RpbWVyVXRpbHN9IGZyb20gXCIuLi91dGlscy90aW1lci51dGlsc1wiO1xyXG5pbXBvcnQge0V2ZW50c1NlcnZpY2V9IGZyb20gXCIuLi9zZXJ2aWNlcy9ldmVudHMuc2VydmljZVwiO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogXCJbc3RpY2t5XVwiXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdGlja3lEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gICAgQEhvc3RCaW5kaW5nKFwiY2xhc3Muc3RpY2t5XCIpIGlzU3RpY2t5OiBib29sZWFuO1xyXG4gICAgQEhvc3RCaW5kaW5nKFwiY2xhc3Muc3RpY2t5LXVwZGF0ZVwiKSBpc1VwZGF0aW5nOiBib29sZWFuO1xyXG4gICAgcGFyZW50RWxlbWVudDogSFRNTEVsZW1lbnQ7XHJcblxyXG4gICAgcHJpdmF0ZSB1cGRhdGVUaW1lcjogSVRpbWVyO1xyXG4gICAgcHJpdmF0ZSBldmVudEZvcndhcmRlZDogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSBldmVudHM6IEV2ZW50c1NlcnZpY2UsIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZikge1xyXG4gICAgICAgIHRoaXMucGFyZW50RWxlbWVudCA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQ7XHJcbiAgICAgICAgdGhpcy51cGRhdGVUaW1lciA9IFRpbWVyVXRpbHMuY3JlYXRlVGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNVcGRhdGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnRzLnVwZGF0ZVN0aWNreSh0aGlzLmlzU3RpY2t5KTtcclxuICAgICAgICB9LCAxMCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5ldmVudEZvcndhcmRlZCA9IHRoaXMuZXZlbnRzLmV2ZW50Rm9yd2FyZGVkLnN1YnNjcmliZSgoZTogRXZlbnQpID0+IHtcclxuICAgICAgICAgICAgaWYgKGUgJiYgZS50eXBlID09PSBcInNjcm9sbFwiKSB0aGlzLnVwZGF0ZVN0aWNreSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZXZlbnRGb3J3YXJkZWQudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKFwid2luZG93OnJlc2l6ZVwiKVxyXG4gICAgQEhvc3RMaXN0ZW5lcihcIndpbmRvdzpzY3JvbGxcIilcclxuICAgIHVwZGF0ZVN0aWNreSgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBkaXN0YW5jZVRvVG9wID0gdGhpcy5wYXJlbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcclxuICAgICAgICB0aGlzLmlzU3RpY2t5ID0gZGlzdGFuY2VUb1RvcCA8IDE7XHJcbiAgICAgICAgdGhpcy5pc1VwZGF0aW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVUaW1lci5ydW4oKTtcclxuICAgIH1cclxufVxyXG4iXX0=
|