adb-shared 1.0.17 → 1.0.20

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.
@@ -1,48 +1,41 @@
1
- import { Component, Output, EventEmitter, ViewChild, Input } from '@angular/core';
1
+ import { Directive, EventEmitter, HostBinding, Output } from "@angular/core";
2
2
  import * as i0 from "@angular/core";
3
3
  export class InfiniteScrollComponent {
4
- constructor(host) {
5
- this.host = host;
6
- this.options = {};
7
- this.scrolled = new EventEmitter();
8
- }
9
- get element() {
10
- return this.host.nativeElement;
11
- }
12
- ngOnInit() {
13
- const options = Object.assign({ root: this.isHostScrollable() ? this.host.nativeElement : null }, this.options);
14
- this.observer = new IntersectionObserver(([entry]) => {
15
- // eslint-disable-next-line @typescript-eslint/no-unused-expressions
16
- entry.isIntersecting && this.scrolled.emit();
17
- }, options);
4
+ constructor(_element) {
5
+ this._element = _element;
6
+ this.onVisible = new EventEmitter();
7
+ this.height = '1px';
8
+ this.checkForIntersection = (entries) => {
9
+ entries.forEach((entry) => {
10
+ const isIntersecting = entry.isIntersecting &&
11
+ entry.target === this._element.nativeElement;
12
+ if (isIntersecting) {
13
+ this.onVisible.emit();
14
+ }
15
+ });
16
+ };
18
17
  }
19
18
  ngAfterViewInit() {
20
- this.observer.observe(this.anchor.nativeElement);
21
- }
22
- isHostScrollable() {
23
- const style = window.getComputedStyle(this.element);
24
- return style.getPropertyValue('overflow') === 'auto' ||
25
- style.getPropertyValue('overflow-y') === 'scroll';
19
+ this._intersectionObserver = new IntersectionObserver(entries => {
20
+ this.checkForIntersection(entries);
21
+ }, {});
22
+ this._intersectionObserver.observe(this._element.nativeElement);
26
23
  }
27
24
  ngOnDestroy() {
28
- var _a;
29
- (_a = this.observer) === null || _a === void 0 ? void 0 : _a.disconnect();
25
+ if (this._intersectionObserver) {
26
+ this._intersectionObserver.disconnect();
27
+ }
30
28
  }
31
29
  }
32
- /** @nocollapse */ InfiniteScrollComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: InfiniteScrollComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
33
- /** @nocollapse */ InfiniteScrollComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: InfiniteScrollComponent, selector: "adb-infinite-scroll", inputs: { options: "options" }, outputs: { scrolled: "scrolled" }, viewQueries: [{ propertyName: "anchor", first: true, predicate: ["anchor"], descendants: true }], ngImport: i0, template: '<ng-content></ng-content><div #anchor></div>', isInline: true });
30
+ /** @nocollapse */ InfiniteScrollComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: InfiniteScrollComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
31
+ /** @nocollapse */ InfiniteScrollComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: InfiniteScrollComponent, selector: "[onVisible]", outputs: { onVisible: "onVisible" }, host: { properties: { "style.height": "this.height" } }, ngImport: i0 });
34
32
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: InfiniteScrollComponent, decorators: [{
35
- type: Component,
36
- args: [{
37
- selector: 'adb-infinite-scroll',
38
- template: '<ng-content></ng-content><div #anchor></div>'
39
- }]
40
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { options: [{
41
- type: Input
42
- }], scrolled: [{
33
+ type: Directive,
34
+ args: [{ selector: "[onVisible]" }]
35
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { onVisible: [{
43
36
  type: Output
44
- }], anchor: [{
45
- type: ViewChild,
46
- args: ['anchor']
37
+ }], height: [{
38
+ type: HostBinding,
39
+ args: ['style.height']
47
40
  }] } });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5maW5pdGUtc2Nyb2xsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FydGRhdGEtc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy9wYWdlcnMvaW5maW5pdGUtc2Nyb2xsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxZQUFZLEVBQWMsU0FBUyxFQUFFLEtBQUssRUFBNEIsTUFBTSxlQUFlLENBQUM7O0FBTWhJLE1BQU0sT0FBTyx1QkFBdUI7SUFLaEMsWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUozQixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ1osYUFBUSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFHQSxDQUFDO0lBQ3pDLElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDbkMsQ0FBQztJQUNELFFBQVE7UUFDSixNQUFNLE9BQU8sbUJBQ1QsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUMzRCxJQUFJLENBQUMsT0FBTyxDQUNsQixDQUFDO1FBRUYsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFO1lBQ2pELG9FQUFvRTtZQUNwRSxLQUFLLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDakQsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFDRCxlQUFlO1FBQ1gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBQ08sZ0JBQWdCO1FBQ3BCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFcEQsT0FBTyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLEtBQUssTUFBTTtZQUNoRCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLEtBQUssUUFBUSxDQUFDO0lBQzFELENBQUM7SUFFRCxXQUFXOztRQUNQLE1BQUEsSUFBSSxDQUFDLFFBQVEsMENBQUUsVUFBVSxFQUFFLENBQUM7SUFDaEMsQ0FBQzs7d0lBaENRLHVCQUF1Qjs0SEFBdkIsdUJBQXVCLGdPQUZ0Qiw4Q0FBOEM7NEZBRS9DLHVCQUF1QjtrQkFKbkMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixRQUFRLEVBQUUsOENBQThDO2lCQUMzRDtpR0FFWSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0ksUUFBUTtzQkFBakIsTUFBTTtnQkFDYyxNQUFNO3NCQUExQixTQUFTO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCwgSW5wdXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2FkYi1pbmZpbml0ZS1zY3JvbGwnLFxyXG4gICAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+PGRpdiAjYW5jaG9yPjwvZGl2PidcclxufSlcclxuZXhwb3J0IGNsYXNzIEluZmluaXRlU2Nyb2xsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xyXG4gICAgQElucHV0KCkgb3B0aW9ucyA9IHt9O1xyXG4gICAgQE91dHB1dCgpIHNjcm9sbGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQFZpZXdDaGlsZCgnYW5jaG9yJykgYW5jaG9yOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuICAgIHByaXZhdGUgb2JzZXJ2ZXI6IEludGVyc2VjdGlvbk9ic2VydmVyO1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBob3N0OiBFbGVtZW50UmVmKSB7IH1cclxuICAgIGdldCBlbGVtZW50KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmhvc3QubmF0aXZlRWxlbWVudDtcclxuICAgIH1cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgIHJvb3Q6IHRoaXMuaXNIb3N0U2Nyb2xsYWJsZSgpID8gdGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQgOiBudWxsLFxyXG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnNcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLm9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChbZW50cnldKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLWV4cHJlc3Npb25zXHJcbiAgICAgICAgICAgIGVudHJ5LmlzSW50ZXJzZWN0aW5nICYmIHRoaXMuc2Nyb2xsZWQuZW1pdCgpO1xyXG4gICAgICAgIH0sIG9wdGlvbnMpO1xyXG4gICAgfVxyXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMub2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmFuY2hvci5uYXRpdmVFbGVtZW50KTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgaXNIb3N0U2Nyb2xsYWJsZSgpIHtcclxuICAgICAgICBjb25zdCBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMuZWxlbWVudCk7XHJcblxyXG4gICAgICAgIHJldHVybiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdvdmVyZmxvdycpID09PSAnYXV0bycgfHxcclxuICAgICAgICAgICAgc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnb3ZlcmZsb3cteScpID09PSAnc2Nyb2xsJztcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLm9ic2VydmVyPy5kaXNjb25uZWN0KCk7XHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5maW5pdGUtc2Nyb2xsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FydGRhdGEtc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy9wYWdlcnMvaW5maW5pdGUtc2Nyb2xsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxZQUFZLEVBQUUsV0FBVyxFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHbkgsTUFBTSxPQUFPLHVCQUF1QjtJQUtoQyxZQUFvQixRQUFvQjtRQUFwQixhQUFRLEdBQVIsUUFBUSxDQUFZO1FBSnZCLGNBQVMsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN0QyxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBa0JwQyx5QkFBb0IsR0FBRyxDQUMzQixPQUF5QyxFQUMzQyxFQUFFO1lBQ0EsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQWdDLEVBQUUsRUFBRTtnQkFDakQsTUFBTSxjQUFjLEdBQ1YsS0FBTSxDQUFDLGNBQWM7b0JBQzNCLEtBQUssQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7Z0JBRWpELElBQUksY0FBYyxFQUFFO29CQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO2lCQUN6QjtZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDO0lBM0IwQyxDQUFDO0lBRXRDLGVBQWU7UUFDbEIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksb0JBQW9CLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDNUQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNQLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQVUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRU0sV0FBVztRQUNkLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQzVCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUMzQztJQUNMLENBQUM7O3dJQWxCUSx1QkFBdUI7NEhBQXZCLHVCQUF1Qjs0RkFBdkIsdUJBQXVCO2tCQURuQyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRTtpR0FFakIsU0FBUztzQkFBekIsTUFBTTtnQkFDc0IsTUFBTTtzQkFBbEMsV0FBVzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBPbkRlc3Ryb3ksIE91dHB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6IFwiW29uVmlzaWJsZV1cIiB9KVxyXG5leHBvcnQgY2xhc3MgSW5maW5pdGVTY3JvbGxDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgQE91dHB1dCgpIHB1YmxpYyBvblZpc2libGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5oZWlnaHQnKSBoZWlnaHQgPSAnMXB4JztcclxuICAgIHByaXZhdGUgX2ludGVyc2VjdGlvbk9ic2VydmVyPzogSW50ZXJzZWN0aW9uT2JzZXJ2ZXI7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfZWxlbWVudDogRWxlbWVudFJlZikgeyB9XHJcblxyXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICAgICB0aGlzLl9pbnRlcnNlY3Rpb25PYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihlbnRyaWVzID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja0ZvckludGVyc2VjdGlvbihlbnRyaWVzKTtcclxuICAgICAgICB9LCB7fSk7XHJcbiAgICAgICAgdGhpcy5faW50ZXJzZWN0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSg8RWxlbWVudD50aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICBpZiAodGhpcy5faW50ZXJzZWN0aW9uT2JzZXJ2ZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5faW50ZXJzZWN0aW9uT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNoZWNrRm9ySW50ZXJzZWN0aW9uID0gKFxyXG4gICAgICAgIGVudHJpZXM6IEFycmF5PEludGVyc2VjdGlvbk9ic2VydmVyRW50cnk+XHJcbiAgICApID0+IHtcclxuICAgICAgICBlbnRyaWVzLmZvckVhY2goKGVudHJ5OiBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzSW50ZXJzZWN0aW5nID1cclxuICAgICAgICAgICAgICAgICg8YW55PmVudHJ5KS5pc0ludGVyc2VjdGluZyAmJlxyXG4gICAgICAgICAgICAgICAgZW50cnkudGFyZ2V0ID09PSB0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XHJcblxyXG4gICAgICAgICAgICBpZiAoaXNJbnRlcnNlY3RpbmcpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMub25WaXNpYmxlLmVtaXQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxufVxyXG4iXX0=
@@ -1,17 +1,18 @@
1
1
  import { NgModule } from "@angular/core";
2
2
  import { ClickOutsideDirective } from "./click-outside.directive";
3
+ import { FocusDirective } from "./focus.directive";
3
4
  import * as i0 from "@angular/core";
4
5
  export class DirectivesModule {
5
6
  }
6
7
  /** @nocollapse */ DirectivesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: DirectivesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
7
- /** @nocollapse */ DirectivesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: DirectivesModule, declarations: [ClickOutsideDirective], exports: [ClickOutsideDirective] });
8
+ /** @nocollapse */ DirectivesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: DirectivesModule, declarations: [ClickOutsideDirective, FocusDirective], exports: [ClickOutsideDirective, FocusDirective] });
8
9
  /** @nocollapse */ DirectivesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: DirectivesModule, imports: [[]] });
