UNPKG

rt-query-params-router-link

Version:

![](/projects/rt-query-params-router-link/rt-query-params-router-link.gif)

1 lines 8.49 kB
{"version":3,"file":"rt-query-params-router-link.mjs","sources":["../../../projects/rt-query-params-router-link/src/lib/rt-query-params-router-link.directive.ts","../../../projects/rt-query-params-router-link/src/lib/rt-query-params-router-link.module.ts","../../../projects/rt-query-params-router-link/src/public-api.ts","../../../projects/rt-query-params-router-link/src/rt-query-params-router-link.ts"],"sourcesContent":["import {Directive, ElementRef, HostListener, Inject, Input, OnDestroy, OnInit, Renderer2} from '@angular/core';\nimport {ActivatedRoute, NavigationEnd, QueryParamsHandling, Router} from '@angular/router';\nimport {WINDOW} from 'rt-platform';\nimport {Subscription} from 'rxjs';\nimport {filter} from 'rxjs/operators';\n\n@Directive({\n selector: '[rtQueryParamsRouterLink]',\n})\nexport class RtQueryParamsRouterLinkDirective implements OnInit, OnDestroy {\n @Input() linkQueryParams: any;\n @Input() linkQueryParamsHandling: QueryParamsHandling = 'merge';\n @Input() linkIsActive = true;\n @Input() classActiveLink: string;\n\n\n currentLink = false;\n\n private subscription = new Subscription();\n\n constructor(\n private el: ElementRef,\n private renderer: Renderer2,\n private router: Router,\n private activatedRoute: ActivatedRoute,\n @Inject(WINDOW) private window: Window,\n ) {\n }\n\n @HostListener('click', ['$event'])\n onClick($event: MouseEvent): void {\n if (!this.linkIsActive) {\n return;\n }\n\n // Open link in new tab if clicked with ctrl or cmd.\n if ($event.ctrlKey || $event.metaKey) {\n $event.preventDefault();\n $event.stopPropagation();\n this.window.open(this.getStringifyUrl(), '_blank');\n } else {\n this.router.navigate([], {\n queryParams: this.linkQueryParams,\n queryParamsHandling: this.linkQueryParamsHandling,\n });\n }\n }\n\n ngOnInit(): void {\n this.subscription.add(this.activatedRoute.queryParams.subscribe((params) => {\n if (this.checkKeyValuesPresence(this.linkQueryParams, params)) {\n this.currentLink = true;\n this.renderer.addClass(this.el.nativeElement, this.classActiveLink);\n } else {\n this.currentLink = false;\n this.renderer.removeClass(this.el.nativeElement, this.classActiveLink);\n }\n }));\n\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n\n\n private getStringifyUrl(): string {\n const oldQueryParams = this.activatedRoute.snapshot.queryParams;\n const mergedQueryParams = {\n ...oldQueryParams,\n ...this.linkQueryParams,\n };\n let url = '';\n if (mergedQueryParams) {\n url += '?';\n\n for (const param of Object.keys(mergedQueryParams)) {\n if (typeof mergedQueryParams[param] === 'object') {\n for (const arr of mergedQueryParams[param]) {\n url += `${param}=${arr}&`;\n }\n } else {\n url += `${param}=${mergedQueryParams[param]}&`;\n }\n }\n url = url.slice(0, url.length - 1);\n }\n\n return url.replace(/ /g, '%20');\n }\n\n\n private checkKeyValuesPresence(obj1: any, obj2: any): boolean {\n for (const key in obj1) {\n if (Object.prototype.hasOwnProperty.call(obj1, key)) {\n const value1 = obj1[key].toString();\n const value2 = obj2[key]?.toString();\n\n if (value2 === undefined || value1 !== value2) {\n return false;\n }\n }\n }\n return true;\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {RtQueryParamsRouterLinkDirective} from './rt-query-params-router-link.directive';\n\n@NgModule({\n declarations: [RtQueryParamsRouterLinkDirective],\n imports: [CommonModule],\n exports: [RtQueryParamsRouterLinkDirective],\n})\nexport class RtQueryParamsRouterLinkModule {\n}\n","/*\n * Public API Surface of rt-query-params-router-link\n */\n\nexport * from './lib/rt-query-params-router-link.directive';\nexport * from './lib/rt-query-params-router-link.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}