ngx-fixed-footer 1.1.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +55 -22
- package/esm2022/lib/ngx-fixed-footer.constants.mjs +5 -1
- package/esm2022/lib/ngx-fixed-footer.directive.mjs +27 -14
- package/esm2022/lib/ngx-fixed-footer.provider.mjs +13 -0
- package/esm2022/public-api.mjs +2 -3
- package/fesm2022/ngx-fixed-footer.mjs +40 -75
- package/fesm2022/ngx-fixed-footer.mjs.map +1 -1
- package/lib/ngx-fixed-footer.constants.d.ts +2 -0
- package/lib/ngx-fixed-footer.directive.d.ts +4 -5
- package/lib/ngx-fixed-footer.provider.d.ts +4 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -2
- package/esm2022/lib/ngx-fixed-footer-factory.mjs +0 -14
- package/esm2022/lib/ngx-fixed-footer-options.service.mjs +0 -21
- package/esm2022/lib/ngx-fixed-footer.module.mjs +0 -36
- package/lib/ngx-fixed-footer-factory.d.ts +0 -3
- package/lib/ngx-fixed-footer-options.service.d.ts +0 -14
- package/lib/ngx-fixed-footer.module.d.ts +0 -11
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
> Angular directive that adds fixed footer without overlap
|
|
16
16
|
|
|
17
|
-
> ✓ _Angular
|
|
17
|
+
> ✓ _Angular 17 compatible_
|
|
18
18
|
|
|
19
19
|
Here's the [demo](http://celtian.github.io/ngx-fixed-footer/) or [stackblitz live preview](https://stackblitz.com/edit/ngx-fixed-footer) or [codesandbox live preview](https://codesandbox.io/s/ngx-fixed-footer-m4f21)
|
|
20
20
|
|
|
@@ -32,37 +32,70 @@ yarn add ngx-fixed-footer
|
|
|
32
32
|
|
|
33
33
|
2. Add NgxFixedFooterModule into your module `imports`
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
2.1. import providers (optional)
|
|
36
|
+
|
|
37
|
+
```typescript
|
|
38
|
+
import { provideFixedFooter } from 'ngx-fixed-footer';
|
|
39
|
+
|
|
40
|
+
export const appConfig: ApplicationConfig = {
|
|
41
|
+
providers: [
|
|
42
|
+
// ...
|
|
43
|
+
provideFixedFooter({
|
|
44
|
+
containerSelector: '[data-something]',
|
|
45
|
+
cssAttribute: 'margin'
|
|
46
|
+
})
|
|
47
|
+
]
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
// or
|
|
51
|
+
|
|
52
|
+
import { provideFixedFooter } from 'ngx-fixed-footer';
|
|
53
|
+
|
|
54
|
+
@NgModule({
|
|
55
|
+
// ...
|
|
56
|
+
imports: [
|
|
57
|
+
// ...
|
|
58
|
+
provideFixedFooter({
|
|
59
|
+
containerSelector: '[data-something]',
|
|
60
|
+
cssAttribute: 'margin'
|
|
61
|
+
})
|
|
62
|
+
]
|
|
63
|
+
})
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
2.2 import directive
|
|
37
68
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
69
|
+
```typescript
|
|
70
|
+
import { NgxFixedFooterDirective } from 'ngx-fixed-footer';
|
|
71
|
+
|
|
72
|
+
@Component({
|
|
73
|
+
standalone: true,
|
|
74
|
+
imports: [
|
|
75
|
+
// ...
|
|
76
|
+
NgxFixedFooterDirective
|
|
77
|
+
]
|
|
45
78
|
})
|
|
46
|
-
]
|
|
47
|
-
})
|
|
48
79
|
|
|
49
|
-
|
|
80
|
+
// or
|
|
50
81
|
|
|
51
|
-
|
|
52
|
-
// ...
|
|
53
|
-
imports: [
|
|
54
|
-
// ...
|
|
55
|
-
NgxFixedFooterModule
|
|
56
|
-
]
|
|
57
|
-
})
|
|
82
|
+
import { NgxFixedFooterDirective } from 'ngx-fixed-footer';
|
|
58
83
|
|
|
59
|
-
|
|
84
|
+
@NgModule({
|
|
85
|
+
// ...
|
|
86
|
+
imports: [
|
|
87
|
+
// ...
|
|
88
|
+
NgxFixedFooterDirective
|
|
89
|
+
]
|
|
90
|
+
})
|
|
91
|
+
```
|
|
60
92
|
|
|
61
93
|
## Compatibility
|
|
62
94
|
|
|
63
95
|
| Angular | ngx-fixed-footer | Install |
|
|
64
96
|
| --------- | ---------------- | ----------------------------- |
|
|
65
|
-
| >=
|
|
97
|
+
| >= 14 | 2.x | `yarn add ngx-fixed-footer` |
|
|
98
|
+
| >= 12 | 1.x | `yarn add ngx-fixed-footer@1` |
|
|
66
99
|
| >= 5 < 13 | 0.x | `yarn add ngx-fixed-footer@0` |
|
|
67
100
|
|
|
68
101
|
## Quick start
|
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
export const DEFAULT_CSS_ATTRIBUTE = 'padding';
|
|
2
2
|
export const DEFAULT_CONTAINER_SELECTOR = '[role="main"]';
|
|
3
|
-
|
|
3
|
+
export const DEFAULT_FIXED_FOOTER_OPTIONS = {
|
|
4
|
+
containerSelector: DEFAULT_CONTAINER_SELECTOR,
|
|
5
|
+
cssAttribute: DEFAULT_CSS_ATTRIBUTE
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWZpeGVkLWZvb3Rlci5jb25zdGFudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZml4ZWQtZm9vdGVyL3NyYy9saWIvbmd4LWZpeGVkLWZvb3Rlci5jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsU0FBUyxDQUFDO0FBQy9DLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLGVBQWUsQ0FBQztBQUMxRCxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBMEI7SUFDakUsaUJBQWlCLEVBQUUsMEJBQTBCO0lBQzdDLFlBQVksRUFBRSxxQkFBcUI7Q0FDcEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5neEZpeGVkRm9vdGVyT3B0aW9ucyB9IGZyb20gJy4vbmd4LWZpeGVkLWZvb3Rlci5pbnRlcmZhY2UnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9DU1NfQVRUUklCVVRFID0gJ3BhZGRpbmcnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfQ09OVEFJTkVSX1NFTEVDVE9SID0gJ1tyb2xlPVwibWFpblwiXSc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9GSVhFRF9GT09URVJfT1BUSU9OUzogTmd4Rml4ZWRGb290ZXJPcHRpb25zID0ge1xuICBjb250YWluZXJTZWxlY3RvcjogREVGQVVMVF9DT05UQUlORVJfU0VMRUNUT1IsXG4gIGNzc0F0dHJpYnV0ZTogREVGQVVMVF9DU1NfQVRUUklCVVRFXG59O1xuIl19
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import { DOCUMENT } from '@angular/common';
|
|
2
|
-
import { Directive, Inject, Input } from '@angular/core';
|
|
2
|
+
import { Directive, Inject, Input, inject } from '@angular/core';
|
|
3
|
+
import { DEFAULT_FIXED_FOOTER_OPTIONS } from './ngx-fixed-footer.constants';
|
|
4
|
+
import { APP_FIXED_FOOTER_OPTIONS_TOKEN } from './ngx-fixed-footer.provider';
|
|
3
5
|
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "./ngx-fixed-footer-options.service";
|
|
5
6
|
export class NgxFixedFooterDirective {
|
|
6
|
-
constructor(document, el, render
|
|
7
|
+
constructor(document, el, render) {
|
|
7
8
|
this.document = document;
|
|
8
9
|
this.el = el;
|
|
9
10
|
this.render = render;
|
|
10
|
-
this.options =
|
|
11
|
+
this.options = inject(APP_FIXED_FOOTER_OPTIONS_TOKEN, { optional: true }) || DEFAULT_FIXED_FOOTER_OPTIONS;
|
|
12
|
+
this.offsetHeight = undefined;
|
|
11
13
|
this.containerSelector = this.options.containerSelector;
|
|
12
14
|
this.cssAttribute = this.options.cssAttribute;
|
|
13
|
-
this.offsetHeight = undefined;
|
|
14
15
|
}
|
|
15
16
|
ngOnInit() {
|
|
16
17
|
if (this.hasResizeObserver && this.document) {
|
|
@@ -31,7 +32,7 @@ export class NgxFixedFooterDirective {
|
|
|
31
32
|
}
|
|
32
33
|
// swap css attribute
|
|
33
34
|
if (changes?.cssAttribute && !changes?.cssAttribute?.firstChange) {
|
|
34
|
-
const prev = changes?.
|
|
35
|
+
const prev = changes?.cssAttribute?.previousValue;
|
|
35
36
|
const next = changes?.cssAttribute?.currentValue;
|
|
36
37
|
if (next !== prev) {
|
|
37
38
|
this.removeStyle(this.container, prev);
|
|
@@ -56,13 +57,24 @@ export class NgxFixedFooterDirective {
|
|
|
56
57
|
}
|
|
57
58
|
}
|
|
58
59
|
removeStyle(container, cssAttribute) {
|
|
60
|
+
if (!container) {
|
|
61
|
+
throw new Error(`Cannot removeStyle to undefined container`);
|
|
62
|
+
}
|
|
59
63
|
this.render.setStyle(container, `${cssAttribute}-bottom`, '');
|
|
60
64
|
}
|
|
61
65
|
setStyle(container, cssAttribute, height) {
|
|
66
|
+
if (!container) {
|
|
67
|
+
throw new Error(`Cannot setStyle to undefined container`);
|
|
68
|
+
}
|
|
62
69
|
this.render.setStyle(container, `${cssAttribute}-bottom`, height === 0 ? '' : `${height}px`);
|
|
63
70
|
}
|
|
64
71
|
get container() {
|
|
65
|
-
|
|
72
|
+
const selector = this.containerSelector || this.options.containerSelector;
|
|
73
|
+
const container = this.document.body.querySelector(selector);
|
|
74
|
+
if (!container) {
|
|
75
|
+
console.warn(`Container '${selector}' was not found`);
|
|
76
|
+
}
|
|
77
|
+
return container;
|
|
66
78
|
}
|
|
67
79
|
get html() {
|
|
68
80
|
return this.el.nativeElement;
|
|
@@ -70,20 +82,21 @@ export class NgxFixedFooterDirective {
|
|
|
70
82
|
get hasResizeObserver() {
|
|
71
83
|
return typeof ResizeObserver !== 'undefined';
|
|
72
84
|
}
|
|
73
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
74
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
85
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: NgxFixedFooterDirective, deps: [{ token: DOCUMENT }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
86
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.8", type: NgxFixedFooterDirective, isStandalone: true, selector: "[ngxFixedFooter]", inputs: { containerSelector: "containerSelector", cssAttribute: "cssAttribute" }, usesOnChanges: true, ngImport: i0 }); }
|
|
75
87
|
}
|
|
76
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
88
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: NgxFixedFooterDirective, decorators: [{
|
|
77
89
|
type: Directive,
|
|
78
90
|
args: [{
|
|
79
|
-
selector: '[ngxFixedFooter]'
|
|
91
|
+
selector: '[ngxFixedFooter]',
|
|
92
|
+
standalone: true
|
|
80
93
|
}]
|
|
81
|
-
}], ctorParameters:
|
|
94
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
82
95
|
type: Inject,
|
|
83
96
|
args: [DOCUMENT]
|
|
84
|
-
}] }, { type: i0.ElementRef }, { type: i0.Renderer2 }
|
|
97
|
+
}] }, { type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { containerSelector: [{
|
|
85
98
|
type: Input
|
|
86
99
|
}], cssAttribute: [{
|
|
87
100
|
type: Input
|
|
88
101
|
}] } });
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWZpeGVkLWZvb3Rlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZml4ZWQtZm9vdGVyL3NyYy9saWIvbmd4LWZpeGVkLWZvb3Rlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFDTCxTQUFTLEVBRVQsTUFBTSxFQUNOLEtBQUssRUFNTCxNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFNUUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBTTdFLE1BQU0sT0FBTyx1QkFBdUI7SUFTbEMsWUFDNEIsUUFBYSxFQUMvQixFQUFjLEVBQ2QsTUFBaUI7UUFGQyxhQUFRLEdBQVIsUUFBUSxDQUFLO1FBQy9CLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBWG5CLFlBQU8sR0FDYixNQUFNLENBQUMsOEJBQThCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSw0QkFBNEIsQ0FBQztRQUNyRixpQkFBWSxHQUFXLFNBQVMsQ0FBQztRQUd6QixzQkFBaUIsR0FBVyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDO1FBQzNELGlCQUFZLEdBQStCLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO0lBTWxGLENBQUM7SUFFRyxRQUFRO1FBQ2IsSUFBSSxJQUFJLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUMzQyxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUNwRSxjQUFjLENB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QUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxHQUFHLFlBQVksU0FBUyxFQUFFLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRCxJQUFZLFNBQVM7UUFDbkIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUM7UUFDMUUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDZCxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsUUFBUSxpQkFBaUIsQ0FBQyxDQUFDO1NBQ3ZEO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQVksSUFBSTtRQUNkLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQVksaUJBQWlCO1FBQzNCLE9BQU8sT0FBTyxjQUFjLEtBQUssV0FBVyxDQUFDO0lBQy9DLENBQUM7OEdBNUZVLHVCQUF1QixrQkFVeEIsUUFBUTtrR0FWUCx1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBSm5DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzswQkFXSSxNQUFNOzJCQUFDLFFBQVE7MEZBSkYsaUJBQWlCO3NCQUFoQyxLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFJlbmRlcmVyMixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgaW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgREVGQVVMVF9GSVhFRF9GT09URVJfT1BUSU9OUyB9IGZyb20gJy4vbmd4LWZpeGVkLWZvb3Rlci5jb25zdGFudHMnO1xuaW1wb3J0IHsgTmd4Rml4ZWRGb290ZXJDc3NBdHRyaWJ1dGUsIE5neEZpeGVkRm9vdGVyT3B0aW9ucyB9IGZyb20gJy4vbmd4LWZpeGVkLWZvb3Rlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQVBQX0ZJWEVEX0ZPT1RFUl9PUFRJT05TX1RPS0VOIH0gZnJvbSAnLi9uZ3gtZml4ZWQtZm9vdGVyLnByb3ZpZGVyJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW25neEZpeGVkRm9vdGVyXScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTmd4Rml4ZWRGb290ZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgT25Jbml0IHtcbiAgcHJpdmF0ZSBvcHRpb25zOiBOZ3hGaXhlZEZvb3Rlck9wdGlvbnMgPVxuICAgIGluamVjdChBUFBfRklYRURfRk9PVEVSX09QVElPTlNfVE9LRU4sIHsgb3B0aW9uYWw6IHRydWUgfSkgfHwgREVGQVVMVF9GSVhFRF9GT09URVJfT1BUSU9OUztcbiAgcHJpdmF0ZSBvZmZzZXRIZWlnaHQ6IG51bWJlciA9IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSByZXNpemVPYnNlcnZlcjogUmVzaXplT2JzZXJ2ZXI7XG5cbiAgQElucHV0KCkgcHVibGljIGNvbnRhaW5lclNlbGVjdG9yOiBzdHJpbmcgPSB0aGlzLm9wdGlvbnMuY29udGFpbmVyU2VsZWN0b3I7XG4gIEBJbnB1dCgpIHB1YmxpYyBjc3NBdHRyaWJ1dGU6IE5neEZpeGVkRm9vdGVyQ3NzQXR0cmlidXRlID0gdGhpcy5vcHRpb25zLmNzc0F0dHJpYnV0ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBhbnksXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJlbmRlcjogUmVuZGVyZXIyXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFzUmVzaXplT2JzZXJ2ZXIgJiYgdGhpcy5kb2N1bWVudCkge1xuICAgICAgY29uc3QgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4gdGhpcy5jaGVja0hlaWdodCgpKTtcbiAgICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5odG1sKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhc1Jlc2l6ZU9ic2VydmVyICYmIHRoaXMuZG9jdW1lbnQpIHtcbiAgICAgIC8vIHN3YXAgc2VsZWN0b3JcbiAgICAgIGlmIChjaGFuZ2VzPy5jb250YWluZXJTZWxlY3RvciAmJiAhY2hhbmdlcz8uY29udGFpbmVyU2VsZWN0b3I/LmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgIGNvbnN0IHByZXYgPSBjaGFuZ2VzPy5jb250YWluZXJTZWxlY3Rvcj8ucHJldmlvdXNWYWx1ZTtcbiAgICAgICAgY29uc3QgbmV4dCA9IGNoYW5nZXM/LmNvbnRhaW5lclNlbGVjdG9yPy5jdXJyZW50VmFsdWU7XG4gICAgICAgIGlmIChuZXh0ICE9PSBwcmV2KSB7XG4gICAgICAgICAgdGhpcy5yZW1vdmVTdHlsZSh0aGlzLmRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvcihwcmV2KSwgdGhpcy5jc3NBdHRyaWJ1dGUpO1xuICAgICAgICAgIHRoaXMuc2V0U3R5bGUodGhpcy5kb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3IobmV4dCksIHRoaXMuY3NzQXR0cmlidXRlLCB0aGlzLm9mZnNldEhlaWdodCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gc3dhcCBjc3MgYXR0cmlidXRlXG4gICAgICBpZiAoY2hhbmdlcz8uY3NzQXR0cmlidXRlICYmICFjaGFuZ2VzPy5jc3NBdHRyaWJ1dGU/LmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgIGNvbnN0IHByZXYgPSBjaGFuZ2VzPy5jc3NBdHRyaWJ1dGU/LnByZXZpb3VzVmFsdWU7XG4gICAgICAgIGNvbnN0IG5leHQgPSBjaGFuZ2VzPy5jc3NBdHRyaWJ1dGU/LmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgaWYgKG5leHQgIT09IHByZXYpIHtcbiAgICAgICAgICB0aGlzLnJlbW92ZVN0eWxlKHRoaXMuY29udGFpbmVyLCBwcmV2KTtcbiAgICAgICAgICB0aGlzLnNldFN0eWxlKHRoaXMuY29udGFpbmVyLCBuZXh0LCB0aGlzLm9mZnNldEhlaWdodCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFzUmVzaXplT2JzZXJ2ZXIgJiYgdGhpcy5kb2N1bWVudCkge1xuICAgICAgdGhpcy5yZW1vdmVTdHlsZSh0aGlzLmNvbnRhaW5lciwgdGhpcy5jc3NBdHRyaWJ1dGUpO1xuICAgICAgaWYgKHRoaXMucmVzaXplT2JzZXJ2ZXIpIHtcbiAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlci51bm9ic2VydmUodGhpcy5odG1sKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNoZWNrSGVpZ2h0KCk6IHZvaWQge1xuICAgIGNvbnN0IGhlaWdodCA9IHRoaXMuaHRtbC5vZmZzZXRIZWlnaHQ7XG4gICAgaWYgKHRoaXMub2Zmc2V0SGVpZ2h0ICE9PSBoZWlnaHQpIHtcbiAgICAgIHRoaXMuc2V0U3R5bGUodGhpcy5jb250YWluZXIsIHRoaXMuY3NzQXR0cmlidXRlLCBoZWlnaHQpO1xuICAgICAgdGhpcy5vZmZzZXRIZWlnaHQgPSBoZWlnaHQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVTdHlsZShjb250YWluZXI6IEhUTUxFbGVtZW50LCBjc3NBdHRyaWJ1dGU6IE5neEZpeGVkRm9vdGVyQ3NzQXR0cmlidXRlKTogdm9pZCB7XG4gICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHJlbW92ZVN0eWxlIHRvIHVuZGVmaW5lZCBjb250YWluZXJgKTtcbiAgICB9XG4gICAgdGhpcy5yZW5kZXIuc2V0U3R5bGUoY29udGFpbmVyLCBgJHtjc3NBdHRyaWJ1dGV9LWJvdHRvbWAsICcnKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0U3R5bGUoY29udGFpbmVyOiBIVE1MRWxlbWVudCwgY3NzQXR0cmlidXRlOiBOZ3hGaXhlZEZvb3RlckNzc0F0dHJpYnV0ZSwgaGVpZ2h0OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoIWNvbnRhaW5lcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3Qgc2V0U3R5bGUgdG8gdW5kZWZpbmVkIGNvbnRhaW5lcmApO1xuICAgIH1cbiAgICB0aGlzLnJlbmRlci5zZXRTdHlsZShjb250YWluZXIsIGAke2Nzc0F0dHJpYnV0ZX0tYm90dG9tYCwgaGVpZ2h0ID09PSAwID8gJycgOiBgJHtoZWlnaHR9cHhgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGNvbnRhaW5lcigpOiBIVE1MRWxlbWVudCB7XG4gICAgY29uc3Qgc2VsZWN0b3IgPSB0aGlzLmNvbnRhaW5lclNlbGVjdG9yIHx8IHRoaXMub3B0aW9ucy5jb250YWluZXJTZWxlY3RvcjtcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7XG4gICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgIGNvbnNvbGUud2FybihgQ29udGFpbmVyICcke3NlbGVjdG9yfScgd2FzIG5vdCBmb3VuZGApO1xuICAgIH1cbiAgICByZXR1cm4gY29udGFpbmVyO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgaHRtbCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuZWwubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGhhc1Jlc2l6ZU9ic2VydmVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgUmVzaXplT2JzZXJ2ZXIgIT09ICd1bmRlZmluZWQnO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
import { DEFAULT_CONTAINER_SELECTOR, DEFAULT_CSS_ATTRIBUTE } from './ngx-fixed-footer.constants';
|
|
3
|
+
export const APP_FIXED_FOOTER_OPTIONS_TOKEN = new InjectionToken('[ngxFixedFooter] Options');
|
|
4
|
+
export const provideFixedFooter = (options) => {
|
|
5
|
+
return {
|
|
6
|
+
provide: APP_FIXED_FOOTER_OPTIONS_TOKEN,
|
|
7
|
+
useValue: {
|
|
8
|
+
cssAttribute: options.cssAttribute || DEFAULT_CSS_ATTRIBUTE,
|
|
9
|
+
containerSelector: options.containerSelector || DEFAULT_CONTAINER_SELECTOR
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWZpeGVkLWZvb3Rlci5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1maXhlZC1mb290ZXIvc3JjL2xpYi9uZ3gtZml4ZWQtZm9vdGVyLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHakcsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsSUFBSSxjQUFjLENBQXdCLDBCQUEwQixDQUFDLENBQUM7QUFFcEgsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxPQUE4QixFQUFZLEVBQUU7SUFDN0UsT0FBTztRQUNMLE9BQU8sRUFBRSw4QkFBOEI7UUFDdkMsUUFBUSxFQUFFO1lBQ1IsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUFZLElBQUkscUJBQXFCO1lBQzNELGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsSUFBSSwwQkFBMEI7U0FDM0U7S0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBERUZBVUxUX0NPTlRBSU5FUl9TRUxFQ1RPUiwgREVGQVVMVF9DU1NfQVRUUklCVVRFIH0gZnJvbSAnLi9uZ3gtZml4ZWQtZm9vdGVyLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBOZ3hGaXhlZEZvb3Rlck9wdGlvbnMgfSBmcm9tICcuL25neC1maXhlZC1mb290ZXIuaW50ZXJmYWNlJztcblxuZXhwb3J0IGNvbnN0IEFQUF9GSVhFRF9GT09URVJfT1BUSU9OU19UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxOZ3hGaXhlZEZvb3Rlck9wdGlvbnM+KCdbbmd4Rml4ZWRGb290ZXJdIE9wdGlvbnMnKTtcblxuZXhwb3J0IGNvbnN0IHByb3ZpZGVGaXhlZEZvb3RlciA9IChvcHRpb25zOiBOZ3hGaXhlZEZvb3Rlck9wdGlvbnMpOiBQcm92aWRlciA9PiB7XG4gIHJldHVybiB7XG4gICAgcHJvdmlkZTogQVBQX0ZJWEVEX0ZPT1RFUl9PUFRJT05TX1RPS0VOLFxuICAgIHVzZVZhbHVlOiB7XG4gICAgICBjc3NBdHRyaWJ1dGU6IG9wdGlvbnMuY3NzQXR0cmlidXRlIHx8IERFRkFVTFRfQ1NTX0FUVFJJQlVURSxcbiAgICAgIGNvbnRhaW5lclNlbGVjdG9yOiBvcHRpb25zLmNvbnRhaW5lclNlbGVjdG9yIHx8IERFRkFVTFRfQ09OVEFJTkVSX1NFTEVDVE9SXG4gICAgfVxuICB9O1xufTtcbiJdfQ==
|
package/esm2022/public-api.mjs
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* Public API Surface of ngx-fixed-footer
|
|
3
3
|
*/
|
|
4
|
-
export * from './lib/ngx-fixed-footer-options.service';
|
|
5
4
|
export * from './lib/ngx-fixed-footer.constants';
|
|
6
5
|
export * from './lib/ngx-fixed-footer.directive';
|
|
7
6
|
export * from './lib/ngx-fixed-footer.interface';
|
|
8
|
-
export * from './lib/ngx-fixed-footer.
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
7
|
+
export * from './lib/ngx-fixed-footer.provider';
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC1maXhlZC1mb290ZXIvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLGlDQUFpQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBuZ3gtZml4ZWQtZm9vdGVyXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvbmd4LWZpeGVkLWZvb3Rlci5jb25zdGFudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbmd4LWZpeGVkLWZvb3Rlci5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbmd4LWZpeGVkLWZvb3Rlci5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbmd4LWZpeGVkLWZvb3Rlci5wcm92aWRlcic7XG4iXX0=
|
|
@@ -1,37 +1,34 @@
|
|
|
1
|
-
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, Directive, Inject, Input, InjectionToken, NgModule } from '@angular/core';
|
|
3
1
|
import { DOCUMENT } from '@angular/common';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { InjectionToken, inject, Directive, Inject, Input } from '@angular/core';
|
|
4
4
|
|
|
5
5
|
const DEFAULT_CSS_ATTRIBUTE = 'padding';
|
|
6
6
|
const DEFAULT_CONTAINER_SELECTOR = '[role="main"]';
|
|
7
|
+
const DEFAULT_FIXED_FOOTER_OPTIONS = {
|
|
8
|
+
containerSelector: DEFAULT_CONTAINER_SELECTOR,
|
|
9
|
+
cssAttribute: DEFAULT_CSS_ATTRIBUTE
|
|
10
|
+
};
|
|
7
11
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: NgxFixedFooterOptionsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
20
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: NgxFixedFooterOptionsService }); }
|
|
21
|
-
}
|
|
22
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: NgxFixedFooterOptionsService, decorators: [{
|
|
23
|
-
type: Injectable
|
|
24
|
-
}] });
|
|
12
|
+
const APP_FIXED_FOOTER_OPTIONS_TOKEN = new InjectionToken('[ngxFixedFooter] Options');
|
|
13
|
+
const provideFixedFooter = (options) => {
|
|
14
|
+
return {
|
|
15
|
+
provide: APP_FIXED_FOOTER_OPTIONS_TOKEN,
|
|
16
|
+
useValue: {
|
|
17
|
+
cssAttribute: options.cssAttribute || DEFAULT_CSS_ATTRIBUTE,
|
|
18
|
+
containerSelector: options.containerSelector || DEFAULT_CONTAINER_SELECTOR
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
};
|
|
25
22
|
|
|
26
23
|
class NgxFixedFooterDirective {
|
|
27
|
-
constructor(document, el, render
|
|
24
|
+
constructor(document, el, render) {
|
|
28
25
|
this.document = document;
|
|
29
26
|
this.el = el;
|
|
30
27
|
this.render = render;
|
|
31
|
-
this.options =
|
|
28
|
+
this.options = inject(APP_FIXED_FOOTER_OPTIONS_TOKEN, { optional: true }) || DEFAULT_FIXED_FOOTER_OPTIONS;
|
|
29
|
+
this.offsetHeight = undefined;
|
|
32
30
|
this.containerSelector = this.options.containerSelector;
|
|
33
31
|
this.cssAttribute = this.options.cssAttribute;
|
|
34
|
-
this.offsetHeight = undefined;
|
|
35
32
|
}
|
|
36
33
|
ngOnInit() {
|
|
37
34
|
if (this.hasResizeObserver && this.document) {
|
|
@@ -52,7 +49,7 @@ class NgxFixedFooterDirective {
|
|
|
52
49
|
}
|
|
53
50
|
// swap css attribute
|
|
54
51
|
if (changes?.cssAttribute && !changes?.cssAttribute?.firstChange) {
|
|
55
|
-
const prev = changes?.
|
|
52
|
+
const prev = changes?.cssAttribute?.previousValue;
|
|
56
53
|
const next = changes?.cssAttribute?.currentValue;
|
|
57
54
|
if (next !== prev) {
|
|
58
55
|
this.removeStyle(this.container, prev);
|
|
@@ -77,13 +74,24 @@ class NgxFixedFooterDirective {
|
|
|
77
74
|
}
|
|
78
75
|
}
|
|
79
76
|
removeStyle(container, cssAttribute) {
|
|
77
|
+
if (!container) {
|
|
78
|
+
throw new Error(`Cannot removeStyle to undefined container`);
|
|
79
|
+
}
|
|
80
80
|
this.render.setStyle(container, `${cssAttribute}-bottom`, '');
|
|
81
81
|
}
|
|
82
82
|
setStyle(container, cssAttribute, height) {
|
|
83
|
+
if (!container) {
|
|
84
|
+
throw new Error(`Cannot setStyle to undefined container`);
|
|
85
|
+
}
|
|
83
86
|
this.render.setStyle(container, `${cssAttribute}-bottom`, height === 0 ? '' : `${height}px`);
|
|
84
87
|
}
|
|
85
88
|
get container() {
|
|
86
|
-
|
|
89
|
+
const selector = this.containerSelector || this.options.containerSelector;
|
|
90
|
+
const container = this.document.body.querySelector(selector);
|
|
91
|
+
if (!container) {
|
|
92
|
+
console.warn(`Container '${selector}' was not found`);
|
|
93
|
+
}
|
|
94
|
+
return container;
|
|
87
95
|
}
|
|
88
96
|
get html() {
|
|
89
97
|
return this.el.nativeElement;
|
|
@@ -91,67 +99,24 @@ class NgxFixedFooterDirective {
|
|
|
91
99
|
get hasResizeObserver() {
|
|
92
100
|
return typeof ResizeObserver !== 'undefined';
|
|
93
101
|
}
|
|
94
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
95
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
102
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: NgxFixedFooterDirective, deps: [{ token: DOCUMENT }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
103
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.8", type: NgxFixedFooterDirective, isStandalone: true, selector: "[ngxFixedFooter]", inputs: { containerSelector: "containerSelector", cssAttribute: "cssAttribute" }, usesOnChanges: true, ngImport: i0 }); }
|
|
96
104
|
}
|
|
97
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
105
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: NgxFixedFooterDirective, decorators: [{
|
|
98
106
|
type: Directive,
|
|
99
107
|
args: [{
|
|
100
|
-
selector: '[ngxFixedFooter]'
|
|
108
|
+
selector: '[ngxFixedFooter]',
|
|
109
|
+
standalone: true
|
|
101
110
|
}]
|
|
102
|
-
}], ctorParameters:
|
|
111
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
103
112
|
type: Inject,
|
|
104
113
|
args: [DOCUMENT]
|
|
105
|
-
}] }, { type: i0.ElementRef }, { type: i0.Renderer2 }
|
|
114
|
+
}] }, { type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { containerSelector: [{
|
|
106
115
|
type: Input
|
|
107
116
|
}], cssAttribute: [{
|
|
108
117
|
type: Input
|
|
109
118
|
}] } });
|
|
110
119
|
|
|
111
|
-
const ngxFixedFooterOptionsFactory = (options) => {
|
|
112
|
-
const ngxFixedFooterOptionsService = new NgxFixedFooterOptionsService();
|
|
113
|
-
if (options) {
|
|
114
|
-
if (options.containerSelector) {
|
|
115
|
-
ngxFixedFooterOptionsService.containerSelector = options.containerSelector;
|
|
116
|
-
}
|
|
117
|
-
if (options.cssAttribute) {
|
|
118
|
-
ngxFixedFooterOptionsService.cssAttribute = options.cssAttribute;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
return ngxFixedFooterOptionsService;
|
|
122
|
-
};
|
|
123
|
-
|
|
124
|
-
let FOR_ROOT_OPTIONS_TOKEN = new InjectionToken('forRoot() NgxCutOptionsService configuration.');
|
|
125
|
-
class NgxFixedFooterModule {
|
|
126
|
-
static forRoot(options) {
|
|
127
|
-
return {
|
|
128
|
-
ngModule: NgxFixedFooterModule,
|
|
129
|
-
providers: [
|
|
130
|
-
{
|
|
131
|
-
provide: FOR_ROOT_OPTIONS_TOKEN,
|
|
132
|
-
useValue: options
|
|
133
|
-
},
|
|
134
|
-
{
|
|
135
|
-
provide: NgxFixedFooterOptionsService,
|
|
136
|
-
useFactory: ngxFixedFooterOptionsFactory,
|
|
137
|
-
deps: [FOR_ROOT_OPTIONS_TOKEN]
|
|
138
|
-
}
|
|
139
|
-
]
|
|
140
|
-
};
|
|
141
|
-
}
|
|
142
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: NgxFixedFooterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
143
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.0", ngImport: i0, type: NgxFixedFooterModule, declarations: [NgxFixedFooterDirective], exports: [NgxFixedFooterDirective] }); }
|
|
144
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: NgxFixedFooterModule, providers: [NgxFixedFooterOptionsService] }); }
|
|
145
|
-
}
|
|
146
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: NgxFixedFooterModule, decorators: [{
|
|
147
|
-
type: NgModule,
|
|
148
|
-
args: [{
|
|
149
|
-
declarations: [NgxFixedFooterDirective],
|
|
150
|
-
exports: [NgxFixedFooterDirective],
|
|
151
|
-
providers: [NgxFixedFooterOptionsService]
|
|
152
|
-
}]
|
|
153
|
-
}] });
|
|
154
|
-
|
|
155
120
|
/*
|
|
156
121
|
* Public API Surface of ngx-fixed-footer
|
|
157
122
|
*/
|
|
@@ -160,5 +125,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImpor
|
|
|
160
125
|
* Generated bundle index. Do not edit.
|
|
161
126
|
*/
|
|
162
127
|
|
|
163
|
-
export { DEFAULT_CONTAINER_SELECTOR, DEFAULT_CSS_ATTRIBUTE,
|
|
128
|
+
export { APP_FIXED_FOOTER_OPTIONS_TOKEN, DEFAULT_CONTAINER_SELECTOR, DEFAULT_CSS_ATTRIBUTE, DEFAULT_FIXED_FOOTER_OPTIONS, NgxFixedFooterDirective, provideFixedFooter };
|
|
164
129
|
//# sourceMappingURL=ngx-fixed-footer.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-fixed-footer.mjs","sources":["../../../projects/ngx-fixed-footer/src/lib/ngx-fixed-footer.constants.ts","../../../projects/ngx-fixed-footer/src/lib/ngx-fixed-footer-options.service.ts","../../../projects/ngx-fixed-footer/src/lib/ngx-fixed-footer.directive.ts","../../../projects/ngx-fixed-footer/src/lib/ngx-fixed-footer-factory.ts","../../../projects/ngx-fixed-footer/src/lib/ngx-fixed-footer.module.ts","../../../projects/ngx-fixed-footer/src/public-api.ts","../../../projects/ngx-fixed-footer/src/ngx-fixed-footer.ts"],"sourcesContent":["export const DEFAULT_CSS_ATTRIBUTE = 'padding';\nexport const DEFAULT_CONTAINER_SELECTOR = '[role=\"main\"]';\n","import { Injectable } from '@angular/core';\nimport { DEFAULT_CONTAINER_SELECTOR, DEFAULT_CSS_ATTRIBUTE } from './ngx-fixed-footer.constants';\nimport { NgxFixedFooterCssAttribute } from './ngx-fixed-footer.interface';\n\n@Injectable()\nexport class NgxFixedFooterOptionsService {\n /**\n * @returns Css attribute of HTML element which gets style. It means margin or padding\n */\n public cssAttribute: NgxFixedFooterCssAttribute = DEFAULT_CSS_ATTRIBUTE;\n\n /**\n * @returns Css selector of HTML element which gets extra margin or padding\n */\n public containerSelector: string = DEFAULT_CONTAINER_SELECTOR;\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n Directive,\n ElementRef,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Renderer2,\n SimpleChanges\n} from '@angular/core';\nimport { NgxFixedFooterOptionsService } from './ngx-fixed-footer-options.service';\nimport { NgxFixedFooterCssAttribute } from './ngx-fixed-footer.interface';\n\n@Directive({\n selector: '[ngxFixedFooter]'\n})\nexport class NgxFixedFooterDirective implements OnDestroy, OnChanges, OnInit {\n @Input() public containerSelector: string = this.options.containerSelector;\n @Input() public cssAttribute: NgxFixedFooterCssAttribute = this.options.cssAttribute;\n\n private offsetHeight: number = undefined;\n private resizeObserver: ResizeObserver;\n\n constructor(\n @Inject(DOCUMENT) private document: any,\n private el: ElementRef,\n private render: Renderer2,\n private options: NgxFixedFooterOptionsService\n ) {}\n\n public ngOnInit(): void {\n if (this.hasResizeObserver && this.document) {\n const resizeObserver = new ResizeObserver(() => this.checkHeight());\n resizeObserver.observe(this.html);\n }\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (this.hasResizeObserver && this.document) {\n // swap selector\n if (changes?.containerSelector && !changes?.containerSelector?.firstChange) {\n const prev = changes?.containerSelector?.previousValue;\n const next = changes?.containerSelector?.currentValue;\n if (next !== prev) {\n this.removeStyle(this.document.body.querySelector(prev), this.cssAttribute);\n this.setStyle(this.document.body.querySelector(next), this.cssAttribute, this.offsetHeight);\n }\n }\n\n // swap css attribute\n if (changes?.cssAttribute && !changes?.cssAttribute?.firstChange) {\n const prev = changes?.containerSelector?.previousValue;\n const next = changes?.cssAttribute?.currentValue;\n if (next !== prev) {\n this.removeStyle(this.container, prev);\n this.setStyle(this.container, next, this.offsetHeight);\n }\n }\n }\n }\n\n public ngOnDestroy(): void {\n if (this.hasResizeObserver && this.document) {\n this.removeStyle(this.container, this.cssAttribute);\n if (this.resizeObserver) {\n this.resizeObserver.unobserve(this.html);\n }\n }\n }\n\n private checkHeight(): void {\n const height = this.html.offsetHeight;\n if (this.offsetHeight !== height) {\n this.setStyle(this.container, this.cssAttribute, height);\n this.offsetHeight = height;\n }\n }\n\n private removeStyle(container: HTMLElement, cssAttribute: NgxFixedFooterCssAttribute): void {\n this.render.setStyle(container, `${cssAttribute}-bottom`, '');\n }\n\n private setStyle(container: HTMLElement, cssAttribute: NgxFixedFooterCssAttribute, height: number): void {\n this.render.setStyle(container, `${cssAttribute}-bottom`, height === 0 ? '' : `${height}px`);\n }\n\n private get container(): HTMLElement {\n return this.document.body.querySelector(this.containerSelector);\n }\n\n private get html(): HTMLElement {\n return this.el.nativeElement;\n }\n\n private get hasResizeObserver(): boolean {\n return typeof ResizeObserver !== 'undefined';\n }\n}\n","import { NgxFixedFooterOptionsService } from './ngx-fixed-footer-options.service';\nimport { NgxFixedFooterOptions } from './ngx-fixed-footer.interface';\n\nexport const ngxFixedFooterOptionsFactory = (options?: NgxFixedFooterOptions): NgxFixedFooterOptionsService => {\n const ngxFixedFooterOptionsService = new NgxFixedFooterOptionsService();\n if (options) {\n if (options.containerSelector) {\n ngxFixedFooterOptionsService.containerSelector = options.containerSelector;\n }\n if (options.cssAttribute) {\n ngxFixedFooterOptionsService.cssAttribute = options.cssAttribute;\n }\n }\n return ngxFixedFooterOptionsService;\n};\n","import { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\nimport { ngxFixedFooterOptionsFactory } from './ngx-fixed-footer-factory';\nimport { NgxFixedFooterOptionsService } from './ngx-fixed-footer-options.service';\nimport { NgxFixedFooterDirective } from './ngx-fixed-footer.directive';\nimport { NgxFixedFooterOptions } from './ngx-fixed-footer.interface';\n\nexport let FOR_ROOT_OPTIONS_TOKEN = new InjectionToken<NgxFixedFooterOptions>(\n 'forRoot() NgxCutOptionsService configuration.'\n);\n\n@NgModule({\n declarations: [NgxFixedFooterDirective],\n exports: [NgxFixedFooterDirective],\n providers: [NgxFixedFooterOptionsService]\n})\nexport class NgxFixedFooterModule {\n public static forRoot(options?: NgxFixedFooterOptions): ModuleWithProviders<NgxFixedFooterModule> {\n return {\n ngModule: NgxFixedFooterModule,\n providers: [\n {\n provide: FOR_ROOT_OPTIONS_TOKEN,\n useValue: options\n },\n {\n provide: NgxFixedFooterOptionsService,\n useFactory: ngxFixedFooterOptionsFactory,\n deps: [FOR_ROOT_OPTIONS_TOKEN]\n }\n ]\n };\n }\n}\n","/*\n * Public API Surface of ngx-fixed-footer\n */\n\nexport * from './lib/ngx-fixed-footer-options.service';\nexport * from './lib/ngx-fixed-footer.constants';\nexport * from './lib/ngx-fixed-footer.directive';\nexport * from './lib/ngx-fixed-footer.interface';\nexport * from './lib/ngx-fixed-footer.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NgxFixedFooterOptionsService"],"mappings":";;;;AAAO,MAAM,qBAAqB,GAAG,UAAU;AACxC,MAAM,0BAA0B,GAAG;;MCI7B,4BAA4B,CAAA;AADzC,IAAA,WAAA,GAAA;AAEE;;AAEG;QACI,IAAY,CAAA,YAAA,GAA+B,qBAAqB,CAAC;AAExE;;AAEG;QACI,IAAiB,CAAA,iBAAA,GAAW,0BAA0B,CAAC;AAC/D,KAAA;8GAVY,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAA5B,4BAA4B,EAAA,CAAA,CAAA,EAAA;;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADxC,UAAU;;;MCcE,uBAAuB,CAAA;AAOlC,IAAA,WAAA,CAC4B,QAAa,EAC/B,EAAc,EACd,MAAiB,EACjB,OAAqC,EAAA;QAHnB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAK;QAC/B,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QACd,IAAM,CAAA,MAAA,GAAN,MAAM,CAAW;QACjB,IAAO,CAAA,OAAA,GAAP,OAAO,CAA8B;AAV/B,QAAA,IAAA,CAAA,iBAAiB,GAAW,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;AAC3D,QAAA,IAAA,CAAA,YAAY,GAA+B,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;QAE7E,IAAY,CAAA,YAAA,GAAW,SAAS,CAAC;KAQrC;IAEG,QAAQ,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC3C,YAAA,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACpE,YAAA,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,SAAA;KACF;AAEM,IAAA,WAAW,CAAC,OAAsB,EAAA;AACvC,QAAA,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,QAAQ,EAAE;;YAE3C,IAAI,OAAO,EAAE,iBAAiB,IAAI,CAAC,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE;AAC1E,gBAAA,MAAM,IAAI,GAAG,OAAO,EAAE,iBAAiB,EAAE,aAAa,CAAC;AACvD,gBAAA,MAAM,IAAI,GAAG,OAAO,EAAE,iBAAiB,EAAE,YAAY,CAAC;gBACtD,IAAI,IAAI,KAAK,IAAI,EAAE;AACjB,oBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;oBAC5E,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AAC7F,iBAAA;AACF,aAAA;;YAGD,IAAI,OAAO,EAAE,YAAY,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE;AAChE,gBAAA,MAAM,IAAI,GAAG,OAAO,EAAE,iBAAiB,EAAE,aAAa,CAAC;AACvD,gBAAA,MAAM,IAAI,GAAG,OAAO,EAAE,YAAY,EAAE,YAAY,CAAC;gBACjD,IAAI,IAAI,KAAK,IAAI,EAAE;oBACjB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACvC,oBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACxD,iBAAA;AACF,aAAA;AACF,SAAA;KACF;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,QAAQ,EAAE;YAC3C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YACpD,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1C,aAAA;AACF,SAAA;KACF;IAEO,WAAW,GAAA;AACjB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;AACtC,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,MAAM,EAAE;AAChC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AACzD,YAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;AAC5B,SAAA;KACF;IAEO,WAAW,CAAC,SAAsB,EAAE,YAAwC,EAAA;AAClF,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAA,EAAG,YAAY,CAAA,OAAA,CAAS,EAAE,EAAE,CAAC,CAAC;KAC/D;AAEO,IAAA,QAAQ,CAAC,SAAsB,EAAE,YAAwC,EAAE,MAAc,EAAA;QAC/F,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAA,EAAG,YAAY,CAAA,OAAA,CAAS,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,GAAG,CAAG,EAAA,MAAM,CAAI,EAAA,CAAA,CAAC,CAAC;KAC9F;AAED,IAAA,IAAY,SAAS,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;KACjE;AAED,IAAA,IAAY,IAAI,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;KAC9B;AAED,IAAA,IAAY,iBAAiB,GAAA;AAC3B,QAAA,OAAO,OAAO,cAAc,KAAK,WAAW,CAAC;KAC9C;AAhFU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,kBAQxB,QAAQ,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,4BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGARP,uBAAuB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC7B,iBAAA,CAAA;;0BASI,MAAM;2BAAC,QAAQ,CAAA;qIAPF,iBAAiB,EAAA,CAAA;sBAAhC,KAAK;gBACU,YAAY,EAAA,CAAA;sBAA3B,KAAK;;;ACjBD,MAAM,4BAA4B,GAAG,CAAC,OAA+B,KAAkC;AAC5G,IAAA,MAAM,4BAA4B,GAAG,IAAI,4BAA4B,EAAE,CAAC;AACxE,IAAA,IAAI,OAAO,EAAE;QACX,IAAI,OAAO,CAAC,iBAAiB,EAAE;AAC7B,YAAA,4BAA4B,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;AAC5E,SAAA;QACD,IAAI,OAAO,CAAC,YAAY,EAAE;AACxB,YAAA,4BAA4B,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;AAClE,SAAA;AACF,KAAA;AACD,IAAA,OAAO,4BAA4B,CAAC;AACtC,CAAC;;ICRU,sBAAsB,GAAG,IAAI,cAAc,CACpD,+CAA+C,EAC/C;MAOW,oBAAoB,CAAA;IACxB,OAAO,OAAO,CAAC,OAA+B,EAAA;QACnD,OAAO;AACL,YAAA,QAAQ,EAAE,oBAAoB;AAC9B,YAAA,SAAS,EAAE;AACT,gBAAA;AACE,oBAAA,OAAO,EAAE,sBAAsB;AAC/B,oBAAA,QAAQ,EAAE,OAAO;AAClB,iBAAA;AACD,gBAAA;AACE,oBAAA,OAAO,EAAE,4BAA4B;AACrC,oBAAA,UAAU,EAAE,4BAA4B;oBACxC,IAAI,EAAE,CAAC,sBAAsB,CAAC;AAC/B,iBAAA;AACF,aAAA;SACF,CAAC;KACH;8GAhBU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAApB,oBAAoB,EAAA,YAAA,EAAA,CAJhB,uBAAuB,CAAA,EAAA,OAAA,EAAA,CAC5B,uBAAuB,CAAA,EAAA,CAAA,CAAA,EAAA;+GAGtB,oBAAoB,EAAA,SAAA,EAFpB,CAAC,4BAA4B,CAAC,EAAA,CAAA,CAAA,EAAA;;2FAE9B,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,uBAAuB,CAAC;oBACvC,OAAO,EAAE,CAAC,uBAAuB,CAAC;oBAClC,SAAS,EAAE,CAAC,4BAA4B,CAAC;AAC1C,iBAAA,CAAA;;;ACdD;;AAEG;;ACFH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"ngx-fixed-footer.mjs","sources":["../../../projects/ngx-fixed-footer/src/lib/ngx-fixed-footer.constants.ts","../../../projects/ngx-fixed-footer/src/lib/ngx-fixed-footer.provider.ts","../../../projects/ngx-fixed-footer/src/lib/ngx-fixed-footer.directive.ts","../../../projects/ngx-fixed-footer/src/public-api.ts","../../../projects/ngx-fixed-footer/src/ngx-fixed-footer.ts"],"sourcesContent":["import { NgxFixedFooterOptions } from './ngx-fixed-footer.interface';\n\nexport const DEFAULT_CSS_ATTRIBUTE = 'padding';\nexport const DEFAULT_CONTAINER_SELECTOR = '[role=\"main\"]';\nexport const DEFAULT_FIXED_FOOTER_OPTIONS: NgxFixedFooterOptions = {\n containerSelector: DEFAULT_CONTAINER_SELECTOR,\n cssAttribute: DEFAULT_CSS_ATTRIBUTE\n};\n","import { InjectionToken, Provider } from '@angular/core';\nimport { DEFAULT_CONTAINER_SELECTOR, DEFAULT_CSS_ATTRIBUTE } from './ngx-fixed-footer.constants';\nimport { NgxFixedFooterOptions } from './ngx-fixed-footer.interface';\n\nexport const APP_FIXED_FOOTER_OPTIONS_TOKEN = new InjectionToken<NgxFixedFooterOptions>('[ngxFixedFooter] Options');\n\nexport const provideFixedFooter = (options: NgxFixedFooterOptions): Provider => {\n return {\n provide: APP_FIXED_FOOTER_OPTIONS_TOKEN,\n useValue: {\n cssAttribute: options.cssAttribute || DEFAULT_CSS_ATTRIBUTE,\n containerSelector: options.containerSelector || DEFAULT_CONTAINER_SELECTOR\n }\n };\n};\n","import { DOCUMENT } from '@angular/common';\nimport {\n Directive,\n ElementRef,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Renderer2,\n SimpleChanges,\n inject\n} from '@angular/core';\nimport { DEFAULT_FIXED_FOOTER_OPTIONS } from './ngx-fixed-footer.constants';\nimport { NgxFixedFooterCssAttribute, NgxFixedFooterOptions } from './ngx-fixed-footer.interface';\nimport { APP_FIXED_FOOTER_OPTIONS_TOKEN } from './ngx-fixed-footer.provider';\n\n@Directive({\n selector: '[ngxFixedFooter]',\n standalone: true\n})\nexport class NgxFixedFooterDirective implements OnDestroy, OnChanges, OnInit {\n private options: NgxFixedFooterOptions =\n inject(APP_FIXED_FOOTER_OPTIONS_TOKEN, { optional: true }) || DEFAULT_FIXED_FOOTER_OPTIONS;\n private offsetHeight: number = undefined;\n private resizeObserver: ResizeObserver;\n\n @Input() public containerSelector: string = this.options.containerSelector;\n @Input() public cssAttribute: NgxFixedFooterCssAttribute = this.options.cssAttribute;\n\n constructor(\n @Inject(DOCUMENT) private document: any,\n private el: ElementRef,\n private render: Renderer2\n ) {}\n\n public ngOnInit(): void {\n if (this.hasResizeObserver && this.document) {\n const resizeObserver = new ResizeObserver(() => this.checkHeight());\n resizeObserver.observe(this.html);\n }\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (this.hasResizeObserver && this.document) {\n // swap selector\n if (changes?.containerSelector && !changes?.containerSelector?.firstChange) {\n const prev = changes?.containerSelector?.previousValue;\n const next = changes?.containerSelector?.currentValue;\n if (next !== prev) {\n this.removeStyle(this.document.body.querySelector(prev), this.cssAttribute);\n this.setStyle(this.document.body.querySelector(next), this.cssAttribute, this.offsetHeight);\n }\n }\n\n // swap css attribute\n if (changes?.cssAttribute && !changes?.cssAttribute?.firstChange) {\n const prev = changes?.cssAttribute?.previousValue;\n const next = changes?.cssAttribute?.currentValue;\n if (next !== prev) {\n this.removeStyle(this.container, prev);\n this.setStyle(this.container, next, this.offsetHeight);\n }\n }\n }\n }\n\n public ngOnDestroy(): void {\n if (this.hasResizeObserver && this.document) {\n this.removeStyle(this.container, this.cssAttribute);\n if (this.resizeObserver) {\n this.resizeObserver.unobserve(this.html);\n }\n }\n }\n\n private checkHeight(): void {\n const height = this.html.offsetHeight;\n if (this.offsetHeight !== height) {\n this.setStyle(this.container, this.cssAttribute, height);\n this.offsetHeight = height;\n }\n }\n\n private removeStyle(container: HTMLElement, cssAttribute: NgxFixedFooterCssAttribute): void {\n if (!container) {\n throw new Error(`Cannot removeStyle to undefined container`);\n }\n this.render.setStyle(container, `${cssAttribute}-bottom`, '');\n }\n\n private setStyle(container: HTMLElement, cssAttribute: NgxFixedFooterCssAttribute, height: number): void {\n if (!container) {\n throw new Error(`Cannot setStyle to undefined container`);\n }\n this.render.setStyle(container, `${cssAttribute}-bottom`, height === 0 ? '' : `${height}px`);\n }\n\n private get container(): HTMLElement {\n const selector = this.containerSelector || this.options.containerSelector;\n const container = this.document.body.querySelector(selector);\n if (!container) {\n console.warn(`Container '${selector}' was not found`);\n }\n return container;\n }\n\n private get html(): HTMLElement {\n return this.el.nativeElement;\n }\n\n private get hasResizeObserver(): boolean {\n return typeof ResizeObserver !== 'undefined';\n }\n}\n","/*\n * Public API Surface of ngx-fixed-footer\n */\n\nexport * from './lib/ngx-fixed-footer.constants';\nexport * from './lib/ngx-fixed-footer.directive';\nexport * from './lib/ngx-fixed-footer.interface';\nexport * from './lib/ngx-fixed-footer.provider';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
+
import { NgxFixedFooterOptions } from './ngx-fixed-footer.interface';
|
|
1
2
|
export declare const DEFAULT_CSS_ATTRIBUTE = "padding";
|
|
2
3
|
export declare const DEFAULT_CONTAINER_SELECTOR = "[role=\"main\"]";
|
|
4
|
+
export declare const DEFAULT_FIXED_FOOTER_OPTIONS: NgxFixedFooterOptions;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { ElementRef, OnChanges, OnDestroy, OnInit, Renderer2, SimpleChanges } from '@angular/core';
|
|
2
|
-
import { NgxFixedFooterOptionsService } from './ngx-fixed-footer-options.service';
|
|
3
2
|
import { NgxFixedFooterCssAttribute } from './ngx-fixed-footer.interface';
|
|
4
3
|
import * as i0 from "@angular/core";
|
|
5
4
|
export declare class NgxFixedFooterDirective implements OnDestroy, OnChanges, OnInit {
|
|
@@ -7,11 +6,11 @@ export declare class NgxFixedFooterDirective implements OnDestroy, OnChanges, On
|
|
|
7
6
|
private el;
|
|
8
7
|
private render;
|
|
9
8
|
private options;
|
|
10
|
-
containerSelector: string;
|
|
11
|
-
cssAttribute: NgxFixedFooterCssAttribute;
|
|
12
9
|
private offsetHeight;
|
|
13
10
|
private resizeObserver;
|
|
14
|
-
|
|
11
|
+
containerSelector: string;
|
|
12
|
+
cssAttribute: NgxFixedFooterCssAttribute;
|
|
13
|
+
constructor(document: any, el: ElementRef, render: Renderer2);
|
|
15
14
|
ngOnInit(): void;
|
|
16
15
|
ngOnChanges(changes: SimpleChanges): void;
|
|
17
16
|
ngOnDestroy(): void;
|
|
@@ -22,5 +21,5 @@ export declare class NgxFixedFooterDirective implements OnDestroy, OnChanges, On
|
|
|
22
21
|
private get html();
|
|
23
22
|
private get hasResizeObserver();
|
|
24
23
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgxFixedFooterDirective, never>;
|
|
25
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<NgxFixedFooterDirective, "[ngxFixedFooter]", never, { "containerSelector": { "alias": "containerSelector"; "required": false; }; "cssAttribute": { "alias": "cssAttribute"; "required": false; }; }, {}, never, never,
|
|
24
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<NgxFixedFooterDirective, "[ngxFixedFooter]", never, { "containerSelector": { "alias": "containerSelector"; "required": false; }; "cssAttribute": { "alias": "cssAttribute"; "required": false; }; }, {}, never, never, true, never>;
|
|
26
25
|
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { InjectionToken, Provider } from '@angular/core';
|
|
2
|
+
import { NgxFixedFooterOptions } from './ngx-fixed-footer.interface';
|
|
3
|
+
export declare const APP_FIXED_FOOTER_OPTIONS_TOKEN: InjectionToken<NgxFixedFooterOptions>;
|
|
4
|
+
export declare const provideFixedFooter: (options: NgxFixedFooterOptions) => Provider;
|
package/package.json
CHANGED
package/public-api.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
export * from './lib/ngx-fixed-footer-options.service';
|
|
2
1
|
export * from './lib/ngx-fixed-footer.constants';
|
|
3
2
|
export * from './lib/ngx-fixed-footer.directive';
|
|
4
3
|
export * from './lib/ngx-fixed-footer.interface';
|
|
5
|
-
export * from './lib/ngx-fixed-footer.
|
|
4
|
+
export * from './lib/ngx-fixed-footer.provider';
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { NgxFixedFooterOptionsService } from './ngx-fixed-footer-options.service';
|
|
2
|
-
export const ngxFixedFooterOptionsFactory = (options) => {
|
|
3
|
-
const ngxFixedFooterOptionsService = new NgxFixedFooterOptionsService();
|
|
4
|
-
if (options) {
|
|
5
|
-
if (options.containerSelector) {
|
|
6
|
-
ngxFixedFooterOptionsService.containerSelector = options.containerSelector;
|
|
7
|
-
}
|
|
8
|
-
if (options.cssAttribute) {
|
|
9
|
-
ngxFixedFooterOptionsService.cssAttribute = options.cssAttribute;
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
return ngxFixedFooterOptionsService;
|
|
13
|
-
};
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWZpeGVkLWZvb3Rlci1mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWZpeGVkLWZvb3Rlci9zcmMvbGliL25neC1maXhlZC1mb290ZXItZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUdsRixNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLE9BQStCLEVBQWdDLEVBQUU7SUFDNUcsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLDRCQUE0QixFQUFFLENBQUM7SUFDeEUsSUFBSSxPQUFPLEVBQUU7UUFDWCxJQUFJLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRTtZQUM3Qiw0QkFBNEIsQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUM7U0FDNUU7UUFDRCxJQUFJLE9BQU8sQ0FBQyxZQUFZLEVBQUU7WUFDeEIsNEJBQTRCLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUM7U0FDbEU7S0FDRjtJQUNELE9BQU8sNEJBQTRCLENBQUM7QUFDdEMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmd4Rml4ZWRGb290ZXJPcHRpb25zU2VydmljZSB9IGZyb20gJy4vbmd4LWZpeGVkLWZvb3Rlci1vcHRpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmd4Rml4ZWRGb290ZXJPcHRpb25zIH0gZnJvbSAnLi9uZ3gtZml4ZWQtZm9vdGVyLmludGVyZmFjZSc7XG5cbmV4cG9ydCBjb25zdCBuZ3hGaXhlZEZvb3Rlck9wdGlvbnNGYWN0b3J5ID0gKG9wdGlvbnM/OiBOZ3hGaXhlZEZvb3Rlck9wdGlvbnMpOiBOZ3hGaXhlZEZvb3Rlck9wdGlvbnNTZXJ2aWNlID0+IHtcbiAgY29uc3Qgbmd4Rml4ZWRGb290ZXJPcHRpb25zU2VydmljZSA9IG5ldyBOZ3hGaXhlZEZvb3Rlck9wdGlvbnNTZXJ2aWNlKCk7XG4gIGlmIChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMuY29udGFpbmVyU2VsZWN0b3IpIHtcbiAgICAgIG5neEZpeGVkRm9vdGVyT3B0aW9uc1NlcnZpY2UuY29udGFpbmVyU2VsZWN0b3IgPSBvcHRpb25zLmNvbnRhaW5lclNlbGVjdG9yO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5jc3NBdHRyaWJ1dGUpIHtcbiAgICAgIG5neEZpeGVkRm9vdGVyT3B0aW9uc1NlcnZpY2UuY3NzQXR0cmlidXRlID0gb3B0aW9ucy5jc3NBdHRyaWJ1dGU7XG4gICAgfVxuICB9XG4gIHJldHVybiBuZ3hGaXhlZEZvb3Rlck9wdGlvbnNTZXJ2aWNlO1xufTtcbiJdfQ==
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { DEFAULT_CONTAINER_SELECTOR, DEFAULT_CSS_ATTRIBUTE } from './ngx-fixed-footer.constants';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class NgxFixedFooterOptionsService {
|
|
5
|
-
constructor() {
|
|
6
|
-
/**
|
|
7
|
-
* @returns Css attribute of HTML element which gets style. It means margin or padding
|
|
8
|
-
*/
|
|
9
|
-
this.cssAttribute = DEFAULT_CSS_ATTRIBUTE;
|
|
10
|
-
/**
|
|
11
|
-
* @returns Css selector of HTML element which gets extra margin or padding
|
|
12
|
-
*/
|
|
13
|
-
this.containerSelector = DEFAULT_CONTAINER_SELECTOR;
|
|
14
|
-
}
|
|
15
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: NgxFixedFooterOptionsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
16
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: NgxFixedFooterOptionsService }); }
|
|
17
|
-
}
|
|
18
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: NgxFixedFooterOptionsService, decorators: [{
|
|
19
|
-
type: Injectable
|
|
20
|
-
}] });
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWZpeGVkLWZvb3Rlci1vcHRpb25zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZml4ZWQtZm9vdGVyL3NyYy9saWIvbmd4LWZpeGVkLWZvb3Rlci1vcHRpb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFJakcsTUFBTSxPQUFPLDRCQUE0QjtJQUR6QztRQUVFOztXQUVHO1FBQ0ksaUJBQVksR0FBK0IscUJBQXFCLENBQUM7UUFFeEU7O1dBRUc7UUFDSSxzQkFBaUIsR0FBVywwQkFBMEIsQ0FBQztLQUMvRDs4R0FWWSw0QkFBNEI7a0hBQTVCLDRCQUE0Qjs7MkZBQTVCLDRCQUE0QjtrQkFEeEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERFRkFVTFRfQ09OVEFJTkVSX1NFTEVDVE9SLCBERUZBVUxUX0NTU19BVFRSSUJVVEUgfSBmcm9tICcuL25neC1maXhlZC1mb290ZXIuY29uc3RhbnRzJztcbmltcG9ydCB7IE5neEZpeGVkRm9vdGVyQ3NzQXR0cmlidXRlIH0gZnJvbSAnLi9uZ3gtZml4ZWQtZm9vdGVyLmludGVyZmFjZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOZ3hGaXhlZEZvb3Rlck9wdGlvbnNTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIEByZXR1cm5zIENzcyBhdHRyaWJ1dGUgb2YgSFRNTCBlbGVtZW50IHdoaWNoIGdldHMgc3R5bGUuIEl0IG1lYW5zIG1hcmdpbiBvciBwYWRkaW5nXG4gICAqL1xuICBwdWJsaWMgY3NzQXR0cmlidXRlOiBOZ3hGaXhlZEZvb3RlckNzc0F0dHJpYnV0ZSA9IERFRkFVTFRfQ1NTX0FUVFJJQlVURTtcblxuICAvKipcbiAgICogQHJldHVybnMgQ3NzIHNlbGVjdG9yIG9mIEhUTUwgZWxlbWVudCB3aGljaCBnZXRzIGV4dHJhIG1hcmdpbiBvciBwYWRkaW5nXG4gICAqL1xuICBwdWJsaWMgY29udGFpbmVyU2VsZWN0b3I6IHN0cmluZyA9IERFRkFVTFRfQ09OVEFJTkVSX1NFTEVDVE9SO1xufVxuIl19
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { InjectionToken, NgModule } from '@angular/core';
|
|
2
|
-
import { ngxFixedFooterOptionsFactory } from './ngx-fixed-footer-factory';
|
|
3
|
-
import { NgxFixedFooterOptionsService } from './ngx-fixed-footer-options.service';
|
|
4
|
-
import { NgxFixedFooterDirective } from './ngx-fixed-footer.directive';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export let FOR_ROOT_OPTIONS_TOKEN = new InjectionToken('forRoot() NgxCutOptionsService configuration.');
|
|
7
|
-
export class NgxFixedFooterModule {
|
|
8
|
-
static forRoot(options) {
|
|
9
|
-
return {
|
|
10
|
-
ngModule: NgxFixedFooterModule,
|
|
11
|
-
providers: [
|
|
12
|
-
{
|
|
13
|
-
provide: FOR_ROOT_OPTIONS_TOKEN,
|
|
14
|
-
useValue: options
|
|
15
|
-
},
|
|
16
|
-
{
|
|
17
|
-
provide: NgxFixedFooterOptionsService,
|
|
18
|
-
useFactory: ngxFixedFooterOptionsFactory,
|
|
19
|
-
deps: [FOR_ROOT_OPTIONS_TOKEN]
|
|
20
|
-
}
|
|
21
|
-
]
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: NgxFixedFooterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
25
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.0", ngImport: i0, type: NgxFixedFooterModule, declarations: [NgxFixedFooterDirective], exports: [NgxFixedFooterDirective] }); }
|
|
26
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: NgxFixedFooterModule, providers: [NgxFixedFooterOptionsService] }); }
|
|
27
|
-
}
|
|
28
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: NgxFixedFooterModule, decorators: [{
|
|
29
|
-
type: NgModule,
|
|
30
|
-
args: [{
|
|
31
|
-
declarations: [NgxFixedFooterDirective],
|
|
32
|
-
exports: [NgxFixedFooterDirective],
|
|
33
|
-
providers: [NgxFixedFooterOptionsService]
|
|
34
|
-
}]
|
|
35
|
-
}] });
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWZpeGVkLWZvb3Rlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZml4ZWQtZm9vdGVyL3NyYy9saWIvbmd4LWZpeGVkLWZvb3Rlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQUd2RSxNQUFNLENBQUMsSUFBSSxzQkFBc0IsR0FBRyxJQUFJLGNBQWMsQ0FDcEQsK0NBQStDLENBQ2hELENBQUM7QUFPRixNQUFNLE9BQU8sb0JBQW9CO0lBQ3hCLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBK0I7UUFDbkQsT0FBTztZQUNMLFFBQVEsRUFBRSxvQkFBb0I7WUFDOUIsU0FBUyxFQUFFO2dCQUNUO29CQUNFLE9BQU8sRUFBRSxzQkFBc0I7b0JBQy9CLFFBQVEsRUFBRSxPQUFPO2lCQUNsQjtnQkFDRDtvQkFDRSxPQUFPLEVBQUUsNEJBQTRCO29CQUNyQyxVQUFVLEVBQUUsNEJBQTRCO29CQUN4QyxJQUFJLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDL0I7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDOzhHQWhCVSxvQkFBb0I7K0dBQXBCLG9CQUFvQixpQkFKaEIsdUJBQXVCLGFBQzVCLHVCQUF1QjsrR0FHdEIsb0JBQW9CLGFBRnBCLENBQUMsNEJBQTRCLENBQUM7OzJGQUU5QixvQkFBb0I7a0JBTGhDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsdUJBQXVCLENBQUM7b0JBQ3ZDLE9BQU8sRUFBRSxDQUFDLHVCQUF1QixDQUFDO29CQUNsQyxTQUFTLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQztpQkFDMUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG5neEZpeGVkRm9vdGVyT3B0aW9uc0ZhY3RvcnkgfSBmcm9tICcuL25neC1maXhlZC1mb290ZXItZmFjdG9yeSc7XG5pbXBvcnQgeyBOZ3hGaXhlZEZvb3Rlck9wdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi9uZ3gtZml4ZWQtZm9vdGVyLW9wdGlvbnMuc2VydmljZSc7XG5pbXBvcnQgeyBOZ3hGaXhlZEZvb3RlckRpcmVjdGl2ZSB9IGZyb20gJy4vbmd4LWZpeGVkLWZvb3Rlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTmd4Rml4ZWRGb290ZXJPcHRpb25zIH0gZnJvbSAnLi9uZ3gtZml4ZWQtZm9vdGVyLmludGVyZmFjZSc7XG5cbmV4cG9ydCBsZXQgRk9SX1JPT1RfT1BUSU9OU19UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxOZ3hGaXhlZEZvb3Rlck9wdGlvbnM+KFxuICAnZm9yUm9vdCgpIE5neEN1dE9wdGlvbnNTZXJ2aWNlIGNvbmZpZ3VyYXRpb24uJ1xuKTtcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbTmd4Rml4ZWRGb290ZXJEaXJlY3RpdmVdLFxuICBleHBvcnRzOiBbTmd4Rml4ZWRGb290ZXJEaXJlY3RpdmVdLFxuICBwcm92aWRlcnM6IFtOZ3hGaXhlZEZvb3Rlck9wdGlvbnNTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hGaXhlZEZvb3Rlck1vZHVsZSB7XG4gIHB1YmxpYyBzdGF0aWMgZm9yUm9vdChvcHRpb25zPzogTmd4Rml4ZWRGb290ZXJPcHRpb25zKTogTW9kdWxlV2l0aFByb3ZpZGVyczxOZ3hGaXhlZEZvb3Rlck1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogTmd4Rml4ZWRGb290ZXJNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IEZPUl9ST09UX09QVElPTlNfVE9LRU4sXG4gICAgICAgICAgdXNlVmFsdWU6IG9wdGlvbnNcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IE5neEZpeGVkRm9vdGVyT3B0aW9uc1NlcnZpY2UsXG4gICAgICAgICAgdXNlRmFjdG9yeTogbmd4Rml4ZWRGb290ZXJPcHRpb25zRmFjdG9yeSxcbiAgICAgICAgICBkZXBzOiBbRk9SX1JPT1RfT1BUSU9OU19UT0tFTl1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { NgxFixedFooterCssAttribute } from './ngx-fixed-footer.interface';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export declare class NgxFixedFooterOptionsService {
|
|
4
|
-
/**
|
|
5
|
-
* @returns Css attribute of HTML element which gets style. It means margin or padding
|
|
6
|
-
*/
|
|
7
|
-
cssAttribute: NgxFixedFooterCssAttribute;
|
|
8
|
-
/**
|
|
9
|
-
* @returns Css selector of HTML element which gets extra margin or padding
|
|
10
|
-
*/
|
|
11
|
-
containerSelector: string;
|
|
12
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<NgxFixedFooterOptionsService, never>;
|
|
13
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<NgxFixedFooterOptionsService>;
|
|
14
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { InjectionToken, ModuleWithProviders } from '@angular/core';
|
|
2
|
-
import { NgxFixedFooterOptions } from './ngx-fixed-footer.interface';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "./ngx-fixed-footer.directive";
|
|
5
|
-
export declare let FOR_ROOT_OPTIONS_TOKEN: InjectionToken<NgxFixedFooterOptions>;
|
|
6
|
-
export declare class NgxFixedFooterModule {
|
|
7
|
-
static forRoot(options?: NgxFixedFooterOptions): ModuleWithProviders<NgxFixedFooterModule>;
|
|
8
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<NgxFixedFooterModule, never>;
|
|
9
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<NgxFixedFooterModule, [typeof i1.NgxFixedFooterDirective], never, [typeof i1.NgxFixedFooterDirective]>;
|
|
10
|
-
static ɵinj: i0.ɵɵInjectorDeclaration<NgxFixedFooterModule>;
|
|
11
|
-
}
|