9
10
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: DirectivesModule, decorators: [{
10
11
  type: NgModule,
11
12
  args: [{
12
13
  imports: [],
13
- declarations: [ClickOutsideDirective],
14
- exports: [ClickOutsideDirective]
14
+ declarations: [ClickOutsideDirective, FocusDirective],
15
+ exports: [ClickOutsideDirective, FocusDirective]
15
16
  }]
16
17
  }] });
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlcy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnRkYXRhLXNoYXJlZC9zcmMvbGliL2RpcmVjdGl2ZXMvZGlyZWN0aXZlcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFPbEUsTUFBTSxPQUFPLGdCQUFnQjs7aUlBQWhCLGdCQUFnQjtrSUFBaEIsZ0JBQWdCLGlCQUhWLHFCQUFxQixhQUMxQixxQkFBcUI7a0lBRXRCLGdCQUFnQixZQUpoQixFQUFFOzRGQUlGLGdCQUFnQjtrQkFMNUIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsRUFBRTtvQkFDWCxZQUFZLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztvQkFDckMsT0FBTyxFQUFFLENBQUMscUJBQXFCLENBQUM7aUJBQ25DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDbGlja091dHNpZGVEaXJlY3RpdmUgfSBmcm9tIFwiLi9jbGljay1vdXRzaWRlLmRpcmVjdGl2ZVwiO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICAgIGltcG9ydHM6IFtdLFxyXG4gICAgZGVjbGFyYXRpb25zOiBbQ2xpY2tPdXRzaWRlRGlyZWN0aXZlXSxcclxuICAgIGV4cG9ydHM6IFtDbGlja091dHNpZGVEaXJlY3RpdmVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEaXJlY3RpdmVzTW9kdWxlIHsgfSJdfQ==
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlcy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnRkYXRhLXNoYXJlZC9zcmMvbGliL2RpcmVjdGl2ZXMvZGlyZWN0aXZlcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBT25ELE1BQU0sT0FBTyxnQkFBZ0I7O2lJQUFoQixnQkFBZ0I7a0lBQWhCLGdCQUFnQixpQkFIVixxQkFBcUIsRUFBRSxjQUFjLGFBQzFDLHFCQUFxQixFQUFFLGNBQWM7a0lBRXRDLGdCQUFnQixZQUpoQixFQUFFOzRGQUlGLGdCQUFnQjtrQkFMNUIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsRUFBRTtvQkFDWCxZQUFZLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxjQUFjLENBQUM7b0JBQ3JELE9BQU8sRUFBRSxDQUFDLHFCQUFxQixFQUFFLGNBQWMsQ0FBQztpQkFDbkQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IENsaWNrT3V0c2lkZURpcmVjdGl2ZSB9IGZyb20gXCIuL2NsaWNrLW91dHNpZGUuZGlyZWN0aXZlXCI7XHJcbmltcG9ydCB7IEZvY3VzRGlyZWN0aXZlIH0gZnJvbSBcIi4vZm9jdXMuZGlyZWN0aXZlXCI7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gICAgaW1wb3J0czogW10sXHJcbiAgICBkZWNsYXJhdGlvbnM6IFtDbGlja091dHNpZGVEaXJlY3RpdmUsIEZvY3VzRGlyZWN0aXZlXSxcclxuICAgIGV4cG9ydHM6IFtDbGlja091dHNpZGVEaXJlY3RpdmUsIEZvY3VzRGlyZWN0aXZlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGlyZWN0aXZlc01vZHVsZSB7IH0iXX0=
@@ -0,0 +1,27 @@
1
+ /* eslint-disable @angular-eslint/directive-selector */
2
+ import { Directive, Input } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ export class FocusDirective {
5
+ constructor(element) {
6
+ this.element = element;
7
+ this.focused = false;
8
+ }
9
+ ngAfterViewInit() {
10
+ // ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked.
11
+ if (this.focused) {
12
+ setTimeout(() => this.element.nativeElement.focus(), 0);
13
+ }
14
+ }
15
+ }
16
+ /** @nocollapse */ FocusDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: FocusDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
17
+ /** @nocollapse */ FocusDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: FocusDirective, selector: "[adbfocus]", inputs: { focused: ["focus", "focused"] }, ngImport: i0 });
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: FocusDirective, decorators: [{
19
+ type: Directive,
20
+ args: [{
21
+ selector: '[adbfocus]',
22
+ }]
23
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { focused: [{
24
+ type: Input,
25
+ args: ['focus']
26
+ }] } });
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJ0ZGF0YS1zaGFyZWQvc3JjL2xpYi9kaXJlY3RpdmVzL2ZvY3VzLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBcUMsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUtwRixNQUFNLE9BQU8sY0FBYztJQUt6QixZQUFtQixPQUFnQztRQUFoQyxZQUFPLEdBQVAsT0FBTyxDQUF5QjtRQUZuRCxZQUFPLEdBQUcsS0FBSyxDQUFDO0lBR2hCLENBQUM7SUFFRCxlQUFlO1FBQ2IsNEZBQTRGO1FBQzVGLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDekQ7SUFDSCxDQUFDOzsrSEFiVSxjQUFjO21IQUFkLGNBQWM7NEZBQWQsY0FBYztrQkFIMUIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsWUFBWTtpQkFDekI7aUdBSUMsT0FBTztzQkFETixLQUFLO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yICovXHJcbmltcG9ydCB7IERpcmVjdGl2ZSwgT25Jbml0LCBFbGVtZW50UmVmLCBBZnRlclZpZXdJbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ1thZGJmb2N1c10nLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9jdXNEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgQElucHV0KCdmb2N1cycpXHJcbiAgZm9jdXNlZCA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIC8vIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3I6IEV4cHJlc3Npb24gaGFzIGNoYW5nZWQgYWZ0ZXIgaXQgd2FzIGNoZWNrZWQuXHJcbiAgICBpZiAodGhpcy5mb2N1c2VkKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSwgMCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,34 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class HighlightPipe {
4
+ constructor() {
5
+ this.format = /[`!@#$%*\\()_+\-=\[\]{};':"\\|,<>\/?~]/g;
6
+ }
7
+ transform(value, searchs) {
8
+ if (!value) {
9
+ return value;
10
+ }
11
+ if (searchs) {
12
+ if (!Array.isArray(searchs)) {
13
+ searchs = searchs.split(' ').filter((s) => s);
14
+ }
15
+ for (let search of searchs) {
16
+ if (this.format.test(search)) {
17
+ search = search.replace(this.format, '');
18
+ }
19
+ const reText = new RegExp(search, 'gi');
20
+ value = value.replace(reText, '<mark>$&</mark>');
21
+ }
22
+ }
23
+ return value;
24
+ }
25
+ }
26
+ /** @nocollapse */ HighlightPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: HighlightPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
27
+ /** @nocollapse */ HighlightPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: HighlightPipe, name: "adbHighlight" });
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: HighlightPipe, decorators: [{
29
+ type: Pipe,
30
+ args: [{
31
+ name: 'adbHighlight'
32
+ }]
33
+ }] });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlnaGxpZ2h0LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnRkYXRhLXNoYXJlZC9zcmMvbGliL3BpcGVzL2hpZ2hsaWdodC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQUlwRCxNQUFNLE9BQU8sYUFBYTtJQUgxQjtRQUlJLFdBQU0sR0FBRyx5Q0FBeUMsQ0FBQztLQW1CdEQ7SUFsQkcsU0FBUyxDQUFDLEtBQVUsRUFBRSxPQUFZO1FBQzlCLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDUixPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUNELElBQUksT0FBTyxFQUFFO1lBQ1QsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ3pCLE9BQU8sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDdEQ7WUFDRCxLQUFLLElBQUksTUFBTSxJQUFJLE9BQU8sRUFBRTtnQkFDeEIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtvQkFDMUIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztpQkFDNUM7Z0JBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUN4QyxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLENBQUMsQ0FBQzthQUNwRDtTQUNKO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQzs7OEhBbkJRLGFBQWE7NEhBQWIsYUFBYTs0RkFBYixhQUFhO2tCQUh6QixJQUFJO21CQUFDO29CQUNGLElBQUksRUFBRSxjQUFjO2lCQUN2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuQFBpcGUoe1xyXG4gICAgbmFtZTogJ2FkYkhpZ2hsaWdodCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEhpZ2hsaWdodFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICAgIGZvcm1hdCA9IC9bYCFAIyQlKlxcXFwoKV8rXFwtPVxcW1xcXXt9Oyc6XCJcXFxcfCw8PlxcLz9+XS9nO1xyXG4gICAgdHJhbnNmb3JtKHZhbHVlOiBhbnksIHNlYXJjaHM6IGFueSk6IGFueSB7XHJcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzZWFyY2hzKSB7XHJcbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShzZWFyY2hzKSkge1xyXG4gICAgICAgICAgICAgICAgc2VhcmNocyA9IHNlYXJjaHMuc3BsaXQoJyAnKS5maWx0ZXIoKHM6IGFueSkgPT4gcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZm9yIChsZXQgc2VhcmNoIG9mIHNlYXJjaHMpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZvcm1hdC50ZXN0KHNlYXJjaCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBzZWFyY2ggPSBzZWFyY2gucmVwbGFjZSh0aGlzLmZvcm1hdCwgJycpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVUZXh0ID0gbmV3IFJlZ0V4cChzZWFyY2gsICdnaScpO1xyXG4gICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKHJlVGV4dCwgJzxtYXJrPiQmPC9tYXJrPicpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,21 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class NumberSpacingPipe {
4
+ transform(value) {
5
+ // If value is empty, 0 is falsy so perform an extra check to not make '0' to an empty string
6
+ if (!value && value !== 0) {
7
+ return '';
8
+ }
9
+ return value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ' ');
10
+ }
11
+ }
12
+ /** @nocollapse */ NumberSpacingPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: NumberSpacingPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
13
+ /** @nocollapse */ NumberSpacingPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: NumberSpacingPipe, name: "adbSpacing", pure: false });
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: NumberSpacingPipe, decorators: [{
15
+ type: Pipe,
16
+ args: [{
17
+ name: 'adbSpacing',
18
+ pure: false
19
+ }]
20
+ }] });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLXNwYWNpbmcucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FydGRhdGEtc2hhcmVkL3NyYy9saWIvcGlwZXMvbnVtYmVyLXNwYWNpbmcucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFNcEQsTUFBTSxPQUFPLGlCQUFpQjtJQUMxQixTQUFTLENBQUMsS0FBSztRQUNYLDZGQUE2RjtRQUM3RixJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUU7WUFDdkIsT0FBTyxFQUFFLENBQUM7U0FDYjtRQUNELE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNsRSxDQUFDOztrSUFQUSxpQkFBaUI7Z0lBQWpCLGlCQUFpQjs0RkFBakIsaUJBQWlCO2tCQUo3QixJQUFJO21CQUFDO29CQUNGLElBQUksRUFBRSxZQUFZO29CQUNsQixJQUFJLEVBQUUsS0FBSztpQkFDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBQaXBlKHtcclxuICAgIG5hbWU6ICdhZGJTcGFjaW5nJyxcclxuICAgIHB1cmU6IGZhbHNlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOdW1iZXJTcGFjaW5nUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG4gICAgdHJhbnNmb3JtKHZhbHVlKSB7XHJcbiAgICAgICAgLy8gSWYgdmFsdWUgaXMgZW1wdHksIDAgaXMgZmFsc3kgc28gcGVyZm9ybSBhbiBleHRyYSBjaGVjayB0byBub3QgbWFrZSAnMCcgdG8gYW4gZW1wdHkgc3RyaW5nXHJcbiAgICAgICAgaWYgKCF2YWx1ZSAmJiB2YWx1ZSAhPT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpLnJlcGxhY2UoL1xcQig/PShcXGR7M30pKyg/IVxcZCkpL2csICcgJyk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,18 @@
1
+ import { NgModule } from "@angular/core";
2
+ import { HighlightPipe } from "./highlight.pipe";
3
+ import { NumberSpacingPipe } from "./number-spacing.pipe";
4
+ import * as i0 from "@angular/core";
5
+ export class PipesModule {
6
+ }
7
+ /** @nocollapse */ PipesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: PipesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
+ /** @nocollapse */ PipesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: PipesModule, declarations: [HighlightPipe, NumberSpacingPipe], exports: [HighlightPipe, NumberSpacingPipe] });
9
+ /** @nocollapse */ PipesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: PipesModule, imports: [[]] });
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: PipesModule, decorators: [{
11
+ type: NgModule,
12
+ args: [{
13
+ imports: [],
14
+ declarations: [HighlightPipe, NumberSpacingPipe],
15
+ exports: [HighlightPipe, NumberSpacingPipe]
16
+ }]
17
+ }] });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJ0ZGF0YS1zaGFyZWQvc3JjL2xpYi9waXBlcy9waXBlcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBTzFELE1BQU0sT0FBTyxXQUFXOzs0SEFBWCxXQUFXOzZIQUFYLFdBQVcsaUJBSEwsYUFBYSxFQUFFLGlCQUFpQixhQUNyQyxhQUFhLEVBQUUsaUJBQWlCOzZIQUVqQyxXQUFXLFlBSlgsRUFBRTs0RkFJRixXQUFXO2tCQUx2QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxFQUFFO29CQUNYLFlBQVksRUFBRSxDQUFDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQztvQkFDaEQsT0FBTyxFQUFFLENBQUMsYUFBYSxFQUFFLGlCQUFpQixDQUFDO2lCQUM5QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgSGlnaGxpZ2h0UGlwZSB9IGZyb20gXCIuL2hpZ2hsaWdodC5waXBlXCI7XHJcbmltcG9ydCB7IE51bWJlclNwYWNpbmdQaXBlIH0gZnJvbSBcIi4vbnVtYmVyLXNwYWNpbmcucGlwZVwiO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICAgIGltcG9ydHM6IFtdLFxyXG4gICAgZGVjbGFyYXRpb25zOiBbSGlnaGxpZ2h0UGlwZSwgTnVtYmVyU3BhY2luZ1BpcGVdLFxyXG4gICAgZXhwb3J0czogW0hpZ2hsaWdodFBpcGUsIE51bWJlclNwYWNpbmdQaXBlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGlwZXNNb2R1bGUgeyB9Il19
@@ -5,7 +5,11 @@ export * from './lib/components/adb-header/adb-header.module';
5
5
  export * from './lib/components/adb-header/adb-header.component';
6
6
  export * from './lib/directives/directives.module';
7
7
  export * from './lib/directives/click-outside.directive';
8
+ export * from './lib/directives/focus.directive';
8
9
  export * from './lib/components/pagers/pagers.module';
9
10
  export * from './lib/components/pagers/infinite-scroll.component';
10
11
  export * from './lib/components/pagers/pager';
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FydGRhdGEtc2hhcmVkL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBR0gsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLGtEQUFrRCxDQUFDO0FBRWpFLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYywwQ0FBMEMsQ0FBQztBQUV6RCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYywrQkFBK0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBhcnRkYXRhLXNoYXJlZFxyXG4gKi9cclxuXHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2FkYi1oZWFkZXIvYWRiLWhlYWRlci5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2FkYi1oZWFkZXIvYWRiLWhlYWRlci5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9kaXJlY3RpdmVzLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvY2xpY2stb3V0c2lkZS5kaXJlY3RpdmUnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9wYWdlcnMvcGFnZXJzLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvcGFnZXJzL2luZmluaXRlLXNjcm9sbC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3BhZ2Vycy9wYWdlcic7Il19
12
+ export * from './lib/pipes/pipes.module';
13
+ export * from './lib/pipes/highlight.pipe';
14
+ export * from './lib/pipes/number-spacing.pipe';
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FydGRhdGEtc2hhcmVkL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBR0gsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLGtEQUFrRCxDQUFDO0FBRWpFLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLGtDQUFrQyxDQUFDO0FBRWpELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLCtCQUErQixDQUFDO0FBRTlDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGlDQUFpQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGFydGRhdGEtc2hhcmVkXHJcbiAqL1xyXG5cclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYWRiLWhlYWRlci9hZGItaGVhZGVyLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYWRiLWhlYWRlci9hZGItaGVhZGVyLmNvbXBvbmVudCc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL2RpcmVjdGl2ZXMubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9jbGljay1vdXRzaWRlLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvZm9jdXMuZGlyZWN0aXZlJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvcGFnZXJzL3BhZ2Vycy5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3BhZ2Vycy9pbmZpbml0ZS1zY3JvbGwuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9wYWdlcnMvcGFnZXInO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvcGlwZXMubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvaGlnaGxpZ2h0LnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlcy9udW1iZXItc3BhY2luZy5waXBlJzsiXX0=
@@ -1,7 +1,7 @@
1
1
  import * as i4 from '@angular/common';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { Injectable, Inject, EventEmitter, Component, Output, Input, Directive, HostListener, NgModule, ViewChild } from '@angular/core';
4
+ import { Injectable, Inject, EventEmitter, Component, Output, Input, Directive, HostListener, NgModule, HostBinding, Pipe } from '@angular/core';
5
5
  import * as i3 from '@ngx-translate/core';
6
6
  import { TranslateModule } from '@ngx-translate/core';
7
7
  import { Subscription } from 'rxjs';
@@ -104,7 +104,7 @@ class ADBHeaderComponent {
104
104
  }
105
105
  }
106
106
  /** @nocollapse */ ADBHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ADBHeaderComponent, deps: [{ token: i1.HttpClient }, { token: EnvironmentService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
107
- /** @nocollapse */ ADBHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: ADBHeaderComponent, selector: "adb-header2", inputs: { userName: "userName" }, outputs: { loginClicked: "loginClicked", logoutClicked: "logoutClicked", dropMenuChange: "dropMenuChange" }, ngImport: i0, template: "<header id=\"top-header\" (clickOutside)=\"showUserMenu=false;showMenuDropdown(false);\">\r\n <nav class=\"d-flex flex-wrap px-3\">\r\n <div class=\"flex-grow-1 d-flex align-items-center justify-content-between justify-content-md-start\">\r\n <div class=\"logo d-none d-md-block\">\r\n <img src=\"/assets/images/logo.svg\" style=\"height: 3.2rem;\">\r\n </div>\r\n <div class=\"logo ps-2 d-sm-block d-md-none d-flex align-items-center\">\r\n <img src=\"/assets/images/logo_sm_white.png\" style=\"height: 2rem;\">\r\n </div>\r\n <strong class=\"bigger\">Artfakta</strong>\r\n </div>\r\n <div *ngIf=\"translationFinished\" class=\"flex-grow-1 d-flex justify-content-lg-between justify-content-end align-items-center\">\r\n <div *ngIf=\"navigation\" class=\"d-flex align-items-center\">\r\n <nav class=\"d-none align-items-center d-lg-flex pe-4 gap-4\" *ngIf=\"navigation\">\r\n <ng-container *ngFor=\"let link of navigation.links\">\r\n <a href=\"{{link.url}}?lang={{trans.currentLang}}\" *ngIf=\"link.topLink\" [ngClass]=\"{'d-none d-xl-block':link.transId==='ADB_HEADER.OBSERVATION'}\">\r\n {{link.transId|translate}}\r\n </a>\r\n </ng-container>\r\n </nav>\r\n <div>\r\n <button type=\"button\" class=\"btn btn-sm py-1 px-2 btn-primary\" (click)=\"showUserMenu = false;showMenuDropdown(!showMenu)\">\r\n {{'ADB_HEADER.MENY'|translate}}\r\n <i class=\"ms-1 fas\" [ngClass]=\"showMenu?'fa-chevron-up':'fa-chevron-down'\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"d-none d-md-block ps-4\">\r\n <button *ngIf=\"initials\" type=\"button\" class=\"btn initials\" (click)=\"showUserMenu = !showUserMenu;showMenuDropdown(false)\">{{initials}}</button>\r\n <button *ngIf=\"!initials\" type=\"button\" (click)=\"showUserMenu = !showUserMenu;showMenuDropdown(false)\" class=\"btn btn-link\">\r\n {{'ADB_HEADER.LOGIN'|translate}}\r\n </button>\r\n </div>\r\n </div>\r\n </nav>\r\n <div class=\"menu\" *ngIf=\"showUserMenu\">\r\n <div class=\"menu-body bg-white p-3\" style=\"width:15rem\">\r\n <ng-container *ngIf=\"initials\">\r\n <div class=\"d-flex align-items-center gap-2 text-dark\">\r\n <span class=\"initials\">{{initials}}</span>\r\n <strong>{{fullName}}</strong>\r\n </div>\r\n <hr class=\"mx-n3 text-muted\">\r\n <button (click)=\"logout()\" type=\"button\" class=\"btn btn-link p-0\">\r\n <i class=\"fas fa-sign-out-alt me-1\"></i>{{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"!initials\">\r\n <div class=\"d-flex justify-content-center\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"login()\" id=\"start-login\">{{'ADB_HEADER.LOGIN'|translate}}</button>\r\n </div>\r\n <a *ngIf=\"navigation\" class=\"d-block mt-3\" href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"menu\" *ngIf=\"showMenu\">\r\n <div class=\"menu-body\" *ngIf=\"navigation\">\r\n <div class=\"px-3 pt-3 mb-1\">\r\n <div class=\"d-flex justify-content-between flex-wrap gap-2 mb-2\">\r\n <div>\r\n <div class=\"d-flex d-md-none align-items-center gap-2\" *ngIf=\"initials\">\r\n <span class=\"initials me-2\">{{initials}}</span>\r\n <button type=\"button\" (click)=\"logout()\" class=\"btn btn-primary\">\r\n {{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </div>\r\n <div class=\"d-flex gap-2 d-md-none\" *ngIf=\"!initials\">\r\n <button type=\"button\" (click)=\"login()\" class=\"btn btn-primary\" id=\"login\">\r\n {{'ADB_HEADER.LOGIN'|translate}}\r\n </button>\r\n <a href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\"\r\n class=\"btn btn-primary text-white\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </div>\r\n </div>\r\n <div>\r\n <button type=\"button\" *ngIf=\"trans.currentLang==='en'\" (click)=\"setLanguage('sv')\"\r\n class=\"btn btn-primary\">\r\n {{'ADB_HEADER.IN_SWEDISH'|translate}}\r\n </button>\r\n <button type=\"button\" *ngIf=\"trans.currentLang==='sv'\" (click)=\"setLanguage('en')\"\r\n class=\"btn btn-primary\">\r\n {{'ADB_HEADER.IN_ENGLISH'|translate}}\r\n </button>\r\n </div>\r\n </div>\r\n {{'ADB_HEADER.SERVICES'|translate}}\r\n </div>\r\n <div id=\"splash\">\r\n <div class=\"px-3 d-flex flex-column\">\r\n <ul class=\"list-group ms-0 mb-0 ps-0\">\r\n <li class=\"mb-1 list-group-item p-0 rounded\" *ngFor=\"let link of navigation.links\"\r\n [attr.aria-expanded]=\"link.transId===expandedLink?true:false\" role=\"button\">\r\n <div class=\"d-flex align-items-center justify-content-between\">\r\n <a href=\"{{link.url}}?lang={{trans.currentLang}}\" class=\"d-flex align-items-center flex-grow-1 p-2\">\r\n <small class=\"fa-stack me-1\" *ngIf=\"link.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse\" [ngClass]=\"link.icon\"></span>\r\n </small>\r\n {{link.transId|translate}}\r\n </a>\r\n <button class=\"btn btn-expand me-2\" *ngIf=\"link.children?.length>0\" (click)=\"onExpandLink($event,link.transId)\">\r\n <i class=\"fas fa-chevron-up\" [ngClass]=\"link.transId===expandedLink?'d-block ':'d-none'\"></i>\r\n <i class=\"fas fa-chevron-down\" [ngClass]=\"link.transId!==expandedLink?'d-block ':'d-none'\"></i>\r\n </button>\r\n </div>\r\n <ul class=\"list-unstyled\" [ngClass]=\"link.transId===expandedLink?'d-block':'d-none'\">\r\n <li class=\"py-1 m-0\" [class.pt-0]=\"first\" *ngFor=\"let subLink of link.children;let first = first\" style=\"padding-left:3rem;\">\r\n <a class=\"w-100 d-block\" href=\"{{subLink.url}}?lang={{trans.currentLang}}\">\r\n {{subLink.transId|translate}}\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n </ul>\r\n <div *ngIf=\"navigation.about\" class=\"mt-2 mb-auto\">\r\n <div class=\"mb-1\">{{'ADB_HEADER.CONTACT'|translate}}</div>\r\n <div class=\"mb-1 row\">\r\n <div class=\"col-sm-6 mb-2\">\r\n <div class=\"bg-white p-2 rounded\">\r\n <small class=\"fa-stack\" *ngIf=\"navigation.about.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse fa-envelope\"></span>\r\n </small>\r\n <a class=\"bg-white p-2\" href=\"mailto:artfakta@artdatabanken.se\">artfakta@artdatabanken.se</a>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6 mb-2\">\r\n <div class=\"bg-white p-2 rounded\">\r\n <small class=\"fa-stack\" *ngIf=\"navigation.about.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse\" [ngClass]=\"navigation.about.icon\"></span>\r\n </small>\r\n <a [href]=\"navigation.about.url\">{{navigation.about.transId|translate}}</a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div style=\"height:10rem\"></div>\r\n <div class=\"mb-3\">\r\n {{'ADB_HEADER.DEVELOPED_BY'|translate}}\r\n <a href=\"https://www.artdatabanken.se/\" class=\"text-white\"><u>{{'ADB_HEADER.ARTDATABANKEN'|translate}}</u></a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</header>\r\n", directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "translate": i3.TranslatePipe } });
107
+ /** @nocollapse */ ADBHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: ADBHeaderComponent, selector: "adb-header2", inputs: { userName: "userName" }, outputs: { loginClicked: "loginClicked", logoutClicked: "logoutClicked", dropMenuChange: "dropMenuChange" }, ngImport: i0, template: "<header id=\"top-header\" (clickOutside)=\"showUserMenu=false;showMenuDropdown(false);\">\r\n <nav class=\"d-flex flex-wrap px-3\">\r\n <div class=\"flex-grow-1 d-flex align-items-center justify-content-between justify-content-md-start\">\r\n <div class=\"logo d-none d-md-block\">\r\n <img src=\"/assets/images/logo.svg\" style=\"height: 3.2rem;\">\r\n </div>\r\n <div class=\"logo ps-2 d-sm-block d-md-none d-flex align-items-center\">\r\n <img src=\"/assets/images/logo_sm_white.png\" style=\"height: 2rem;\">\r\n </div>\r\n <strong class=\"bigger\">{{'ADB_HEADER.TITLE'|translate}}</strong>\r\n </div>\r\n <div *ngIf=\"translationFinished\" class=\"flex-grow-1 d-flex justify-content-lg-between justify-content-end align-items-center\">\r\n <div *ngIf=\"navigation\" class=\"d-flex align-items-center\">\r\n <nav class=\"d-none align-items-center d-lg-flex pe-4 gap-4\" *ngIf=\"navigation\">\r\n <ng-container *ngFor=\"let link of navigation.links\">\r\n <a href=\"{{link.url}}?lang={{trans.currentLang}}\" *ngIf=\"link.topLink\" [ngClass]=\"{'d-none d-xl-block':link.transId==='ADB_HEADER.OBSERVATION'}\">\r\n {{link.transId|translate}}\r\n </a>\r\n </ng-container>\r\n </nav>\r\n <div>\r\n <button type=\"button\" class=\"btn btn-sm py-1 px-2 btn-primary\" (click)=\"showUserMenu = false;showMenuDropdown(!showMenu)\">\r\n {{'ADB_HEADER.MENY'|translate}}\r\n <i class=\"ms-1 fas\" [ngClass]=\"showMenu?'fa-chevron-up':'fa-chevron-down'\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"d-none d-md-block ps-4\">\r\n <button *ngIf=\"initials\" type=\"button\" class=\"btn initials\" (click)=\"showUserMenu = !showUserMenu;showMenuDropdown(false)\">{{initials}}</button>\r\n <button *ngIf=\"!initials\" type=\"button\" (click)=\"showUserMenu = !showUserMenu;showMenuDropdown(false)\" class=\"btn btn-link\">\r\n {{'ADB_HEADER.LOGIN'|translate}}\r\n </button>\r\n </div>\r\n </div>\r\n </nav>\r\n <div class=\"menu\" *ngIf=\"showUserMenu\">\r\n <div class=\"menu-body bg-white p-3\" style=\"width:15rem\">\r\n <ng-container *ngIf=\"initials\">\r\n <div class=\"d-flex align-items-center gap-2 text-dark\">\r\n <span class=\"initials\">{{initials}}</span>\r\n <strong>{{fullName}}</strong>\r\n </div>\r\n <hr class=\"mx-n3 text-muted\">\r\n <button (click)=\"logout()\" type=\"button\" class=\"btn btn-link p-0\">\r\n <i class=\"fas fa-sign-out-alt me-1\"></i>{{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"!initials\">\r\n <div class=\"d-flex justify-content-center\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"login()\" id=\"start-login\">{{'ADB_HEADER.LOGIN'|translate}}</button>\r\n </div>\r\n <a *ngIf=\"navigation\" class=\"d-block mt-3\" href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"menu\" *ngIf=\"showMenu\">\r\n <div class=\"menu-body\" *ngIf=\"navigation\">\r\n <div class=\"px-3 pt-3 mb-1\">\r\n <div class=\"d-flex justify-content-between flex-wrap gap-2 mb-2\">\r\n <div>\r\n <div class=\"d-flex d-md-none align-items-center gap-2\" *ngIf=\"initials\">\r\n <span class=\"initials me-2\">{{initials}}</span>\r\n <button type=\"button\" (click)=\"logout()\" class=\"btn btn-primary\">\r\n {{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </div>\r\n <div class=\"d-flex gap-2 d-md-none\" *ngIf=\"!initials\">\r\n <button type=\"button\" (click)=\"login()\" class=\"btn btn-primary\" id=\"login\">\r\n {{'ADB_HEADER.LOGIN'|translate}}\r\n </button>\r\n <a href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\"\r\n class=\"btn btn-primary text-white\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </div>\r\n </div>\r\n <div>\r\n <button type=\"button\" *ngIf=\"trans.currentLang==='en'\" (click)=\"setLanguage('sv')\"\r\n class=\"btn btn-primary\">\r\n {{'ADB_HEADER.IN_SWEDISH'|translate}}\r\n </button>\r\n <button type=\"button\" *ngIf=\"trans.currentLang==='sv'\" (click)=\"setLanguage('en')\"\r\n class=\"btn btn-primary\">\r\n {{'ADB_HEADER.IN_ENGLISH'|translate}}\r\n </button>\r\n </div>\r\n </div>\r\n {{'ADB_HEADER.SERVICES'|translate}}\r\n </div>\r\n <div id=\"splash\">\r\n <div class=\"px-3 d-flex flex-column\">\r\n <ul class=\"list-group ms-0 mb-0 ps-0\">\r\n <li class=\"mb-1 list-group-item p-0 rounded\" *ngFor=\"let link of navigation.links\"\r\n [attr.aria-expanded]=\"link.transId===expandedLink?true:false\" role=\"button\">\r\n <div class=\"d-flex align-items-center justify-content-between\">\r\n <a href=\"{{link.url}}?lang={{trans.currentLang}}\" class=\"d-flex align-items-center flex-grow-1 p-2\">\r\n <small class=\"fa-stack me-1\" *ngIf=\"link.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse\" [ngClass]=\"link.icon\"></span>\r\n </small>\r\n {{link.transId|translate}}\r\n </a>\r\n <button class=\"btn btn-expand me-2\" *ngIf=\"link.children?.length>0\" (click)=\"onExpandLink($event,link.transId)\">\r\n <i class=\"fas fa-chevron-up\" [ngClass]=\"link.transId===expandedLink?'d-block ':'d-none'\"></i>\r\n <i class=\"fas fa-chevron-down\" [ngClass]=\"link.transId!==expandedLink?'d-block ':'d-none'\"></i>\r\n </button>\r\n </div>\r\n <ul class=\"list-unstyled\" [ngClass]=\"link.transId===expandedLink?'d-block':'d-none'\">\r\n <li class=\"py-1 m-0\" [class.pt-0]=\"first\" *ngFor=\"let subLink of link.children;let first = first\" style=\"padding-left:3rem;\">\r\n <a class=\"w-100 d-block\" href=\"{{subLink.url}}?lang={{trans.currentLang}}\">\r\n {{subLink.transId|translate}}\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n </ul>\r\n <div *ngIf=\"navigation.about\" class=\"mt-2 mb-auto\">\r\n <div class=\"mb-1\">{{'ADB_HEADER.CONTACT'|translate}}</div>\r\n <div class=\"mb-1 row\">\r\n <div class=\"col-sm-6 mb-2\">\r\n <div class=\"bg-white p-2 rounded\">\r\n <small class=\"fa-stack\" *ngIf=\"navigation.about.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse fa-envelope\"></span>\r\n </small>\r\n <a class=\"bg-white p-2\" href=\"mailto:artfakta@artdatabanken.se\">artfakta@artdatabanken.se</a>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6 mb-2\">\r\n <div class=\"bg-white p-2 rounded\">\r\n <small class=\"fa-stack\" *ngIf=\"navigation.about.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse\" [ngClass]=\"navigation.about.icon\"></span>\r\n </small>\r\n <a [href]=\"navigation.about.url\">{{navigation.about.transId|translate}}</a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div style=\"height:10rem\"></div>\r\n <div class=\"mb-3\">\r\n {{'ADB_HEADER.DEVELOPED_BY'|translate}}\r\n <a href=\"https://www.artdatabanken.se/\" class=\"text-white\"><u>{{'ADB_HEADER.ARTDATABANKEN'|translate}}</u></a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</header>\r\n", directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "translate": i3.TranslatePipe } });
108
108
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ADBHeaderComponent, decorators: [{
109
109
  type: Component,
110
110
  args: [{
@@ -147,17 +147,42 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
147
147
  args: ['document:click', ['$event.target']]
148
148
  }] } });
149
149
 
150
+ /* eslint-disable @angular-eslint/directive-selector */
151
+ class FocusDirective {
152
+ constructor(element) {
153
+ this.element = element;
154
+ this.focused = false;
155
+ }
156
+ ngAfterViewInit() {
157
+ // ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked.
158
+ if (this.focused) {
159
+ setTimeout(() => this.element.nativeElement.focus(), 0);
160
+ }
161
+ }
162
+ }
163
+ /** @nocollapse */ FocusDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: FocusDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
164
+ /** @nocollapse */ FocusDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: FocusDirective, selector: "[adbfocus]", inputs: { focused: ["focus", "focused"] }, ngImport: i0 });
165
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: FocusDirective, decorators: [{
166
+ type: Directive,
167
+ args: [{
168
+ selector: '[adbfocus]',
169
+ }]
170
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { focused: [{
171
+ type: Input,
172
+ args: ['focus']
173
+ }] } });
174
+
150
175
  class DirectivesModule {
151
176
  }
152
177
  /** @nocollapse */ DirectivesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: DirectivesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
153
- /** @nocollapse */ DirectivesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: DirectivesModule, declarations: [ClickOutsideDirective], exports: [ClickOutsideDirective] });
178
+ /** @nocollapse */ DirectivesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: DirectivesModule, declarations: [ClickOutsideDirective, FocusDirective], exports: [ClickOutsideDirective, FocusDirective] });
154
179
  /** @nocollapse */ DirectivesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: DirectivesModule, imports: [[]] });
155
180
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: DirectivesModule, decorators: [{
156
181
  type: NgModule,
157
182
  args: [{
158
183
  imports: [],
159
- declarations: [ClickOutsideDirective],
160
- exports: [ClickOutsideDirective]
184
+ declarations: [ClickOutsideDirective, FocusDirective],
185
+ exports: [ClickOutsideDirective, FocusDirective]
161
186
  }]
162
187
  }] });
163
188
 
@@ -204,49 +229,42 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
204
229
  }] });
205
230
 
206
231
  class InfiniteScrollComponent {
207
- constructor(host) {
208
- this.host = host;
209
- this.options = {};
210
- this.scrolled = new EventEmitter();
211
- }
212
- get element() {
213
- return this.host.nativeElement;
214
- }
215
- ngOnInit() {
216
- const options = Object.assign({ root: this.isHostScrollable() ? this.host.nativeElement : null }, this.options);
217
- this.observer = new IntersectionObserver(([entry]) => {
218
- // eslint-disable-next-line @typescript-eslint/no-unused-expressions
219
- entry.isIntersecting && this.scrolled.emit();
220
- }, options);
232
+ constructor(_element) {
233
+ this._element = _element;
234
+ this.onVisible = new EventEmitter();
235
+ this.height = '1px';
236
+ this.checkForIntersection = (entries) => {
237
+ entries.forEach((entry) => {
238
+ const isIntersecting = entry.isIntersecting &&
239
+ entry.target === this._element.nativeElement;
240
+ if (isIntersecting) {
241
+ this.onVisible.emit();
242
+ }
243
+ });
244
+ };
221
245
  }
222
246
  ngAfterViewInit() {
223
- this.observer.observe(this.anchor.nativeElement);
224
- }
225
- isHostScrollable() {
226
- const style = window.getComputedStyle(this.element);
227
- return style.getPropertyValue('overflow') === 'auto' ||
228
- style.getPropertyValue('overflow-y') === 'scroll';
247
+ this._intersectionObserver = new IntersectionObserver(entries => {
248
+ this.checkForIntersection(entries);
249
+ }, {});
250
+ this._intersectionObserver.observe(this._element.nativeElement);
229
251
  }
230
252
  ngOnDestroy() {
231
- var _a;
232
- (_a = this.observer) === null || _a === void 0 ? void 0 : _a.disconnect();
253
+ if (this._intersectionObserver) {
254
+ this._intersectionObserver.disconnect();
255
+ }
233
256
  }
234
257
  }
235
- /** @nocollapse */ InfiniteScrollComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: InfiniteScrollComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
236
- /** @nocollapse */ InfiniteScrollComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: InfiniteScrollComponent, selector: "adb-infinite-scroll", inputs: { options: "options" }, outputs: { scrolled: "scrolled" }, viewQueries: [{ propertyName: "anchor", first: true, predicate: ["anchor"], descendants: true }], ngImport: i0, template: '<ng-content></ng-content><div #anchor></div>', isInline: true });
258
+ /** @nocollapse */ InfiniteScrollComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: InfiniteScrollComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
259
+ /** @nocollapse */ InfiniteScrollComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: InfiniteScrollComponent, selector: "[onVisible]", outputs: { onVisible: "onVisible" }, host: { properties: { "style.height": "this.height" } }, ngImport: i0 });
237
260
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: InfiniteScrollComponent, decorators: [{
238
- type: Component,
239
- args: [{
240
- selector: 'adb-infinite-scroll',
241
- template: '<ng-content></ng-content><div #anchor></div>'
242
- }]
243
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { options: [{
244
- type: Input
245
- }], scrolled: [{
261
+ type: Directive,
262
+ args: [{ selector: "[onVisible]" }]
263
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { onVisible: [{
246
264
  type: Output
247
- }], anchor: [{
248
- type: ViewChild,
249
- args: ['anchor']
265
+ }], height: [{
266
+ type: HostBinding,
267
+ args: ['style.height']
250
268
  }] } });
251
269
 
252
270
  class PagerBaseDirective {
@@ -337,6 +355,71 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
337
355
  }]
338
356
  }] });
339
357
 
358
+ class HighlightPipe {
359
+ constructor() {
360
+ this.format = /[`!@#$%*\\()_+\-=\[\]{};':"\\|,<>\/?~]/g;
361
+ }
362
+ transform(value, searchs) {
363
+ if (!value) {
364
+ return value;
365
+ }
366
+ if (searchs) {
367
+ if (!Array.isArray(searchs)) {
368
+ searchs = searchs.split(' ').filter((s) => s);
369
+ }
370
+ for (let search of searchs) {
371
+ if (this.format.test(search)) {
372
+ search = search.replace(this.format, '');
373
+ }
374
+ const reText = new RegExp(search, 'gi');
375
+ value = value.replace(reText, '<mark>$&</mark>');
376
+ }
377
+ }
378
+ return value;
379
+ }
380
+ }
381
+ /** @nocollapse */ HighlightPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: HighlightPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
382
+ /** @nocollapse */ HighlightPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: HighlightPipe, name: "adbHighlight" });
383
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: HighlightPipe, decorators: [{
384
+ type: Pipe,
385
+ args: [{
386
+ name: 'adbHighlight'
387
+ }]
388
+ }] });
389
+
390
+ class NumberSpacingPipe {
391
+ transform(value) {
392
+ // If value is empty, 0 is falsy so perform an extra check to not make '0' to an empty string
393
+ if (!value && value !== 0) {
394
+ return '';
395
+ }
396
+ return value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ' ');
397
+ }
398
+ }
399
+ /** @nocollapse */ NumberSpacingPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: NumberSpacingPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
400
+ /** @nocollapse */ NumberSpacingPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: NumberSpacingPipe, name: "adbSpacing", pure: false });
401
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: NumberSpacingPipe, decorators: [{
402
+ type: Pipe,
403
+ args: [{
404
+ name: 'adbSpacing',
405
+ pure: false
406
+ }]
407
+ }] });
408
+
409
+ class PipesModule {
410
+ }
411
+ /** @nocollapse */ PipesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: PipesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
412
+ /** @nocollapse */ PipesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: PipesModule, declarations: [HighlightPipe, NumberSpacingPipe], exports: [HighlightPipe, NumberSpacingPipe] });
413
+ /** @nocollapse */ PipesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: PipesModule, imports: [[]] });
414
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: PipesModule, decorators: [{
415
+ type: NgModule,
416
+ args: [{
417
+ imports: [],
418
+ declarations: [HighlightPipe, NumberSpacingPipe],
419
+ exports: [HighlightPipe, NumberSpacingPipe]
420
+ }]
421
+ }] });
422
+
340
423
  /*
341
424
  * Public API Surface of artdata-shared
342
425
  */
@@ -345,5 +428,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
345
428
  * Generated bundle index. Do not edit.
346
429
  */
347
430
 
348
- export { ADBHeaderComponent, ADBHeaderModule, ClickOutsideDirective, DirectivesModule, InfiniteScrollComponent, PagerComponent, PagersModule };
431
+ export { ADBHeaderComponent, ADBHeaderModule, ClickOutsideDirective, DirectivesModule, FocusDirective, HighlightPipe, InfiniteScrollComponent, NumberSpacingPipe, PagerComponent, PagersModule, PipesModule };
349
432
  //# sourceMappingURL=adb-shared.js.map