angular/adev/shared-docs/utils/url.utils.ts
SkyZeroZx a0b998e293 docs(docs-infra): use signals & improve types
Use signals to avoid markForCheck.

Simplify takeUntilDestroyed usage by relying on implicit DestroyRef.

Improve type safety by typing inject(ElementRef).
2026-05-07 18:17:29 -06:00

31 lines
827 B
TypeScript

/*!
* @license
* Copyright Google LLC All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.dev/license
*/
import {normalizePath} from './navigation.utils';
export function getRelativeUrl(
absoluteUrl: string,
result: 'relative' | 'pathname' | 'hash' = 'relative',
): string {
const url = new URL(normalizePath(absoluteUrl));
if (result === 'hash') {
return url.hash?.substring(1) ?? '';
}
if (result === 'pathname') {
return `${removeTrailingSlash(normalizePath(url.pathname))}`;
}
return `${removeTrailingSlash(normalizePath(url.pathname))}${url.hash ?? ''}`;
}
export const removeTrailingSlash = (url: string): string => {
if (url.endsWith('/')) {
return url.slice(0, -1);
}
return url;
};