design-angular-kit 1.1.0 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +66 -60
- package/esm2022/lib/components/core/dimmer/dimmer.component.mjs +5 -5
- package/esm2022/lib/components/form/form.module.mjs +5 -1
- package/esm2022/lib/components/form/transfer/store/transfer.reducers.mjs +191 -0
- package/esm2022/lib/components/form/transfer/store/transfer.state.mjs +2 -0
- package/esm2022/lib/components/form/transfer/store/transfer.store.mjs +70 -0
- package/esm2022/lib/components/form/transfer/transfer-list/transfer-list.component.mjs +70 -0
- package/esm2022/lib/components/form/transfer/transfer.component.mjs +147 -0
- package/esm2022/lib/components/form/transfer/transfer.model.mjs +6 -0
- package/esm2022/lib/components/navigation/navscroll/navscroll-list-item.component.mjs +98 -0
- package/esm2022/lib/components/navigation/navscroll/navscroll-list-items.component.mjs +44 -0
- package/esm2022/lib/components/navigation/navscroll/navscroll.component.mjs +116 -0
- package/esm2022/lib/components/navigation/navscroll/navscroll.model.mjs +2 -0
- package/esm2022/lib/components/navigation/navscroll/navscroll.store.mjs +65 -0
- package/esm2022/lib/components/navigation/navscroll/navscroll.utils.mjs +23 -0
- package/esm2022/lib/design-angular-kit.module.mjs +10 -6
- package/esm2022/lib/provide-design-angular-kit.mjs +5 -5
- package/esm2022/public_api.mjs +25 -21
- package/fesm2022/design-angular-kit.mjs +1045 -255
- package/fesm2022/design-angular-kit.mjs.map +1 -1
- package/lib/components/form/form.module.d.ts +4 -3
- package/lib/components/form/transfer/store/transfer.reducers.d.ts +103 -0
- package/lib/components/form/transfer/store/transfer.state.d.ts +18 -0
- package/lib/components/form/transfer/store/transfer.store.d.ts +23 -0
- package/lib/components/form/transfer/transfer-list/transfer-list.component.d.ts +48 -0
- package/lib/components/form/transfer/transfer.component.d.ts +75 -0
- package/lib/components/form/transfer/transfer.model.d.ts +6 -0
- package/lib/components/navigation/navscroll/navscroll-list-item.component.d.ts +16 -0
- package/lib/components/navigation/navscroll/navscroll-list-items.component.d.ts +7 -0
- package/lib/components/navigation/navscroll/navscroll.component.d.ts +47 -0
- package/lib/components/navigation/navscroll/navscroll.model.d.ts +10 -0
- package/lib/components/navigation/navscroll/navscroll.store.d.ts +16 -0
- package/lib/components/navigation/navscroll/navscroll.utils.d.ts +6 -0
- package/lib/design-angular-kit.module.d.ts +8 -7
- package/package.json +5 -1
- package/public_api.d.ts +24 -20
- package/schematics/collection.json +19 -0
- package/schematics/ng-add/index.d.ts +3 -0
- package/schematics/ng-add/index.js +29 -0
- package/schematics/ng-add/index.js.map +1 -0
- package/schematics/ng-add/index.spec.d.ts +1 -0
- package/schematics/ng-add/index.spec.js +43 -0
- package/schematics/ng-add/index.spec.js.map +1 -0
- package/schematics/ng-add/rules/setup-project/add-animations.d.ts +2 -0
- package/schematics/ng-add/rules/setup-project/add-animations.js +11 -0
- package/schematics/ng-add/rules/setup-project/add-animations.js.map +1 -0
- package/schematics/ng-add/rules/setup-project/add-assets.d.ts +3 -0
- package/schematics/ng-add/rules/setup-project/add-assets.js +50 -0
- package/schematics/ng-add/rules/setup-project/add-assets.js.map +1 -0
- package/schematics/ng-add/rules/setup-project/add-design-angular-kit.d.ts +3 -0
- package/schematics/ng-add/rules/setup-project/add-design-angular-kit.js +43 -0
- package/schematics/ng-add/rules/setup-project/add-design-angular-kit.js.map +1 -0
- package/schematics/ng-add/rules/setup-project/add-http-client.d.ts +2 -0
- package/schematics/ng-add/rules/setup-project/add-http-client.js +11 -0
- package/schematics/ng-add/rules/setup-project/add-http-client.js.map +1 -0
- package/schematics/ng-add/rules/setup-project/add-import-to-style-file.d.ts +11 -0
- package/schematics/ng-add/rules/setup-project/add-import-to-style-file.js +112 -0
- package/schematics/ng-add/rules/setup-project/add-import-to-style-file.js.map +1 -0
- package/schematics/ng-add/rules/setup-project/add-localisation.d.ts +3 -0
- package/schematics/ng-add/rules/setup-project/add-localisation.js +50 -0
- package/schematics/ng-add/rules/setup-project/add-localisation.js.map +1 -0
- package/schematics/ng-add/rules/setup-project/angular-json-helper.d.ts +2 -0
- package/schematics/ng-add/rules/setup-project/angular-json-helper.js +13 -0
- package/schematics/ng-add/rules/setup-project/angular-json-helper.js.map +1 -0
- package/schematics/ng-add/rules/setup-project/exceptions.d.ts +7 -0
- package/schematics/ng-add/rules/setup-project/exceptions.js +17 -0
- package/schematics/ng-add/rules/setup-project/exceptions.js.map +1 -0
- package/schematics/ng-add/rules/setup-project/index.d.ts +6 -0
- package/schematics/ng-add/rules/setup-project/index.js +23 -0
- package/schematics/ng-add/rules/setup-project/index.js.map +1 -0
- package/schematics/ng-add/schema.d.ts +3 -0
- package/schematics/ng-add/schema.js +3 -0
- package/schematics/ng-add/schema.js.map +1 -0
- package/schematics/ng-add/schema.json +16 -0
- package/schematics/ng-add/setup-project.d.ts +3 -0
- package/schematics/ng-add/setup-project.js +37 -0
- package/schematics/ng-add/setup-project.js.map +1 -0
- package/schematics/ng-add/setup-project.spec.d.ts +1 -0
- package/schematics/ng-add/setup-project.spec.js +139 -0
- package/schematics/ng-add/setup-project.spec.js.map +1 -0
- package/schematics/ng-add/utils.d.ts +14 -0
- package/schematics/ng-add/utils.js +49 -0
- package/schematics/ng-add/utils.js.map +1 -0
- package/schematics/ng-add/versions-helper.d.ts +3 -0
- package/schematics/ng-add/versions-helper.js +40 -0
- package/schematics/ng-add/versions-helper.js.map +1 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject, distinctUntilChanged, map, of } from 'rxjs';
|
|
3
|
+
import reducers from './transfer.reducers';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class TransferStore {
|
|
6
|
+
constructor() {
|
|
7
|
+
this._state = new BehaviorSubject(reducers.initialStateFn());
|
|
8
|
+
this.sourceItems = this._state.pipe(map(state => state.current.source));
|
|
9
|
+
this.targetItems = this._state.pipe(map(state => state.current.target));
|
|
10
|
+
this.valueChanged = this._state.pipe(map(state => state.current.target), distinctUntilChanged());
|
|
11
|
+
this.selectItems = (sourceType) => {
|
|
12
|
+
if (sourceType === 'source') {
|
|
13
|
+
return this.sourceItems;
|
|
14
|
+
}
|
|
15
|
+
if (sourceType === 'target') {
|
|
16
|
+
return this.targetItems;
|
|
17
|
+
}
|
|
18
|
+
return of([]);
|
|
19
|
+
};
|
|
20
|
+
this.selectSelectedItems = (sourceType) => {
|
|
21
|
+
if (sourceType === 'source') {
|
|
22
|
+
return this._state.pipe(map(state => state.selections.source));
|
|
23
|
+
}
|
|
24
|
+
if (sourceType === 'target') {
|
|
25
|
+
return this._state.pipe(map(state => state.selections.target));
|
|
26
|
+
}
|
|
27
|
+
return of(new Set());
|
|
28
|
+
};
|
|
29
|
+
this.transferEnabled = this._state.pipe(map(state => state.operationsEnabled.transfer));
|
|
30
|
+
this.backtransferEnabled = this._state.pipe(map(state => state.operationsEnabled.backtransfer));
|
|
31
|
+
this.resetEnabled = this._state.pipe(map(state => state.operationsEnabled.reset));
|
|
32
|
+
}
|
|
33
|
+
init({ source, target }) {
|
|
34
|
+
this.updateState(reducers.initFn({ source, target }));
|
|
35
|
+
}
|
|
36
|
+
transfer() {
|
|
37
|
+
this.updateState(reducers.transferFn());
|
|
38
|
+
}
|
|
39
|
+
backtransfer() {
|
|
40
|
+
this.updateState(reducers.backtransferFn());
|
|
41
|
+
}
|
|
42
|
+
reset() {
|
|
43
|
+
this.updateState(reducers.resetFn());
|
|
44
|
+
}
|
|
45
|
+
checkboxSelection(item, sourceType) {
|
|
46
|
+
if (sourceType === 'source') {
|
|
47
|
+
this.updateState(reducers.selectionItemSourceFn({ item }));
|
|
48
|
+
}
|
|
49
|
+
if (sourceType === 'target') {
|
|
50
|
+
this.updateState(reducers.selectionItemTargetFn({ item }));
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
selectAllSelection(checked, sourceType) {
|
|
54
|
+
if (sourceType === 'source') {
|
|
55
|
+
this.updateState(reducers.selectAllSourceFn({ checked }));
|
|
56
|
+
}
|
|
57
|
+
if (sourceType === 'target') {
|
|
58
|
+
this.updateState(reducers.selectAllTargetFn({ checked }));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
updateState(reducerFn) {
|
|
62
|
+
this._state.next(reducerFn(this._state.value));
|
|
63
|
+
}
|
|
64
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: TransferStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
65
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: TransferStore }); }
|
|
66
|
+
}
|
|
67
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: TransferStore, decorators: [{
|
|
68
|
+
type: Injectable
|
|
69
|
+
}] });
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXIuc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vdHJhbnNmZXIvc3RvcmUvdHJhbnNmZXIuc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdEUsT0FBTyxRQUFRLE1BQU0scUJBQXFCLENBQUM7O0FBSTNDLE1BQU0sT0FBTyxhQUFhO0lBRDFCO1FBRW1CLFdBQU0sR0FBRyxJQUFJLGVBQWUsQ0FBVyxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUVsRSxnQkFBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUVuRSxnQkFBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUUzRSxpQkFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUN0QyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUNsQyxvQkFBb0IsRUFBRSxDQUN2QixDQUFDO1FBRU8sZ0JBQVcsR0FBRyxDQUFDLFVBQXNCLEVBQUUsRUFBRTtZQUNoRCxJQUFJLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDNUIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQzFCLENBQUM7WUFFRCxJQUFJLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDNUIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQzFCLENBQUM7WUFFRCxPQUFPLEVBQUUsQ0FBb0IsRUFBRSxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDO1FBRU8sd0JBQW1CLEdBQUcsQ0FBQyxVQUFzQixFQUFFLEVBQUU7WUFDeEQsSUFBSSxVQUFVLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ2pFLENBQUM7WUFFRCxJQUFJLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDNUIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDakUsQ0FBQztZQUVELE9BQU8sRUFBRSxDQUFDLElBQUksR0FBRyxFQUFtQixDQUFDLENBQUM7UUFDeEMsQ0FBQyxDQUFDO1FBRU8sb0JBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUVuRix3QkFBbUIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUUzRixpQkFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0tBd0N2RjtJQXRDQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFxQjtRQUN4QyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBQ0QsWUFBWTtRQUNWLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxJQUFxQixFQUFFLFVBQXNCO1FBQzdELElBQUksVUFBVSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFFRCxJQUFJLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM3RCxDQUFDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQixDQUFDLE9BQWdCLEVBQUUsVUFBc0I7UUFDekQsSUFBSSxVQUFVLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDNUQsQ0FBQztRQUVELElBQUksVUFBVSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVELENBQUM7SUFDSCxDQUFDO0lBRU8sV0FBVyxDQUFDLFNBQXdDO1FBQzFELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDakQsQ0FBQzs4R0EvRVUsYUFBYTtrSEFBYixhQUFhOzsyRkFBYixhQUFhO2tCQUR6QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU291cmNlVHlwZSwgVHJhbnNmZXJJdGVtIH0gZnJvbSAnLi4vdHJhbnNmZXIubW9kZWwnO1xuaW1wb3J0IHJlZHVjZXJzIGZyb20gJy4vdHJhbnNmZXIucmVkdWNlcnMnO1xuaW1wb3J0IHsgU2VsZWN0aW9uU3RhdGUsIFN0YXRlIH0gZnJvbSAnLi90cmFuc2Zlci5zdGF0ZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUcmFuc2ZlclN0b3JlPFQ+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RhdGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFN0YXRlPFQ+PihyZWR1Y2Vycy5pbml0aWFsU3RhdGVGbigpKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHNvdXJjZUl0ZW1zID0gdGhpcy5fc3RhdGUucGlwZShtYXAoc3RhdGUgPT4gc3RhdGUuY3VycmVudC5zb3VyY2UpKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHRhcmdldEl0ZW1zID0gdGhpcy5fc3RhdGUucGlwZShtYXAoc3RhdGUgPT4gc3RhdGUuY3VycmVudC50YXJnZXQpKTtcblxuICByZWFkb25seSB2YWx1ZUNoYW5nZWQgPSB0aGlzLl9zdGF0ZS5waXBlKFxuICAgIG1hcChzdGF0ZSA9PiBzdGF0ZS5jdXJyZW50LnRhcmdldCksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICApO1xuXG4gIHJlYWRvbmx5IHNlbGVjdEl0ZW1zID0gKHNvdXJjZVR5cGU6IFNvdXJjZVR5cGUpID0+IHtcbiAgICBpZiAoc291cmNlVHlwZSA9PT0gJ3NvdXJjZScpIHtcbiAgICAgIHJldHVybiB0aGlzLnNvdXJjZUl0ZW1zO1xuICAgIH1cblxuICAgIGlmIChzb3VyY2VUeXBlID09PSAndGFyZ2V0Jykge1xuICAgICAgcmV0dXJuIHRoaXMudGFyZ2V0SXRlbXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9mPFRyYW5zZmVySXRlbTxUPltdPihbXSk7XG4gIH07XG5cbiAgcmVhZG9ubHkgc2VsZWN0U2VsZWN0ZWRJdGVtcyA9IChzb3VyY2VUeXBlOiBTb3VyY2VUeXBlKSA9PiB7XG4gICAgaWYgKHNvdXJjZVR5cGUgPT09ICdzb3VyY2UnKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc3RhdGUucGlwZShtYXAoc3RhdGUgPT4gc3RhdGUuc2VsZWN0aW9ucy5zb3VyY2UpKTtcbiAgICB9XG5cbiAgICBpZiAoc291cmNlVHlwZSA9PT0gJ3RhcmdldCcpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zdGF0ZS5waXBlKG1hcChzdGF0ZSA9PiBzdGF0ZS5zZWxlY3Rpb25zLnRhcmdldCkpO1xuICAgIH1cblxuICAgIHJldHVybiBvZihuZXcgU2V0PFRyYW5zZmVySXRlbTxUPj4oKSk7XG4gIH07XG5cbiAgcmVhZG9ubHkgdHJhbnNmZXJFbmFibGVkID0gdGhpcy5fc3RhdGUucGlwZShtYXAoc3RhdGUgPT4gc3RhdGUub3BlcmF0aW9uc0VuYWJsZWQudHJhbnNmZXIpKTtcblxuICByZWFkb25seSBiYWNrdHJhbnNmZXJFbmFibGVkID0gdGhpcy5fc3RhdGUucGlwZShtYXAoc3RhdGUgPT4gc3RhdGUub3BlcmF0aW9uc0VuYWJsZWQuYmFja3RyYW5zZmVyKSk7XG5cbiAgcmVhZG9ubHkgcmVzZXRFbmFibGVkID0gdGhpcy5fc3RhdGUucGlwZShtYXAoc3RhdGUgPT4gc3RhdGUub3BlcmF0aW9uc0VuYWJsZWQucmVzZXQpKTtcblxuICBpbml0KHsgc291cmNlLCB0YXJnZXQgfTogU2VsZWN0aW9uU3RhdGU8VD4pIHtcbiAgICB0aGlzLnVwZGF0ZVN0YXRlKHJlZHVjZXJzLmluaXRGbih7IHNvdXJjZSwgdGFyZ2V0IH0pKTtcbiAgfVxuXG4gIHRyYW5zZmVyKCkge1xuICAgIHRoaXMudXBkYXRlU3RhdGUocmVkdWNlcnMudHJhbnNmZXJGbigpKTtcbiAgfVxuICBiYWNrdHJhbnNmZXIoKSB7XG4gICAgdGhpcy51cGRhdGVTdGF0ZShyZWR1Y2Vycy5iYWNrdHJhbnNmZXJGbigpKTtcbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIHRoaXMudXBkYXRlU3RhdGUocmVkdWNlcnMucmVzZXRGbigpKTtcbiAgfVxuXG4gIGNoZWNrYm94U2VsZWN0aW9uKGl0ZW06IFRyYW5zZmVySXRlbTxUPiwgc291cmNlVHlwZTogU291cmNlVHlwZSkge1xuICAgIGlmIChzb3VyY2VUeXBlID09PSAnc291cmNlJykge1xuICAgICAgdGhpcy51cGRhdGVTdGF0ZShyZWR1Y2Vycy5zZWxlY3Rpb25JdGVtU291cmNlRm4oeyBpdGVtIH0pKTtcbiAgICB9XG5cbiAgICBpZiAoc291cmNlVHlwZSA9PT0gJ3RhcmdldCcpIHtcbiAgICAgIHRoaXMudXBkYXRlU3RhdGUocmVkdWNlcnMuc2VsZWN0aW9uSXRlbVRhcmdldEZuKHsgaXRlbSB9KSk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0QWxsU2VsZWN0aW9uKGNoZWNrZWQ6IGJvb2xlYW4sIHNvdXJjZVR5cGU6IFNvdXJjZVR5cGUpIHtcbiAgICBpZiAoc291cmNlVHlwZSA9PT0gJ3NvdXJjZScpIHtcbiAgICAgIHRoaXMudXBkYXRlU3RhdGUocmVkdWNlcnMuc2VsZWN0QWxsU291cmNlRm4oeyBjaGVja2VkIH0pKTtcbiAgICB9XG5cbiAgICBpZiAoc291cmNlVHlwZSA9PT0gJ3RhcmdldCcpIHtcbiAgICAgIHRoaXMudXBkYXRlU3RhdGUocmVkdWNlcnMuc2VsZWN0QWxsVGFyZ2V0Rm4oeyBjaGVja2VkIH0pKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVN0YXRlKHJlZHVjZXJGbjogKHN0YXRlOiBTdGF0ZTxUPikgPT4gU3RhdGU8VD4pIHtcbiAgICB0aGlzLl9zdGF0ZS5uZXh0KHJlZHVjZXJGbih0aGlzLl9zdGF0ZS52YWx1ZSkpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { AsyncPipe, TitleCasePipe } from '@angular/common';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, HostAttributeToken, inject, ViewChild } from '@angular/core';
|
|
3
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
4
|
+
import { combineLatest, distinctUntilChanged, map, shareReplay, skip, startWith, tap } from 'rxjs';
|
|
5
|
+
import { ItAbstractComponent } from '../../../../abstracts/abstract.component';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "../store/transfer.store";
|
|
8
|
+
export class ItTransferListComponent extends ItAbstractComponent {
|
|
9
|
+
constructor(store) {
|
|
10
|
+
super();
|
|
11
|
+
this.store = store;
|
|
12
|
+
/**
|
|
13
|
+
* Widget title
|
|
14
|
+
*/
|
|
15
|
+
this.title = inject(new HostAttributeToken('title'), { optional: true });
|
|
16
|
+
this.sourceType = inject(new HostAttributeToken('sourceType'), { optional: true });
|
|
17
|
+
this.items = this.store.selectItems(this.sourceType).pipe(distinctUntilChanged(), shareReplay());
|
|
18
|
+
this.selected = this.store.selectSelectedItems(this.sourceType).pipe(distinctUntilChanged(), shareReplay());
|
|
19
|
+
this.numberOfItems$ = this.items.pipe(map(items => ({ length: items.length })), startWith({ length: 0 }));
|
|
20
|
+
this.selectAllDisabled = this.items.pipe(map(items => items.length === 0));
|
|
21
|
+
/**
|
|
22
|
+
* Items of the list
|
|
23
|
+
* @default []
|
|
24
|
+
*/
|
|
25
|
+
this.items$ = combineLatest([this.items, this.selected]).pipe(map(([items, selected]) => items.map(item => {
|
|
26
|
+
item.selected = selected.has(item);
|
|
27
|
+
return item;
|
|
28
|
+
})));
|
|
29
|
+
this.instanceId = this.getInstanceId();
|
|
30
|
+
this.onItemsUpdate();
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Checkbox selection click handler
|
|
34
|
+
*/
|
|
35
|
+
checkboxSelectionHandler(item) {
|
|
36
|
+
this.store.checkboxSelection(item, this.sourceType);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Checkbox select all selection handler
|
|
40
|
+
*/
|
|
41
|
+
checkboxSelectAllHandler(event) {
|
|
42
|
+
const checked = event.target.checked;
|
|
43
|
+
this.store.selectAllSelection(checked, this.sourceType);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Items update subscription
|
|
47
|
+
*/
|
|
48
|
+
onItemsUpdate() {
|
|
49
|
+
this.items
|
|
50
|
+
.pipe(takeUntilDestroyed(), skip(1), tap(() => {
|
|
51
|
+
if (this.selectAllCheckboxRef) {
|
|
52
|
+
this.selectAllCheckboxRef.nativeElement.checked = false;
|
|
53
|
+
}
|
|
54
|
+
}))
|
|
55
|
+
.subscribe();
|
|
56
|
+
}
|
|
57
|
+
getInstanceId() {
|
|
58
|
+
return Math.floor(Math.random() * 100000000).toString();
|
|
59
|
+
}
|
|
60
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ItTransferListComponent, deps: [{ token: i1.TransferStore }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
61
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.6", type: ItTransferListComponent, isStandalone: true, selector: "it-transfer-list", viewQueries: [{ propertyName: "selectAllCheckboxRef", first: true, predicate: ["selectAllCheckbox"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"it-transfer-wrapper source\">\n <div class=\"transfer-header\">\n <div class=\"form-check\" aria-describedby=\"\">\n <input\n #selectAllCheckbox\n type=\"checkbox\"\n id=\"{{ instanceId }}checkbox{{ title }}\"\n [disabled]=\"selectAllDisabled | async\"\n (click)=\"checkboxSelectAllHandler($event)\" />\n <label for=\"{{ instanceId }}checkbox{{ title }}\">\n <span>\n @if (numberOfItems$ | async; as numberOfItems) {\n <span class=\"num\"> {{ numberOfItems.length }} </span>\n <span> {{ numberOfItems.length > 1 ? 'ITEMS' : 'ITEM' }} </span>\n }\n </span>\n <span class=\"descr\">{{ title | titlecase }}</span>\n </label>\n </div>\n <!-- form check -->\n </div>\n <!-- transfer-header -->\n <div class=\"transfer-scroll\">\n <div class=\"transfer-group\">\n @for (item of items$ | async; track item.value) {\n <div class=\"form-check\" aria-describedby=\"\">\n <input\n type=\"checkbox\"\n id=\"{{ instanceId }}-{{ item.value }}\"\n [checked]=\"item.selected\"\n (click)=\"checkboxSelectionHandler(item)\" />\n <label for=\"{{ instanceId }}-{{ item.value }}\">\n <span>\n <span>{{ item.text }}</span>\n </span>\n </label>\n </div>\n }\n </div>\n </div>\n</div>\n<!-- it-transfer-wrapper -->\n", dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
62
|
+
}
|
|
63
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ItTransferListComponent, decorators: [{
|
|
64
|
+
type: Component,
|
|
65
|
+
args: [{ selector: 'it-transfer-list', standalone: true, imports: [AsyncPipe, TitleCasePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"it-transfer-wrapper source\">\n <div class=\"transfer-header\">\n <div class=\"form-check\" aria-describedby=\"\">\n <input\n #selectAllCheckbox\n type=\"checkbox\"\n id=\"{{ instanceId }}checkbox{{ title }}\"\n [disabled]=\"selectAllDisabled | async\"\n (click)=\"checkboxSelectAllHandler($event)\" />\n <label for=\"{{ instanceId }}checkbox{{ title }}\">\n <span>\n @if (numberOfItems$ | async; as numberOfItems) {\n <span class=\"num\"> {{ numberOfItems.length }} </span>\n <span> {{ numberOfItems.length > 1 ? 'ITEMS' : 'ITEM' }} </span>\n }\n </span>\n <span class=\"descr\">{{ title | titlecase }}</span>\n </label>\n </div>\n <!-- form check -->\n </div>\n <!-- transfer-header -->\n <div class=\"transfer-scroll\">\n <div class=\"transfer-group\">\n @for (item of items$ | async; track item.value) {\n <div class=\"form-check\" aria-describedby=\"\">\n <input\n type=\"checkbox\"\n id=\"{{ instanceId }}-{{ item.value }}\"\n [checked]=\"item.selected\"\n (click)=\"checkboxSelectionHandler(item)\" />\n <label for=\"{{ instanceId }}-{{ item.value }}\">\n <span>\n <span>{{ item.text }}</span>\n </span>\n </label>\n </div>\n }\n </div>\n </div>\n</div>\n<!-- it-transfer-wrapper -->\n" }]
|
|
66
|
+
}], ctorParameters: () => [{ type: i1.TransferStore }], propDecorators: { selectAllCheckboxRef: [{
|
|
67
|
+
type: ViewChild,
|
|
68
|
+
args: ['selectAllCheckbox']
|
|
69
|
+
}] } });
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXItbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vdHJhbnNmZXIvdHJhbnNmZXItbGlzdC90cmFuc2Zlci1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS90cmFuc2Zlci90cmFuc2Zlci1saXN0L3RyYW5zZmVyLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFjLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25HLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7QUFnQi9FLE1BQU0sT0FBTyx1QkFBMkIsU0FBUSxtQkFBbUI7SUFrQ2pFLFlBQTZCLEtBQXVCO1FBQ2xELEtBQUssRUFBRSxDQUFDO1FBRG1CLFVBQUssR0FBTCxLQUFLLENBQWtCO1FBakNwRDs7V0FFRztRQUNNLFVBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FB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QixjQUNoQixJQUFJLFdBQ1AsQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDLG1CQUVsQix1QkFBdUIsQ0FBQyxNQUFNO2tGQWdDL0Msb0JBQW9CO3NCQURuQixTQUFTO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSwgVGl0bGVDYXNlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0QXR0cmlidXRlVG9rZW4sIGluamVjdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBzaGFyZVJlcGxheSwgc2tpcCwgc3RhcnRXaXRoLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEl0QWJzdHJhY3RDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9hYnN0cmFjdHMvYWJzdHJhY3QuY29tcG9uZW50JztcbmltcG9ydCB7IFRyYW5zZmVyU3RvcmUgfSBmcm9tICcuLi9zdG9yZS90cmFuc2Zlci5zdG9yZSc7XG5cbmltcG9ydCB7IFNvdXJjZVR5cGUsIFRyYW5zZmVySXRlbSB9IGZyb20gJy4uL3RyYW5zZmVyLm1vZGVsJztcblxuaW50ZXJmYWNlIFNlbGVjdGFibGVUcmFuc2Zlckl0ZW08VD4gZXh0ZW5kcyBUcmFuc2Zlckl0ZW08VD4ge1xuICBzZWxlY3RlZDogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaXQtdHJhbnNmZXItbGlzdCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtBc3luY1BpcGUsIFRpdGxlQ2FzZVBpcGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vdHJhbnNmZXItbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBJdFRyYW5zZmVyTGlzdENvbXBvbmVudDxUPiBleHRlbmRzIEl0QWJzdHJhY3RDb21wb25lbnQge1xuICAvKipcbiAgICogV2lkZ2V0IHRpdGxlXG4gICAqL1xuICByZWFkb25seSB0aXRsZSA9IGluamVjdChuZXcgSG9zdEF0dHJpYnV0ZVRva2VuKCd0aXRsZScpLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIHJlYWRvbmx5IHNvdXJjZVR5cGUgPSBpbmplY3QobmV3IEhvc3RBdHRyaWJ1dGVUb2tlbignc291cmNlVHlwZScpLCB7IG9wdGlvbmFsOiB0cnVlIH0pIGFzIFNvdXJjZVR5cGU7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpdGVtcyA9IHRoaXMuc3RvcmUuc2VsZWN0SXRlbXModGhpcy5zb3VyY2VUeXBlKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHNoYXJlUmVwbGF5KCkpO1xuICBwcml2YXRlIHJlYWRvbmx5IHNlbGVjdGVkID0gdGhpcy5zdG9yZS5zZWxlY3RTZWxlY3RlZEl0ZW1zKHRoaXMuc291cmNlVHlwZSkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBzaGFyZVJlcGxheSgpKTtcblxuICByZWFkb25seSBudW1iZXJPZkl0ZW1zJCA9IHRoaXMuaXRlbXMucGlwZShcbiAgICBtYXAoaXRlbXMgPT4gKHsgbGVuZ3RoOiBpdGVtcy5sZW5ndGggfSkpLFxuICAgIHN0YXJ0V2l0aCh7IGxlbmd0aDogMCB9KVxuICApO1xuICByZWFkb25seSBzZWxlY3RBbGxEaXNhYmxlZCA9IHRoaXMuaXRlbXMucGlwZShtYXAoaXRlbXMgPT4gaXRlbXMubGVuZ3RoID09PSAwKSk7XG4gIC8qKlxuICAgKiBJdGVtcyBvZiB0aGUgbGlzdFxuICAgKiBAZGVmYXVsdCBbXVxuICAgKi9cbiAgcmVhZG9ubHkgaXRlbXMkID0gY29tYmluZUxhdGVzdChbdGhpcy5pdGVtcywgdGhpcy5zZWxlY3RlZF0pLnBpcGUoXG4gICAgbWFwKChbaXRlbXMsIHNlbGVjdGVkXSkgPT5cbiAgICAgIGl0ZW1zLm1hcChpdGVtID0+IHtcbiAgICAgICAgKGl0ZW0gYXMgU2VsZWN0YWJsZVRyYW5zZmVySXRlbTxUPikuc2VsZWN0ZWQgPSBzZWxlY3RlZC5oYXMoaXRlbSk7XG4gICAgICAgIHJldHVybiBpdGVtIGFzIFNlbGVjdGFibGVUcmFuc2Zlckl0ZW08VD47XG4gICAgICB9KVxuICAgIClcbiAgKTtcblxuICBAVmlld0NoaWxkKCdzZWxlY3RBbGxDaGVja2JveCcpXG4gIHNlbGVjdEFsbENoZWNrYm94UmVmITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICByZWFkb25seSBpbnN0YW5jZUlkID0gdGhpcy5nZXRJbnN0YW5jZUlkKCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBzdG9yZTogVHJhbnNmZXJTdG9yZTxUPikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5vbkl0ZW1zVXBkYXRlKCk7XG4gIH1cbiAgLyoqXG4gICAqIENoZWNrYm94IHNlbGVjdGlvbiBjbGljayBoYW5kbGVyXG4gICAqL1xuICBjaGVja2JveFNlbGVjdGlvbkhhbmRsZXIoaXRlbTogVHJhbnNmZXJJdGVtPFQ+KSB7XG4gICAgdGhpcy5zdG9yZS5jaGVja2JveFNlbGVjdGlvbihpdGVtLCB0aGlzLnNvdXJjZVR5cGUpO1xuICB9XG4gIC8qKlxuICAgKiBDaGVja2JveCBzZWxlY3QgYWxsIHNlbGVjdGlvbiBoYW5kbGVyXG4gICAqL1xuICBjaGVja2JveFNlbGVjdEFsbEhhbmRsZXIoZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc3QgY2hlY2tlZCA9ICgoZXZlbnQgYXMgUG9pbnRlckV2ZW50KS50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuY2hlY2tlZDtcbiAgICB0aGlzLnN0b3JlLnNlbGVjdEFsbFNlbGVjdGlvbihjaGVja2VkLCB0aGlzLnNvdXJjZVR5cGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEl0ZW1zIHVwZGF0ZSBzdWJzY3JpcHRpb25cbiAgICovXG4gIHByaXZhdGUgb25JdGVtc1VwZGF0ZSgpIHtcbiAgICB0aGlzLml0ZW1zXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICAgICAgIHNraXAoMSksXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuc2VsZWN0QWxsQ2hlY2tib3hSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0QWxsQ2hlY2tib3hSZWYubmF0aXZlRWxlbWVudC5jaGVja2VkID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbnN0YW5jZUlkKCkge1xuICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMDAwMDAwMDApLnRvU3RyaW5nKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJpdC10cmFuc2Zlci13cmFwcGVyIHNvdXJjZVwiPlxuICA8ZGl2IGNsYXNzPVwidHJhbnNmZXItaGVhZGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2tcIiBhcmlhLWRlc2NyaWJlZGJ5PVwiXCI+XG4gICAgICA8aW5wdXRcbiAgICAgICAgI3NlbGVjdEFsbENoZWNrYm94XG4gICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgIGlkPVwie3sgaW5zdGFuY2VJZCB9fWNoZWNrYm94e3sgdGl0bGUgfX1cIlxuICAgICAgICBbZGlzYWJsZWRdPVwic2VsZWN0QWxsRGlzYWJsZWQgfCBhc3luY1wiXG4gICAgICAgIChjbGljayk9XCJjaGVja2JveFNlbGVjdEFsbEhhbmRsZXIoJGV2ZW50KVwiIC8+XG4gICAgICA8bGFiZWwgZm9yPVwie3sgaW5zdGFuY2VJZCB9fWNoZWNrYm94e3sgdGl0bGUgfX1cIj5cbiAgICAgICAgPHNwYW4+XG4gICAgICAgICAgQGlmIChudW1iZXJPZkl0ZW1zJCB8IGFzeW5jOyBhcyBudW1iZXJPZkl0ZW1zKSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm51bVwiPiB7eyBudW1iZXJPZkl0ZW1zLmxlbmd0aCB9fSA8L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj4ge3sgbnVtYmVyT2ZJdGVtcy5sZW5ndGggPiAxID8gJ0lURU1TJyA6ICdJVEVNJyB9fSA8L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZGVzY3JcIj57eyB0aXRsZSB8IHRpdGxlY2FzZSB9fTwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBmb3JtIGNoZWNrIC0tPlxuICA8L2Rpdj5cbiAgPCEtLSB0cmFuc2Zlci1oZWFkZXIgLS0+XG4gIDxkaXYgY2xhc3M9XCJ0cmFuc2Zlci1zY3JvbGxcIj5cbiAgICA8ZGl2IGNsYXNzPVwidHJhbnNmZXItZ3JvdXBcIj5cbiAgICAgIEBmb3IgKGl0ZW0gb2YgaXRlbXMkIHwgYXN5bmM7IHRyYWNrIGl0ZW0udmFsdWUpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2tcIiBhcmlhLWRlc2NyaWJlZGJ5PVwiXCI+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgaWQ9XCJ7eyBpbnN0YW5jZUlkIH19LXt7IGl0ZW0udmFsdWUgfX1cIlxuICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXRlbS5zZWxlY3RlZFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2hlY2tib3hTZWxlY3Rpb25IYW5kbGVyKGl0ZW0pXCIgLz5cbiAgICAgICAgICA8bGFiZWwgZm9yPVwie3sgaW5zdGFuY2VJZCB9fS17eyBpdGVtLnZhbHVlIH19XCI+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgaXRlbS50ZXh0IH19PC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPCEtLSBpdC10cmFuc2Zlci13cmFwcGVyIC0tPlxuIl19
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { AsyncPipe, NgClass } from '@angular/common';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, DestroyRef, EventEmitter, inject, Input, Optional, Output, Self } from '@angular/core';
|
|
3
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
4
|
+
import { FormControlName, NgModel, ReactiveFormsModule } from '@angular/forms';
|
|
5
|
+
import { tap } from 'rxjs';
|
|
6
|
+
import { ItAbstractFormComponent } from '../../../abstracts/abstract-form.component';
|
|
7
|
+
import { TransferStore } from './store/transfer.store';
|
|
8
|
+
import { ItTransferListComponent } from './transfer-list/transfer-list.component';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@angular/forms";
|
|
11
|
+
import * as i2 from "@ngx-translate/core";
|
|
12
|
+
import * as i3 from "./store/transfer.store";
|
|
13
|
+
/**
|
|
14
|
+
* Transfer
|
|
15
|
+
* @description Component that allows the creation of checkbox lists.
|
|
16
|
+
*/
|
|
17
|
+
export class ItTransferComponent extends ItAbstractFormComponent {
|
|
18
|
+
constructor(_ngControl, _translateService, store) {
|
|
19
|
+
super(_translateService, _ngControl);
|
|
20
|
+
this._ngControl = _ngControl;
|
|
21
|
+
this._translateService = _translateService;
|
|
22
|
+
this.store = store;
|
|
23
|
+
/**
|
|
24
|
+
* The select options (left side)
|
|
25
|
+
*/
|
|
26
|
+
this.options = [];
|
|
27
|
+
/**
|
|
28
|
+
* The selected options (right side)
|
|
29
|
+
*/
|
|
30
|
+
this.selected = [];
|
|
31
|
+
/**
|
|
32
|
+
* Fired when there is a transfer, a backtransfer or a reset event
|
|
33
|
+
*/
|
|
34
|
+
this.transferChanges = new EventEmitter();
|
|
35
|
+
/**
|
|
36
|
+
* Enable transfer button
|
|
37
|
+
* @default false
|
|
38
|
+
*/
|
|
39
|
+
this.transferEnabled = this.store.transferEnabled;
|
|
40
|
+
/**
|
|
41
|
+
* Enable backtransfer button
|
|
42
|
+
* @default false
|
|
43
|
+
*/
|
|
44
|
+
this.backtransferEnabled = this.store.backtransferEnabled;
|
|
45
|
+
/**
|
|
46
|
+
* Enable reset button
|
|
47
|
+
* @default false
|
|
48
|
+
*/
|
|
49
|
+
this.resetEnabled = this.store.resetEnabled;
|
|
50
|
+
this.destroyRef = inject(DestroyRef);
|
|
51
|
+
}
|
|
52
|
+
ngOnInit() {
|
|
53
|
+
super.ngOnInit();
|
|
54
|
+
this.storeInit();
|
|
55
|
+
this.onStoreValueChanged();
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Transfer button click handler
|
|
59
|
+
*/
|
|
60
|
+
transferClickHandler(event) {
|
|
61
|
+
this.buttonEventHandler(event, () => this.store.transfer());
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Transfer button keypress handler
|
|
65
|
+
*/
|
|
66
|
+
transferKeyPressHandler(event) {
|
|
67
|
+
this.buttonEventHandler(event, () => this.store.transfer());
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Backtransfer button click handler
|
|
71
|
+
*/
|
|
72
|
+
backtransferClickHandler(event) {
|
|
73
|
+
this.buttonEventHandler(event, () => this.store.backtransfer());
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Backtransfer button keypress handler
|
|
77
|
+
*/
|
|
78
|
+
backtransferKeyPressHandler(event) {
|
|
79
|
+
this.buttonEventHandler(event, () => this.store.backtransfer());
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Reset button click handler
|
|
83
|
+
*/
|
|
84
|
+
resetClickHandler(event) {
|
|
85
|
+
this.buttonEventHandler(event, () => this.store.reset());
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Reset button keypress handler
|
|
89
|
+
*/
|
|
90
|
+
resetKeyPressHandler(event) {
|
|
91
|
+
this.buttonEventHandler(event, () => this.store.reset());
|
|
92
|
+
}
|
|
93
|
+
buttonEventHandler(event, updateStoreCb) {
|
|
94
|
+
event.preventDefault();
|
|
95
|
+
updateStoreCb();
|
|
96
|
+
}
|
|
97
|
+
storeInit() {
|
|
98
|
+
let target = [];
|
|
99
|
+
const ngControl = this._ngControl;
|
|
100
|
+
const isNgControlDefined = Boolean(this._ngControl);
|
|
101
|
+
// if ngControl is defined, take values from it. Input() target will be ignored
|
|
102
|
+
if (isNgControlDefined) {
|
|
103
|
+
console.debug('ngControl instanceof NgModel:', ngControl instanceof NgModel);
|
|
104
|
+
console.debug('ngControl instanceof FormControlName:', ngControl instanceof FormControlName);
|
|
105
|
+
// if ngControl is an ngModel (template-driven form use case), take values from it
|
|
106
|
+
if (ngControl instanceof NgModel) {
|
|
107
|
+
console.debug('ngControl instanceof NgModel');
|
|
108
|
+
const model = ngControl.model;
|
|
109
|
+
target = Array.isArray(model) ? model : [];
|
|
110
|
+
}
|
|
111
|
+
// if ngControl is an FormControlName (reactive form use case), take values from it
|
|
112
|
+
if (ngControl instanceof FormControlName) {
|
|
113
|
+
console.debug('ngControl instanceof FormControlName');
|
|
114
|
+
const model = ngControl.control.value;
|
|
115
|
+
target = Array.isArray(model) ? model : [];
|
|
116
|
+
}
|
|
117
|
+
console.debug('ngControl is defined. Input() target will be ignored');
|
|
118
|
+
}
|
|
119
|
+
else if (this.selected && Array.isArray(this.selected)) {
|
|
120
|
+
target = [...this.selected];
|
|
121
|
+
}
|
|
122
|
+
console.debug('target:', this.selected, 'formControl:', this.control.value, 'ngModel:', this._ngControl);
|
|
123
|
+
this.store.init({ source: [...this.options], target });
|
|
124
|
+
}
|
|
125
|
+
onStoreValueChanged() {
|
|
126
|
+
this.store.valueChanged
|
|
127
|
+
.pipe(takeUntilDestroyed(this.destroyRef), tap(value => this.writeValue(value)), tap(value => this.onChange(value)), tap(value => this.transferChanges.emit(value)))
|
|
128
|
+
.subscribe();
|
|
129
|
+
}
|
|
130
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ItTransferComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i2.TranslateService }, { token: i3.TransferStore }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
131
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.6", type: ItTransferComponent, isStandalone: true, selector: "it-transfer", inputs: { options: "options", selected: "selected" }, outputs: { transferChanges: "transferChanges" }, providers: [TransferStore], usesInheritance: true, ngImport: i0, template: "<div class=\"form-group\">\n @if (label) {\n <label [for]=\"id\" [class.active]=\"!!control.value\">{{ label }}</label>\n }\n <div class=\"row\">\n <div class=\"col-xs-12 col-md-5\">\n <it-transfer-list sourceType=\"source\" title=\"source\"></it-transfer-list>\n </div>\n <!-- col -->\n <div class=\"col-xs-12 col-md-2\">\n <!-- transfer buttons-->\n <div class=\"it-transfer-buttons\">\n <a\n class=\"transfer\"\n role=\"button\"\n href=\"#\"\n [ngClass]=\"{ active: transferEnabled | async }\"\n (click)=\"transferClickHandler($event)\"\n (keypress)=\"transferKeyPressHandler($event)\"\n aria-label=\"Sposta avanti\">\n <svg class=\"icon\"><use href=\"/bootstrap-italia/dist/svg/sprites.svg#it-arrow-right\"></use></svg>\n </a>\n <span class=\"visually-hidden\">Etichetta per freccia destra</span>\n <a\n class=\"backtransfer\"\n role=\"button\"\n href=\"#\"\n [ngClass]=\"{ active: backtransferEnabled | async }\"\n (click)=\"backtransferClickHandler($event)\"\n (keypress)=\"backtransferKeyPressHandler($event)\"\n aria-label=\"Sposta indietro\">\n <svg class=\"icon\"><use href=\"/bootstrap-italia/dist/svg/sprites.svg#it-arrow-left\"></use></svg>\n </a>\n <span class=\"visually-hidden\">Etichetta for freccia sinistra</span>\n <a\n class=\"reset\"\n role=\"button\"\n href=\"#\"\n [ngClass]=\"{ active: resetEnabled | async }\"\n (click)=\"resetClickHandler($event)\"\n (keypress)=\"resetKeyPressHandler($event)\"\n aria-label=\"Reset\">\n <svg class=\"icon\"><use href=\"/bootstrap-italia/dist/svg/sprites.svg#it-restore\"></use></svg>\n </a>\n <span class=\"visually-hidden\">Etichetta per icona di reset</span>\n </div>\n </div>\n <div class=\"col-xs-12 col-md-5\">\n <it-transfer-list sourceType=\"target\" title=\"target\"></it-transfer-list>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: ItTransferListComponent, selector: "it-transfer-list" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: ReactiveFormsModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
132
|
+
}
|
|
133
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ItTransferComponent, decorators: [{
|
|
134
|
+
type: Component,
|
|
135
|
+
args: [{ selector: 'it-transfer', standalone: true, imports: [ItTransferListComponent, NgClass, AsyncPipe, ReactiveFormsModule], providers: [TransferStore], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"form-group\">\n @if (label) {\n <label [for]=\"id\" [class.active]=\"!!control.value\">{{ label }}</label>\n }\n <div class=\"row\">\n <div class=\"col-xs-12 col-md-5\">\n <it-transfer-list sourceType=\"source\" title=\"source\"></it-transfer-list>\n </div>\n <!-- col -->\n <div class=\"col-xs-12 col-md-2\">\n <!-- transfer buttons-->\n <div class=\"it-transfer-buttons\">\n <a\n class=\"transfer\"\n role=\"button\"\n href=\"#\"\n [ngClass]=\"{ active: transferEnabled | async }\"\n (click)=\"transferClickHandler($event)\"\n (keypress)=\"transferKeyPressHandler($event)\"\n aria-label=\"Sposta avanti\">\n <svg class=\"icon\"><use href=\"/bootstrap-italia/dist/svg/sprites.svg#it-arrow-right\"></use></svg>\n </a>\n <span class=\"visually-hidden\">Etichetta per freccia destra</span>\n <a\n class=\"backtransfer\"\n role=\"button\"\n href=\"#\"\n [ngClass]=\"{ active: backtransferEnabled | async }\"\n (click)=\"backtransferClickHandler($event)\"\n (keypress)=\"backtransferKeyPressHandler($event)\"\n aria-label=\"Sposta indietro\">\n <svg class=\"icon\"><use href=\"/bootstrap-italia/dist/svg/sprites.svg#it-arrow-left\"></use></svg>\n </a>\n <span class=\"visually-hidden\">Etichetta for freccia sinistra</span>\n <a\n class=\"reset\"\n role=\"button\"\n href=\"#\"\n [ngClass]=\"{ active: resetEnabled | async }\"\n (click)=\"resetClickHandler($event)\"\n (keypress)=\"resetKeyPressHandler($event)\"\n aria-label=\"Reset\">\n <svg class=\"icon\"><use href=\"/bootstrap-italia/dist/svg/sprites.svg#it-restore\"></use></svg>\n </a>\n <span class=\"visually-hidden\">Etichetta per icona di reset</span>\n </div>\n </div>\n <div class=\"col-xs-12 col-md-5\">\n <it-transfer-list sourceType=\"target\" title=\"target\"></it-transfer-list>\n </div>\n </div>\n</div>\n" }]
|
|
136
|
+
}], ctorParameters: () => [{ type: i1.NgControl, decorators: [{
|
|
137
|
+
type: Self
|
|
138
|
+
}, {
|
|
139
|
+
type: Optional
|
|
140
|
+
}] }, { type: i2.TranslateService }, { type: i3.TransferStore }], propDecorators: { options: [{
|
|
141
|
+
type: Input
|
|
142
|
+
}], selected: [{
|
|
143
|
+
type: Input
|
|
144
|
+
}], transferChanges: [{
|
|
145
|
+
type: Output
|
|
146
|
+
}] } });
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWFuZ3VsYXIta2l0L3NyYy9saWIvY29tcG9uZW50cy9mb3JtL3RyYW5zZmVyL3RyYW5zZmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS90cmFuc2Zlci90cmFuc2Zlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVJLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQWEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUYsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNyRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7O0FBR2xGOzs7R0FHRztBQVNILE1BQU0sT0FBTyxtQkFBNkIsU0FBUSx1QkFBMEI7SUFnQzFFLFlBR29CLFVBQXFCLEVBQ3JCLGlCQUFtQyxFQUNwQyxLQUF1QjtRQUV4QyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsVUFBVSxDQUFD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LENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWTthQUNwQixJQUFJLENBQ0gsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUNuQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQVUsQ0FBQyxDQUFDLEVBQ3pDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBVSxDQUFDLENBQUMsRUFDdkMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDL0M7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDOzhHQXBJVSxtQkFBbUI7a0dBQW5CLG1CQUFtQixpS0FIbkIsQ0FBQyxhQUFhLENBQUMsaURDcEI1Qixxa0VBb0RBLDRDRGpDWSx1QkFBdUIsNkRBQUUsT0FBTywrRUFBRSxTQUFTLDZDQUFFLG1CQUFtQjs7MkZBSS9ELG1CQUFtQjtrQkFSL0IsU0FBUzsrQkFDRSxhQUFhLGNBQ1gsSUFBSSxXQUVQLENBQUMsdUJBQXVCLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsQ0FBQyxhQUNoRSxDQUFDLGFBQWEsQ0FBQyxtQkFDVCx1QkFBdUIsQ0FBQyxNQUFNOzswQkFtQzVDLElBQUk7OzBCQUNKLFFBQVE7b0dBOUJGLE9BQU87c0JBQWYsS0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLO2dCQUlhLGVBQWU7c0JBQWpDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUsIE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRGVzdHJveVJlZiwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQsIFNlbGYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEZvcm1Db250cm9sTmFtZSwgTmdDb250cm9sLCBOZ01vZGVsLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJdEFic3RyYWN0Rm9ybUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2Fic3RyYWN0cy9hYnN0cmFjdC1mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUcmFuc2ZlclN0b3JlIH0gZnJvbSAnLi9zdG9yZS90cmFuc2Zlci5zdG9yZSc7XG5pbXBvcnQgeyBJdFRyYW5zZmVyTGlzdENvbXBvbmVudCB9IGZyb20gJy4vdHJhbnNmZXItbGlzdC90cmFuc2Zlci1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUcmFuc2Zlckl0ZW0gfSBmcm9tICcuL3RyYW5zZmVyLm1vZGVsJztcblxuLyoqXG4gKiBUcmFuc2ZlclxuICogQGRlc2NyaXB0aW9uIENvbXBvbmVudCB0aGF0IGFsbG93cyB0aGUgY3JlYXRpb24gb2YgY2hlY2tib3ggbGlzdHMuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2l0LXRyYW5zZmVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGVVcmw6ICcuL3RyYW5zZmVyLmNvbXBvbmVudC5odG1sJyxcbiAgaW1wb3J0czogW0l0VHJhbnNmZXJMaXN0Q29tcG9uZW50LCBOZ0NsYXNzLCBBc3luY1BpcGUsIFJlYWN0aXZlRm9ybXNNb2R1bGVdLFxuICBwcm92aWRlcnM6IFtUcmFuc2ZlclN0b3JlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEl0VHJhbnNmZXJDb21wb25lbnQ8VCA9IGFueT4gZXh0ZW5kcyBJdEFic3RyYWN0Rm9ybUNvbXBvbmVudDxUPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBUaGUgc2VsZWN0IG9wdGlvbnMgKGxlZnQgc2lkZSlcbiAgICovXG4gIEBJbnB1dCgpIG9wdGlvbnMgPSBbXTtcbiAgLyoqXG4gICAqIFRoZSBzZWxlY3RlZCBvcHRpb25zIChyaWdodCBzaWRlKVxuICAgKi9cbiAgQElucHV0KCkgc2VsZWN0ZWQgPSBbXTtcbiAgLyoqXG4gICAqIEZpcmVkIHdoZW4gdGhlcmUgaXMgYSB0cmFuc2ZlciwgYSBiYWNrdHJhbnNmZXIgb3IgYSByZXNldCBldmVudFxuICAgKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHRyYW5zZmVyQ2hhbmdlcyA9IG5ldyBFdmVudEVtaXR0ZXI8VHJhbnNmZXJJdGVtPFQ+W10+KCk7XG5cbiAgLyoqXG4gICAqIEVuYWJsZSB0cmFuc2ZlciBidXR0b25cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHRyYW5zZmVyRW5hYmxlZCA9IHRoaXMuc3RvcmUudHJhbnNmZXJFbmFibGVkO1xuICAvKipcbiAgICogRW5hYmxlIGJhY2t0cmFuc2ZlciBidXR0b25cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGJhY2t0cmFuc2ZlckVuYWJsZWQgPSB0aGlzLnN0b3JlLmJhY2t0cmFuc2ZlckVuYWJsZWQ7XG4gIC8qKlxuICAgKiBFbmFibGUgcmVzZXQgYnV0dG9uXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSByZXNldEVuYWJsZWQgPSB0aGlzLnN0b3JlLnJlc2V0RW5hYmxlZDtcblxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQFNlbGYoKVxuICAgIEBPcHRpb25hbCgpXG4gICAgb3ZlcnJpZGUgcmVhZG9ubHkgX25nQ29udHJvbDogTmdDb250cm9sLFxuICAgIG92ZXJyaWRlIHJlYWRvbmx5IF90cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmU6IFRyYW5zZmVyU3RvcmU8VD5cbiAgKSB7XG4gICAgc3VwZXIoX3RyYW5zbGF0ZVNlcnZpY2UsIF9uZ0NvbnRyb2wpO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB0aGlzLnN0b3JlSW5pdCgpO1xuICAgIHRoaXMub25TdG9yZVZhbHVlQ2hhbmdlZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZmVyIGJ1dHRvbiBjbGljayBoYW5kbGVyXG4gICAqL1xuICB0cmFuc2ZlckNsaWNrSGFuZGxlcihldmVudDogTW91c2VFdmVudCkge1xuICAgIHRoaXMuYnV0dG9uRXZlbnRIYW5kbGVyKGV2ZW50LCAoKSA9PiB0aGlzLnN0b3JlLnRyYW5zZmVyKCkpO1xuICB9XG4gIC8qKlxuICAgKiBUcmFuc2ZlciBidXR0b24ga2V5cHJlc3MgaGFuZGxlclxuICAgKi9cbiAgdHJhbnNmZXJLZXlQcmVzc0hhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICB0aGlzLmJ1dHRvbkV2ZW50SGFuZGxlcihldmVudCwgKCkgPT4gdGhpcy5zdG9yZS50cmFuc2ZlcigpKTtcbiAgfVxuICAvKipcbiAgICogQmFja3RyYW5zZmVyIGJ1dHRvbiBjbGljayBoYW5kbGVyXG4gICAqL1xuICBiYWNrdHJhbnNmZXJDbGlja0hhbmRsZXIoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICB0aGlzLmJ1dHRvbkV2ZW50SGFuZGxlcihldmVudCwgKCkgPT4gdGhpcy5zdG9yZS5iYWNrdHJhbnNmZXIoKSk7XG4gIH1cbiAgLyoqXG4gICAqIEJhY2t0cmFuc2ZlciBidXR0b24ga2V5cHJlc3MgaGFuZGxlclxuICAgKi9cbiAgYmFja3RyYW5zZmVyS2V5UHJlc3NIYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgdGhpcy5idXR0b25FdmVudEhhbmRsZXIoZXZlbnQsICgpID0+IHRoaXMuc3RvcmUuYmFja3RyYW5zZmVyKCkpO1xuICB9XG4gIC8qKlxuICAgKiBSZXNldCBidXR0b24gY2xpY2sgaGFuZGxlclxuICAgKi9cbiAgcmVzZXRDbGlja0hhbmRsZXIoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICB0aGlzLmJ1dHRvbkV2ZW50SGFuZGxlcihldmVudCwgKCkgPT4gdGhpcy5zdG9yZS5yZXNldCgpKTtcbiAgfVxuICAvKipcbiAgICogUmVzZXQgYnV0dG9uIGtleXByZXNzIGhhbmRsZXJcbiAgICovXG4gIHJlc2V0S2V5UHJlc3NIYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgdGhpcy5idXR0b25FdmVudEhhbmRsZXIoZXZlbnQsICgpID0+IHRoaXMuc3RvcmUucmVzZXQoKSk7XG4gIH1cblxuICBwcml2YXRlIGJ1dHRvbkV2ZW50SGFuZGxlcihldmVudDogRXZlbnQsIHVwZGF0ZVN0b3JlQ2I6ICgpID0+IHZvaWQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHVwZGF0ZVN0b3JlQ2IoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RvcmVJbml0KCkge1xuICAgIGxldCB0YXJnZXQgPSBbXTtcbiAgICBjb25zdCBuZ0NvbnRyb2wgPSB0aGlzLl9uZ0NvbnRyb2w7XG4gICAgY29uc3QgaXNOZ0NvbnRyb2xEZWZpbmVkID0gQm9vbGVhbih0aGlzLl9uZ0NvbnRyb2wpO1xuXG4gICAgLy8gaWYgbmdDb250cm9sIGlzIGRlZmluZWQsIHRha2UgdmFsdWVzIGZyb20gaXQuIElucHV0KCkgdGFyZ2V0IHdpbGwgYmUgaWdub3JlZFxuICAgIGlmIChpc05nQ29udHJvbERlZmluZWQpIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoJ25nQ29udHJvbCBpbnN0YW5jZW9mIE5nTW9kZWw6JywgbmdDb250cm9sIGluc3RhbmNlb2YgTmdNb2RlbCk7XG4gICAgICBjb25zb2xlLmRlYnVnKCduZ0NvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQ29udHJvbE5hbWU6JywgbmdDb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2xOYW1lKTtcblxuICAgICAgLy8gaWYgbmdDb250cm9sIGlzIGFuIG5nTW9kZWwgKHRlbXBsYXRlLWRyaXZlbiBmb3JtIHVzZSBjYXNlKSwgdGFrZSB2YWx1ZXMgZnJvbSBpdFxuICAgICAgaWYgKG5nQ29udHJvbCBpbnN0YW5jZW9mIE5nTW9kZWwpIHtcbiAgICAgICAgY29uc29sZS5kZWJ1ZygnbmdDb250cm9sIGluc3RhbmNlb2YgTmdNb2RlbCcpO1xuICAgICAgICBjb25zdCBtb2RlbCA9IChuZ0NvbnRyb2wgYXMgTmdNb2RlbCkubW9kZWw7XG4gICAgICAgIHRhcmdldCA9IEFycmF5LmlzQXJyYXkobW9kZWwpID8gbW9kZWwgOiBbXTtcbiAgICAgIH1cblxuICAgICAgLy8gaWYgbmdDb250cm9sIGlzIGFuIEZvcm1Db250cm9sTmFtZSAocmVhY3RpdmUgZm9ybSB1c2UgY2FzZSksIHRha2UgdmFsdWVzIGZyb20gaXRcbiAgICAgIGlmIChuZ0NvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQ29udHJvbE5hbWUpIHtcbiAgICAgICAgY29uc29sZS5kZWJ1ZygnbmdDb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2xOYW1lJyk7XG4gICAgICAgIGNvbnN0IG1vZGVsID0gKG5nQ29udHJvbCBhcyBGb3JtQ29udHJvbE5hbWUpLmNvbnRyb2wudmFsdWU7XG4gICAgICAgIHRhcmdldCA9IEFycmF5LmlzQXJyYXkobW9kZWwpID8gbW9kZWwgOiBbXTtcbiAgICAgIH1cblxuICAgICAgY29uc29sZS5kZWJ1ZygnbmdDb250cm9sIGlzIGRlZmluZWQuIElucHV0KCkgdGFyZ2V0IHdpbGwgYmUgaWdub3JlZCcpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZCAmJiBBcnJheS5pc0FycmF5KHRoaXMuc2VsZWN0ZWQpKSB7XG4gICAgICB0YXJnZXQgPSBbLi4udGhpcy5zZWxlY3RlZF07XG4gICAgfVxuXG4gICAgY29uc29sZS5kZWJ1ZygndGFyZ2V0OicsIHRoaXMuc2VsZWN0ZWQsICdmb3JtQ29udHJvbDonLCB0aGlzLmNvbnRyb2wudmFsdWUsICduZ01vZGVsOicsIHRoaXMuX25nQ29udHJvbCk7XG4gICAgdGhpcy5zdG9yZS5pbml0KHsgc291cmNlOiBbLi4udGhpcy5vcHRpb25zXSwgdGFyZ2V0IH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvblN0b3JlVmFsdWVDaGFuZ2VkKCkge1xuICAgIHRoaXMuc3RvcmUudmFsdWVDaGFuZ2VkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZiksXG4gICAgICAgIHRhcCh2YWx1ZSA9PiB0aGlzLndyaXRlVmFsdWUodmFsdWUgYXMgVCkpLFxuICAgICAgICB0YXAodmFsdWUgPT4gdGhpcy5vbkNoYW5nZSh2YWx1ZSBhcyBUKSksXG4gICAgICAgIHRhcCh2YWx1ZSA9PiB0aGlzLnRyYW5zZmVyQ2hhbmdlcy5lbWl0KHZhbHVlKSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgQGlmIChsYWJlbCkge1xuICAgIDxsYWJlbCBbZm9yXT1cImlkXCIgW2NsYXNzLmFjdGl2ZV09XCIhIWNvbnRyb2wudmFsdWVcIj57eyBsYWJlbCB9fTwvbGFiZWw+XG4gIH1cbiAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLW1kLTVcIj5cbiAgICAgIDxpdC10cmFuc2Zlci1saXN0IHNvdXJjZVR5cGU9XCJzb3VyY2VcIiB0aXRsZT1cInNvdXJjZVwiPjwvaXQtdHJhbnNmZXItbGlzdD5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIGNvbCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTEyIGNvbC1tZC0yXCI+XG4gICAgICA8IS0tIHRyYW5zZmVyIGJ1dHRvbnMtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJpdC10cmFuc2Zlci1idXR0b25zXCI+XG4gICAgICAgIDxhXG4gICAgICAgICAgY2xhc3M9XCJ0cmFuc2ZlclwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgaHJlZj1cIiNcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiB0cmFuc2ZlckVuYWJsZWQgfCBhc3luYyB9XCJcbiAgICAgICAgICAoY2xpY2spPVwidHJhbnNmZXJDbGlja0hhbmRsZXIoJGV2ZW50KVwiXG4gICAgICAgICAgKGtleXByZXNzKT1cInRyYW5zZmVyS2V5UHJlc3NIYW5kbGVyKCRldmVudClcIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJTcG9zdGEgYXZhbnRpXCI+XG4gICAgICAgICAgPHN2ZyBjbGFzcz1cImljb25cIj48dXNlIGhyZWY9XCIvYm9vdHN0cmFwLWl0YWxpYS9kaXN0L3N2Zy9zcHJpdGVzLnN2ZyNpdC1hcnJvdy1yaWdodFwiPjwvdXNlPjwvc3ZnPlxuICAgICAgICA8L2E+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+RXRpY2hldHRhIHBlciBmcmVjY2lhIGRlc3RyYTwvc3Bhbj5cbiAgICAgICAgPGFcbiAgICAgICAgICBjbGFzcz1cImJhY2t0cmFuc2ZlclwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgaHJlZj1cIiNcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiBiYWNrdHJhbnNmZXJFbmFibGVkIHwgYXN5bmMgfVwiXG4gICAgICAgICAgKGNsaWNrKT1cImJhY2t0cmFuc2ZlckNsaWNrSGFuZGxlcigkZXZlbnQpXCJcbiAgICAgICAgICAoa2V5cHJlc3MpPVwiYmFja3RyYW5zZmVyS2V5UHJlc3NIYW5kbGVyKCRldmVudClcIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJTcG9zdGEgaW5kaWV0cm9cIj5cbiAgICAgICAgICA8c3ZnIGNsYXNzPVwiaWNvblwiPjx1c2UgaHJlZj1cIi9ib290c3RyYXAtaXRhbGlhL2Rpc3Qvc3ZnL3Nwcml0ZXMuc3ZnI2l0LWFycm93LWxlZnRcIj48L3VzZT48L3N2Zz5cbiAgICAgICAgPC9hPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPkV0aWNoZXR0YSBmb3IgZnJlY2NpYSBzaW5pc3RyYTwvc3Bhbj5cbiAgICAgICAgPGFcbiAgICAgICAgICBjbGFzcz1cInJlc2V0XCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBocmVmPVwiI1wiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IHJlc2V0RW5hYmxlZCB8IGFzeW5jIH1cIlxuICAgICAgICAgIChjbGljayk9XCJyZXNldENsaWNrSGFuZGxlcigkZXZlbnQpXCJcbiAgICAgICAgICAoa2V5cHJlc3MpPVwicmVzZXRLZXlQcmVzc0hhbmRsZXIoJGV2ZW50KVwiXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIlJlc2V0XCI+XG4gICAgICAgICAgPHN2ZyBjbGFzcz1cImljb25cIj48dXNlIGhyZWY9XCIvYm9vdHN0cmFwLWl0YWxpYS9kaXN0L3N2Zy9zcHJpdGVzLnN2ZyNpdC1yZXN0b3JlXCI+PC91c2U+PC9zdmc+XG4gICAgICAgIDwvYT5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5FdGljaGV0dGEgcGVyIGljb25hIGRpIHJlc2V0PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbC14cy0xMiBjb2wtbWQtNVwiPlxuICAgICAgPGl0LXRyYW5zZmVyLWxpc3Qgc291cmNlVHlwZT1cInRhcmdldFwiIHRpdGxlPVwidGFyZ2V0XCI+PC9pdC10cmFuc2Zlci1saXN0PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
//Qs
|
|
2
|
+
//Aria hidden?
|
|
3
|
+
//state management with service?
|
|
4
|
+
//interface?
|
|
5
|
+
export {};
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXIubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vdHJhbnNmZXIvdHJhbnNmZXIubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSTtBQUNKLGNBQWM7QUFDZCxnQ0FBZ0M7QUFDaEMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbIi8vUXNcbi8vQXJpYSBoaWRkZW4/XG4vL3N0YXRlIG1hbmFnZW1lbnQgd2l0aCBzZXJ2aWNlP1xuLy9pbnRlcmZhY2U/XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNmZXJJdGVtPFZhbHVlVHlwZT4ge1xuICB0ZXh0OiBzdHJpbmc7XG4gIHZhbHVlOiBWYWx1ZVR5cGU7XG59XG5cbmV4cG9ydCB0eXBlIFRyYW5zZmVySXRlbVNlbGVjdGlvbjxWYWx1ZVR5cGU+ID0gQXJyYXk8VHJhbnNmZXJJdGVtPFZhbHVlVHlwZT4+O1xuXG5leHBvcnQgdHlwZSBTb3VyY2VUeXBlID0gJ3NvdXJjZScgfCAndGFyZ2V0JztcbiJdfQ==
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { AsyncPipe } from '@angular/common';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, DestroyRef, EventEmitter, inject, Input, Output, ViewChild } from '@angular/core';
|
|
3
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
4
|
+
import { NavigationEnd, Router, RouterLink, RouterLinkActive, RouterLinkWithHref, Scroll, } from '@angular/router';
|
|
5
|
+
import { AsyncSubject, filter, switchMap, tap } from 'rxjs';
|
|
6
|
+
import { ItNavscrollListItemsComponent } from './navscroll-list-items.component';
|
|
7
|
+
import { NavscrollStore } from './navscroll.store';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
const ROUTER_LINK_ACTIVE_OPTIONS = {
|
|
10
|
+
fragment: 'exact',
|
|
11
|
+
paths: 'exact',
|
|
12
|
+
queryParams: 'exact',
|
|
13
|
+
matrixParams: 'exact',
|
|
14
|
+
};
|
|
15
|
+
export class ItNavscrollListItemComponent {
|
|
16
|
+
constructor() {
|
|
17
|
+
this.checkActive = new EventEmitter();
|
|
18
|
+
this.routerLinkActiveOptions = ROUTER_LINK_ACTIVE_OPTIONS;
|
|
19
|
+
this.#initIsActive = new AsyncSubject();
|
|
20
|
+
this.active = this.#initIsActive.asObservable().pipe(switchMap(item => this.#store.isActive$(item)));
|
|
21
|
+
this.#router = inject(Router);
|
|
22
|
+
this.#store = inject(NavscrollStore);
|
|
23
|
+
this.#destroyRef = inject(DestroyRef);
|
|
24
|
+
}
|
|
25
|
+
#initIsActive;
|
|
26
|
+
#router;
|
|
27
|
+
#store;
|
|
28
|
+
#destroyRef;
|
|
29
|
+
ngOnInit() {
|
|
30
|
+
this.#initIsActiveSub();
|
|
31
|
+
this.#router.events
|
|
32
|
+
.pipe(takeUntilDestroyed(this.#destroyRef), filter((event) => {
|
|
33
|
+
const isNavigationEndEvent = event instanceof NavigationEnd;
|
|
34
|
+
const isScrollEvent = event instanceof Scroll && event.routerEvent instanceof NavigationEnd;
|
|
35
|
+
return isNavigationEndEvent || isScrollEvent;
|
|
36
|
+
}), tap(() => {
|
|
37
|
+
if (this.rtl?.isActive) {
|
|
38
|
+
this.#store.setActive(this.item);
|
|
39
|
+
}
|
|
40
|
+
}))
|
|
41
|
+
.subscribe();
|
|
42
|
+
}
|
|
43
|
+
clickHandler(event) {
|
|
44
|
+
event.preventDefault();
|
|
45
|
+
this.#store.selectMenuItem();
|
|
46
|
+
this.#router.navigate([], { fragment: this.item.href });
|
|
47
|
+
}
|
|
48
|
+
#initIsActiveSub() {
|
|
49
|
+
this.#initIsActive.next(this.item);
|
|
50
|
+
this.#initIsActive.complete();
|
|
51
|
+
}
|
|
52
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ItNavscrollListItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
53
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.6", type: ItNavscrollListItemComponent, isStandalone: true, selector: "it-navscroll-list-item", inputs: { item: "item" }, outputs: { checkActive: "checkActive" }, viewQueries: [{ propertyName: "rtl", first: true, predicate: ["rtl"], descendants: true }], ngImport: i0, template: `
|
|
54
|
+
<a
|
|
55
|
+
class="nav-link"
|
|
56
|
+
[class.active]="active | async"
|
|
57
|
+
[routerLink]="[]"
|
|
58
|
+
routerLinkActive
|
|
59
|
+
[fragment]="item?.href"
|
|
60
|
+
[routerLinkActiveOptions]="routerLinkActiveOptions"
|
|
61
|
+
ariaCurrentWhenActive="page"
|
|
62
|
+
#rtl="routerLinkActive"
|
|
63
|
+
(click)="clickHandler($event)"
|
|
64
|
+
><span>{{ item?.title }}</span></a
|
|
65
|
+
>
|
|
66
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
67
|
+
}
|
|
68
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ItNavscrollListItemComponent, decorators: [{
|
|
69
|
+
type: Component,
|
|
70
|
+
args: [{
|
|
71
|
+
selector: 'it-navscroll-list-item',
|
|
72
|
+
standalone: true,
|
|
73
|
+
imports: [RouterLink, RouterLinkActive, RouterLinkWithHref, ItNavscrollListItemsComponent, AsyncPipe],
|
|
74
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
75
|
+
template: `
|
|
76
|
+
<a
|
|
77
|
+
class="nav-link"
|
|
78
|
+
[class.active]="active | async"
|
|
79
|
+
[routerLink]="[]"
|
|
80
|
+
routerLinkActive
|
|
81
|
+
[fragment]="item?.href"
|
|
82
|
+
[routerLinkActiveOptions]="routerLinkActiveOptions"
|
|
83
|
+
ariaCurrentWhenActive="page"
|
|
84
|
+
#rtl="routerLinkActive"
|
|
85
|
+
(click)="clickHandler($event)"
|
|
86
|
+
><span>{{ item?.title }}</span></a
|
|
87
|
+
>
|
|
88
|
+
`,
|
|
89
|
+
}]
|
|
90
|
+
}], propDecorators: { item: [{
|
|
91
|
+
type: Input
|
|
92
|
+
}], checkActive: [{
|
|
93
|
+
type: Output
|
|
94
|
+
}], rtl: [{
|
|
95
|
+
type: ViewChild,
|
|
96
|
+
args: ['rtl']
|
|
97
|
+
}] } });
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2c2Nyb2xsLWxpc3QtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL25hdmlnYXRpb24vbmF2c2Nyb2xsL25hdnNjcm9sbC1saXN0LWl0ZW0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZJLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFFTCxhQUFhLEVBQ2IsTUFBTSxFQUVOLFVBQVUsRUFDVixnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLE1BQU0sR0FDUCxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFakYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUVuRCxNQUFNLDBCQUEwQixHQUF5QjtJQUN2RCxRQUFRLEVBQUUsT0FBTztJQUNqQixLQUFLLEVBQUUsT0FBTztJQUNkLFdBQVcsRUFBRSxPQUFPO0lBQ3BCLFlBQVksRUFBRSxPQUFPO0NBQ3RCLENBQUM7QUFzQkYsTUFBTSxPQUFPLDRCQUE0QjtJQXBCekM7UUF1QnFCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUFLMUQsNEJBQXVCLEdBQUcsMEJBQTBCLENBQUM7UUFFckQsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUVsRCxXQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWhHLFlBQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFekIsV0FBTSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUVoQyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztLQStCM0M7SUF2Q1UsYUFBYSxDQUFxQztJQUlsRCxPQUFPLENBQWtCO0lBRXpCLE1BQU0sQ0FBMEI7SUFFaEMsV0FBVyxDQUFzQjtJQUUxQyxRQUFRO1FBQ04sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNO2FBQ2hCLElBQUksQ0FDSCxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQ3BDLE1BQU0sQ0FBQyxDQUFDLEtBQWtCLEVBQUUsRUFBRTtZQUM1QixNQUFNLG9CQUFvQixHQUFHLEtBQUssWUFBWSxhQUFhLENBQUM7WUFDNUQsTUFBTSxhQUFhLEdBQUcsS0FBSyxZQUFZLE1BQU0sSUFBSyxLQUFnQixDQUFDLFdBQVcsWUFBWSxhQUFhLENBQUM7WUFDeEcsT0FBTyxvQkFBb0IsSUFBSSxhQUFhLENBQUM7UUFDL0MsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNQLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25DLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FDSDthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBWTtRQUN2QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNoQyxDQUFDOzhHQWhEVSw0QkFBNEI7a0dBQTVCLDRCQUE0QixpUEFmN0I7Ozs7Ozs7Ozs7Ozs7R0FhVCw0REFmUyxVQUFVLG9PQUFFLGdCQUFnQix5TUFBcUQsU0FBUzs7MkZBaUJ6Riw0QkFBNEI7a0JBcEJ4QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsNkJBQTZCLEVBQUUsU0FBUyxDQUFDO29CQUNyRyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7O0dBYVQ7aUJBQ0Y7OEJBRVUsSUFBSTtzQkFBWixLQUFLO2dCQUVhLFdBQVc7c0JBQTdCLE1BQU07Z0JBR0UsR0FBRztzQkFEWCxTQUFTO3VCQUFDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRGVzdHJveVJlZiwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge1xuICBJc0FjdGl2ZU1hdGNoT3B0aW9ucyxcbiAgTmF2aWdhdGlvbkVuZCxcbiAgUm91dGVyLFxuICBFdmVudCBhcyBSb3V0ZXJFdmVudCxcbiAgUm91dGVyTGluayxcbiAgUm91dGVyTGlua0FjdGl2ZSxcbiAgUm91dGVyTGlua1dpdGhIcmVmLFxuICBTY3JvbGwsXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBc3luY1N1YmplY3QsIGZpbHRlciwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEl0TmF2c2Nyb2xsTGlzdEl0ZW1zQ29tcG9uZW50IH0gZnJvbSAnLi9uYXZzY3JvbGwtbGlzdC1pdGVtcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmF2c2Nyb2xsSXRlbSB9IGZyb20gJy4vbmF2c2Nyb2xsLm1vZGVsJztcbmltcG9ydCB7IE5hdnNjcm9sbFN0b3JlIH0gZnJvbSAnLi9uYXZzY3JvbGwuc3RvcmUnO1xuXG5jb25zdCBST1VURVJfTElOS19BQ1RJVkVfT1BUSU9OUzogSXNBY3RpdmVNYXRjaE9wdGlvbnMgPSB7XG4gIGZyYWdtZW50OiAnZXhhY3QnLFxuICBwYXRoczogJ2V4YWN0JyxcbiAgcXVlcnlQYXJhbXM6ICdleGFjdCcsXG4gIG1hdHJpeFBhcmFtczogJ2V4YWN0Jyxcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2l0LW5hdnNjcm9sbC1saXN0LWl0ZW0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbUm91dGVyTGluaywgUm91dGVyTGlua0FjdGl2ZSwgUm91dGVyTGlua1dpdGhIcmVmLCBJdE5hdnNjcm9sbExpc3RJdGVtc0NvbXBvbmVudCwgQXN5bmNQaXBlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGFcbiAgICAgIGNsYXNzPVwibmF2LWxpbmtcIlxuICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmUgfCBhc3luY1wiXG4gICAgICBbcm91dGVyTGlua109XCJbXVwiXG4gICAgICByb3V0ZXJMaW5rQWN0aXZlXG4gICAgICBbZnJhZ21lbnRdPVwiaXRlbT8uaHJlZlwiXG4gICAgICBbcm91dGVyTGlua0FjdGl2ZU9wdGlvbnNdPVwicm91dGVyTGlua0FjdGl2ZU9wdGlvbnNcIlxuICAgICAgYXJpYUN1cnJlbnRXaGVuQWN0aXZlPVwicGFnZVwiXG4gICAgICAjcnRsPVwicm91dGVyTGlua0FjdGl2ZVwiXG4gICAgICAoY2xpY2spPVwiY2xpY2tIYW5kbGVyKCRldmVudClcIlxuICAgICAgPjxzcGFuPnt7IGl0ZW0/LnRpdGxlIH19PC9zcGFuPjwvYVxuICAgID5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgSXROYXZzY3JvbGxMaXN0SXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGl0ZW0hOiBOYXZzY3JvbGxJdGVtO1xuXG4gIEBPdXRwdXQoKSByZWFkb25seSBjaGVja0FjdGl2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8TmF2c2Nyb2xsSXRlbT4oKTtcblxuICBAVmlld0NoaWxkKCdydGwnKVxuICByZWFkb25seSBydGw6IGFueTtcblxuICByZWFkb25seSByb3V0ZXJMaW5rQWN0aXZlT3B0aW9ucyA9IFJPVVRFUl9MSU5LX0FDVElWRV9PUFRJT05TO1xuXG4gIHJlYWRvbmx5ICNpbml0SXNBY3RpdmUgPSBuZXcgQXN5bmNTdWJqZWN0PE5hdnNjcm9sbEl0ZW0+KCk7XG5cbiAgcmVhZG9ubHkgYWN0aXZlID0gdGhpcy4jaW5pdElzQWN0aXZlLmFzT2JzZXJ2YWJsZSgpLnBpcGUoc3dpdGNoTWFwKGl0ZW0gPT4gdGhpcy4jc3RvcmUuaXNBY3RpdmUkKGl0ZW0pKSk7XG5cbiAgcmVhZG9ubHkgI3JvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuXG4gIHJlYWRvbmx5ICNzdG9yZSA9IGluamVjdChOYXZzY3JvbGxTdG9yZSk7XG5cbiAgcmVhZG9ubHkgI2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy4jaW5pdElzQWN0aXZlU3ViKCk7XG4gICAgdGhpcy4jcm91dGVyLmV2ZW50c1xuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLiNkZXN0cm95UmVmKSxcbiAgICAgICAgZmlsdGVyKChldmVudDogUm91dGVyRXZlbnQpID0+IHtcbiAgICAgICAgICBjb25zdCBpc05hdmlnYXRpb25FbmRFdmVudCA9IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZDtcbiAgICAgICAgICBjb25zdCBpc1Njcm9sbEV2ZW50ID0gZXZlbnQgaW5zdGFuY2VvZiBTY3JvbGwgJiYgKGV2ZW50IGFzIFNjcm9sbCkucm91dGVyRXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kO1xuICAgICAgICAgIHJldHVybiBpc05hdmlnYXRpb25FbmRFdmVudCB8fCBpc1Njcm9sbEV2ZW50O1xuICAgICAgICB9KSxcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5ydGw/LmlzQWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLiNzdG9yZS5zZXRBY3RpdmUodGhpcy5pdGVtKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBjbGlja0hhbmRsZXIoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLiNzdG9yZS5zZWxlY3RNZW51SXRlbSgpO1xuICAgIHRoaXMuI3JvdXRlci5uYXZpZ2F0ZShbXSwgeyBmcmFnbWVudDogdGhpcy5pdGVtLmhyZWYgfSk7XG4gIH1cblxuICAjaW5pdElzQWN0aXZlU3ViKCkge1xuICAgIHRoaXMuI2luaXRJc0FjdGl2ZS5uZXh0KHRoaXMuaXRlbSk7XG4gICAgdGhpcy4jaW5pdElzQWN0aXZlLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { JsonPipe, NgTemplateOutlet } from '@angular/common';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
3
|
+
import { RouterLink, RouterLinkActive, RouterLinkWithHref } from '@angular/router';
|
|
4
|
+
import { ItNavscrollListItemComponent } from './navscroll-list-item.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class ItNavscrollListItemsComponent {
|
|
7
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ItNavscrollListItemsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.6", type: ItNavscrollListItemsComponent, isStandalone: true, selector: "it-navscroll-list-items", inputs: { items: "items" }, ngImport: i0, template: `
|
|
9
|
+
<ul class="link-list">
|
|
10
|
+
@for (item of items; track item.href) {
|
|
11
|
+
<li class="nav-item">
|
|
12
|
+
<it-navscroll-list-item [item]="item"></it-navscroll-list-item>
|
|
13
|
+
@if (item.childs?.length) {
|
|
14
|
+
<it-navscroll-list-items [items]="item.childs"></it-navscroll-list-items>
|
|
15
|
+
}
|
|
16
|
+
</li>
|
|
17
|
+
}
|
|
18
|
+
</ul>
|
|
19
|
+
`, isInline: true, dependencies: [{ kind: "component", type: ItNavscrollListItemsComponent, selector: "it-navscroll-list-items", inputs: ["items"] }, { kind: "component", type: ItNavscrollListItemComponent, selector: "it-navscroll-list-item", inputs: ["item"], outputs: ["checkActive"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
20
|
+
}
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ItNavscrollListItemsComponent, decorators: [{
|
|
22
|
+
type: Component,
|
|
23
|
+
args: [{
|
|
24
|
+
selector: 'it-navscroll-list-items',
|
|
25
|
+
standalone: true,
|
|
26
|
+
imports: [NgTemplateOutlet, RouterLink, RouterLinkActive, RouterLinkWithHref, JsonPipe, ItNavscrollListItemComponent],
|
|
27
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
28
|
+
template: `
|
|
29
|
+
<ul class="link-list">
|
|
30
|
+
@for (item of items; track item.href) {
|
|
31
|
+
<li class="nav-item">
|
|
32
|
+
<it-navscroll-list-item [item]="item"></it-navscroll-list-item>
|
|
33
|
+
@if (item.childs?.length) {
|
|
34
|
+
<it-navscroll-list-items [items]="item.childs"></it-navscroll-list-items>
|
|
35
|
+
}
|
|
36
|
+
</li>
|
|
37
|
+
}
|
|
38
|
+
</ul>
|
|
39
|
+
`,
|
|
40
|
+
}]
|
|
41
|
+
}], propDecorators: { items: [{
|
|
42
|
+
type: Input
|
|
43
|
+
}] } });
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2c2Nyb2xsLWxpc3QtaXRlbXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWFuZ3VsYXIta2l0L3NyYy9saWIvY29tcG9uZW50cy9uYXZpZ2F0aW9uL25hdnNjcm9sbC9uYXZzY3JvbGwtbGlzdC1pdGVtcy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFxQi9FLE1BQU0sT0FBTyw2QkFBNkI7OEdBQTdCLDZCQUE2QjtrR0FBN0IsNkJBQTZCLCtHQWI5Qjs7Ozs7Ozs7Ozs7R0FXVCw0REFFVSw2QkFBNkIsdUZBZmdELDRCQUE0Qjs7MkZBZXpHLDZCQUE2QjtrQkFsQnpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtvQkFDbkMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsNEJBQTRCLENBQUM7b0JBQ3JILGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7O0dBV1Q7aUJBQ0Y7OEJBRVUsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSnNvblBpcGUsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlckxpbmssIFJvdXRlckxpbmtBY3RpdmUsIFJvdXRlckxpbmtXaXRoSHJlZiB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJdE5hdnNjcm9sbExpc3RJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9uYXZzY3JvbGwtbGlzdC1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOYXZzY3JvbGxJdGVtcyB9IGZyb20gJy4vbmF2c2Nyb2xsLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaXQtbmF2c2Nyb2xsLWxpc3QtaXRlbXMnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTmdUZW1wbGF0ZU91dGxldCwgUm91dGVyTGluaywgUm91dGVyTGlua0FjdGl2ZSwgUm91dGVyTGlua1dpdGhIcmVmLCBKc29uUGlwZSwgSXROYXZzY3JvbGxMaXN0SXRlbUNvbXBvbmVudF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogYFxuICAgIDx1bCBjbGFzcz1cImxpbmstbGlzdFwiPlxuICAgICAgQGZvciAoaXRlbSBvZiBpdGVtczsgdHJhY2sgaXRlbS5ocmVmKSB7XG4gICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtXCI+XG4gICAgICAgICAgPGl0LW5hdnNjcm9sbC1saXN0LWl0ZW0gW2l0ZW1dPVwiaXRlbVwiPjwvaXQtbmF2c2Nyb2xsLWxpc3QtaXRlbT5cbiAgICAgICAgICBAaWYgKGl0ZW0uY2hpbGRzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIDxpdC1uYXZzY3JvbGwtbGlzdC1pdGVtcyBbaXRlbXNdPVwiaXRlbS5jaGlsZHNcIj48L2l0LW5hdnNjcm9sbC1saXN0LWl0ZW1zPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9saT5cbiAgICAgIH1cbiAgICA8L3VsPlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBJdE5hdnNjcm9sbExpc3RJdGVtc0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGl0ZW1zITogTmF2c2Nyb2xsSXRlbXM7XG59XG4iXX0=
|