@ecodev/natural 57.0.6 → 57.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { Directive, Input } from '@angular/core';
|
|
2
|
+
import { RouteConfigLoadEnd, RouteConfigLoadStart } from '@angular/router';
|
|
2
3
|
import { clone } from 'lodash-es';
|
|
3
4
|
import { takeUntil } from 'rxjs/operators';
|
|
4
5
|
import { NaturalAbstractController } from '../../../classes/abstract-controller';
|
|
6
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
5
7
|
import * as i0 from "@angular/core";
|
|
6
8
|
import * as i1 from "@angular/material/tabs";
|
|
7
9
|
import * as i2 from "@angular/router";
|
|
@@ -15,12 +17,13 @@ function getTabId(tab) {
|
|
|
15
17
|
* Usage :
|
|
16
18
|
*
|
|
17
19
|
* <mat-tab-group [naturalLinkableTab]="!isPanel">
|
|
18
|
-
* <mat-tab label="
|
|
19
|
-
* <mat-tab label="
|
|
20
|
+
* <mat-tab label="Tab 1">Tab 1</mat-tab> // First tab doesn't need id. This keeps url clean on default one
|
|
21
|
+
* <mat-tab label="Tab 2" id="second-tab">Tab 2</mat-tab>
|
|
20
22
|
* ...
|
|
21
23
|
* </mat-tab-group>
|
|
22
24
|
*/
|
|
23
25
|
export class NaturalLinkableTabDirective extends NaturalAbstractController {
|
|
26
|
+
#isLoadingRouteConfig;
|
|
24
27
|
constructor(component, route, router) {
|
|
25
28
|
super();
|
|
26
29
|
this.component = component;
|
|
@@ -30,6 +33,15 @@ export class NaturalLinkableTabDirective extends NaturalAbstractController {
|
|
|
30
33
|
* If false, disables the persistent navigation
|
|
31
34
|
*/
|
|
32
35
|
this.naturalLinkableTab = true;
|
|
36
|
+
this.#isLoadingRouteConfig = false;
|
|
37
|
+
router.events.pipe(takeUntilDestroyed()).subscribe(event => {
|
|
38
|
+
if (event instanceof RouteConfigLoadStart) {
|
|
39
|
+
this.#isLoadingRouteConfig = true;
|
|
40
|
+
}
|
|
41
|
+
else if (event instanceof RouteConfigLoadEnd) {
|
|
42
|
+
this.#isLoadingRouteConfig = false;
|
|
43
|
+
}
|
|
44
|
+
});
|
|
33
45
|
}
|
|
34
46
|
ngAfterViewInit() {
|
|
35
47
|
if (this.naturalLinkableTab === false) {
|
|
@@ -47,6 +59,9 @@ export class NaturalLinkableTabDirective extends NaturalAbstractController {
|
|
|
47
59
|
});
|
|
48
60
|
// When mat-tab-groups selected tab change, update url
|
|
49
61
|
this.component.selectedTabChange.pipe(takeUntil(this.ngUnsubscribe)).subscribe(event => {
|
|
62
|
+
if (this.#isLoadingRouteConfig) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
50
65
|
const activatedTabName = getTabId(event.tab);
|
|
51
66
|
const segments = this.route.snapshot.url;
|
|
52
67
|
if (!segments.length) {
|
|
@@ -77,4 +92,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImpor
|
|
|
77
92
|
}], ctorParameters: () => [{ type: i1.MatTabGroup }, { type: i2.ActivatedRoute }, { type: i2.Router }], propDecorators: { naturalLinkableTab: [{
|
|
78
93
|
type: Input
|
|
79
94
|
}] } });
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2FibGUtdGFiLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL2NvbW1vbi9kaXJlY3RpdmVzL2xpbmthYmxlLXRhYi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTlELE9BQU8sRUFBaUIsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQVMsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRyxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQ2hDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUMvRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQzs7OztBQUU5RDs7R0FFRztBQUNILFNBQVMsUUFBUSxDQUFDLEdBQVc7SUFDekIsT0FBTyxHQUFHLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUN4RSxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFLSCxNQUFNLE9BQU8sMkJBQTRCLFNBQVEseUJBQXlCO0lBS3RFLHFCQUFxQixDQUFTO0lBRTlCLFlBQ3FCLFNBQXNCLEVBQ3RCLEtBQXFCLEVBQ3JCLE1BQWM7UUFFL0IsS0FBSyxFQUFFLENBQUM7UUFKUyxjQUFTLEdBQVQsU0FBUyxDQUFhO1FBQ3RCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFUbkM7O1dBRUc7UUFDYSx1QkFBa0IsR0FBaUIsSUFBSSxDQUFDO1FBQ3hELDBCQUFxQixHQUFHLEtBQUssQ0FBQztRQVMxQixN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ZXdJbml0LCBEaXJlY3RpdmUsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWF0VGFiLCBNYXRUYWJHcm91cH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBSb3V0ZUNvbmZpZ0xvYWRFbmQsIFJvdXRlQ29uZmlnTG9hZFN0YXJ0LCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge2Nsb25lfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHt0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7TmF0dXJhbEFic3RyYWN0Q29udHJvbGxlcn0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9hYnN0cmFjdC1jb250cm9sbGVyJztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbi8qKlxuICogUmV0dXJucyBhbiBpZGVudGlmaWVyIGZvciB0aGUgdGFiXG4gKi9cbmZ1bmN0aW9uIGdldFRhYklkKHRhYjogTWF0VGFiKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGFiLmNvbnRlbnQ/LnZpZXdDb250YWluZXJSZWYuZWxlbWVudC5uYXRpdmVFbGVtZW50LmlkID8/ICcnO1xufVxuXG4vKipcbiAqIFVzYWdlIDpcbiAqXG4gKiA8bWF0LXRhYi1ncm91cCBbbmF0dXJhbExpbmthYmxlVGFiXT1cIiFpc1BhbmVsXCI+XG4gKiAgICAgPG1hdC10YWIgbGFiZWw9XCJUYWIgMVwiPlRhYiAxPC9tYXQtdGFiPiAvLyBGaXJzdCB0YWIgZG9lc24ndCBuZWVkIGlkLiBUaGlzIGtlZXBzIHVybCBjbGVhbiBvbiBkZWZhdWx0IG9uZVxuICogICAgIDxtYXQtdGFiIGxhYmVsPVwiVGFiIDJcIiBpZD1cInNlY29uZC10YWJcIj5UYWIgMjwvbWF0LXRhYj5cbiAqICAgICAuLi5cbiAqIDwvbWF0LXRhYi1ncm91cD5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdtYXQtdGFiLWdyb3VwW25hdHVyYWxMaW5rYWJsZVRhYl0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIE5hdHVyYWxMaW5rYWJsZVRhYkRpcmVjdGl2ZSBleHRlbmRzIE5hdHVyYWxBYnN0cmFjdENvbnRyb2xsZXIgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgICAvKipcbiAgICAgKiBJZiBmYWxzZSwgZGlzYWJsZXMgdGhlIHBlcnNpc3RlbnQgbmF2aWdhdGlvblxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBuYXR1cmFsTGlua2FibGVUYWI6IGJvb2xlYW4gfCAnJyA9IHRydWU7XG4gICAgI2lzTG9hZGluZ1JvdXRlQ29uZmlnID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY29tcG9uZW50OiBNYXRUYWJHcm91cCxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgcm91dGVyLmV2ZW50cy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgUm91dGVDb25maWdMb2FkU3RhcnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiNpc0xvYWRpbmdSb3V0ZUNvbmZpZyA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgUm91dGVDb25maWdMb2FkRW5kKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4jaXNMb2FkaW5nUm91dGVDb25maWcgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubmF0dXJhbExpbmthYmxlVGFiID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV2hlbiB1cmwgcGFyYW1zIGNoYW5nZSwgdXBkYXRlIHRoZSBtYXQtdGFiLWdyb3VwIHNlbGVjdGVkIHRhYlxuICAgICAgICB0aGlzLnJvdXRlLmZyYWdtZW50LnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZShmcmFnbWVudCA9PiB7XG4gICAgICAgICAgICAvLyBHZXQgaW5kZXggb2YgdGFiIHRoYXQgbWF0Y2hlcyB3YW50ZWQgbmFtZVxuICAgICAgICAgICAgY29uc3QgdGFiSW5kZXggPSB0aGlzLmdldFRhYkluZGV4KGZyYWdtZW50KTtcblxuICAgICAgICAgICAgLy8gSWYgdGFiIGluZGV4IGlzIHZhbGlkICg+PSAwKSBnbyB0byBnaXZlbiBmcmFnbWVudFxuICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gZnJhZ21lbnQgYXQgYWxsLCBnbyB0byBmaXJzdCB0YWIgKGluZGV4IGlzIC0xIGluIHRoaXMgY2FzZSlcbiAgICAgICAgICAgIGlmICh0YWJJbmRleCA+PSAwIHx8ICFmcmFnbWVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50LnNlbGVjdGVkSW5kZXggPSB0YWJJbmRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gV2hlbiBtYXQtdGFiLWdyb3VwcyBzZWxlY3RlZCB0YWIgY2hhbmdlLCB1cGRhdGUgdXJsXG4gICAgICAgIHRoaXMuY29tcG9uZW50LnNlbGVjdGVkVGFiQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy4jaXNMb2FkaW5nUm91dGVDb25maWcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGFjdGl2YXRlZFRhYk5hbWUgPSBnZXRUYWJJZChldmVudC50YWIpO1xuICAgICAgICAgICAgY29uc3Qgc2VnbWVudHMgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnVybDtcbiAgICAgICAgICAgIGlmICghc2VnbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgLy8gVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuIGluIG5vcm1hbCB1c2FnZSwgYmVjYXVzZSBpdCB3b3VsZCBtZWFucyB0aGVyZSBpcyBubyByb3V0ZSBhdCBhbGwgaW4gdGhlIGFwcFxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHVwZGF0ZSBVUkwgZm9yIHRhYnMgd2l0aG91dCBhbnkgc2VnbWVudHMgaW4gVVJMJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEdldCB1cmwgbWF0cml4IHBhcmFtcyAoL3NlZ21lbnQ7bWF0cml4PXBhcmFtKSBvbmx5IHdpdGhvdXQgcm91dGUgcGFyYW1zIChzZWdtZW50LzppZClcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IGNsb25lKHNlZ21lbnRzW3NlZ21lbnRzLmxlbmd0aCAtIDFdLnBhcmFtZXRlcnMpO1xuXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4nLCBwYXJhbXNdLCB7XG4gICAgICAgICAgICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcbiAgICAgICAgICAgICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAncHJlc2VydmUnLFxuICAgICAgICAgICAgICAgIGZyYWdtZW50OiBhY3RpdmF0ZWRUYWJOYW1lPy5sZW5ndGggPyBhY3RpdmF0ZWRUYWJOYW1lIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VGFiSW5kZXgoZnJhZ21lbnQ6IHN0cmluZyB8IG51bGwpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5jb21wb25lbnQuX3RhYnMudG9BcnJheSgpLmZpbmRJbmRleCh0YWIgPT4gZnJhZ21lbnQgPT09IGdldFRhYklkKHRhYikpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -4,7 +4,7 @@ import { Subject, Observable, takeUntil, BehaviorSubject, of, timer, switchMap a
|
|
|
4
4
|
import * as i2$2 from '@angular/forms';
|
|
5
5
|
import { FormGroup, FormArray, Validators, UntypedFormGroup, UntypedFormArray, FormControl, FormsModule, ReactiveFormsModule, UntypedFormControl, FormControlDirective, FormControlName } from '@angular/forms';
|
|
6
6
|
import * as i2$3 from '@angular/router';
|
|
7
|
-
import { ActivatedRoute, Router, NavigationStart, NavigationEnd, PRIMARY_OUTLET, RouterLink, NavigationError, DefaultUrlSerializer } from '@angular/router';
|
|
7
|
+
import { ActivatedRoute, Router, NavigationStart, NavigationEnd, RouteConfigLoadStart, RouteConfigLoadEnd, PRIMARY_OUTLET, RouterLink, NavigationError, DefaultUrlSerializer } from '@angular/router';
|
|
8
8
|
import { isArray, pickBy, cloneDeep, uniq, groupBy, mergeWith, defaultsDeep, omit, isEqual, kebabCase, merge, clone, pick, defaults, isEmpty, isObject, intersection, flatten, differenceWith } from 'lodash-es';
|
|
9
9
|
import * as i1 from '@angular/material/dialog';
|
|
10
10
|
import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
|
|
@@ -5529,12 +5529,13 @@ function getTabId(tab) {
|
|
|
5529
5529
|
* Usage :
|
|
5530
5530
|
*
|
|
5531
5531
|
* <mat-tab-group [naturalLinkableTab]="!isPanel">
|
|
5532
|
-
* <mat-tab label="
|
|
5533
|
-
* <mat-tab label="
|
|
5532
|
+
* <mat-tab label="Tab 1">Tab 1</mat-tab> // First tab doesn't need id. This keeps url clean on default one
|
|
5533
|
+
* <mat-tab label="Tab 2" id="second-tab">Tab 2</mat-tab>
|
|
5534
5534
|
* ...
|
|
5535
5535
|
* </mat-tab-group>
|
|
5536
5536
|
*/
|
|
5537
5537
|
class NaturalLinkableTabDirective extends NaturalAbstractController {
|
|
5538
|
+
#isLoadingRouteConfig;
|
|
5538
5539
|
constructor(component, route, router) {
|
|
5539
5540
|
super();
|
|
5540
5541
|
this.component = component;
|
|
@@ -5544,6 +5545,15 @@ class NaturalLinkableTabDirective extends NaturalAbstractController {
|
|
|
5544
5545
|
* If false, disables the persistent navigation
|
|
5545
5546
|
*/
|
|
5546
5547
|
this.naturalLinkableTab = true;
|
|
5548
|
+
this.#isLoadingRouteConfig = false;
|
|
5549
|
+
router.events.pipe(takeUntilDestroyed()).subscribe(event => {
|
|
5550
|
+
if (event instanceof RouteConfigLoadStart) {
|
|
5551
|
+
this.#isLoadingRouteConfig = true;
|
|
5552
|
+
}
|
|
5553
|
+
else if (event instanceof RouteConfigLoadEnd) {
|
|
5554
|
+
this.#isLoadingRouteConfig = false;
|
|
5555
|
+
}
|
|
5556
|
+
});
|
|
5547
5557
|
}
|
|
5548
5558
|
ngAfterViewInit() {
|
|
5549
5559
|
if (this.naturalLinkableTab === false) {
|
|
@@ -5561,6 +5571,9 @@ class NaturalLinkableTabDirective extends NaturalAbstractController {
|
|
|
5561
5571
|
});
|
|
5562
5572
|
// When mat-tab-groups selected tab change, update url
|
|
5563
5573
|
this.component.selectedTabChange.pipe(takeUntil$1(this.ngUnsubscribe)).subscribe(event => {
|
|
5574
|
+
if (this.#isLoadingRouteConfig) {
|
|
5575
|
+
return;
|
|
5576
|
+
}
|
|
5564
5577
|
const activatedTabName = getTabId(event.tab);
|
|
5565
5578
|
const segments = this.route.snapshot.url;
|
|
5566
5579
|
if (!segments.length) {
|