diff --git a/.ng-dev/commit-message.mts b/.ng-dev/commit-message.mts index 56b1531b30e9..aea281ad7d40 100644 --- a/.ng-dev/commit-message.mts +++ b/.ng-dev/commit-message.mts @@ -12,6 +12,7 @@ export const commitMessage: CommitMessageConfig = { 'cdk-experimental/column-resize', 'cdk-experimental/combobox', 'cdk-experimental/listbox', + 'cdk-experimental/nav', 'cdk-experimental/popover-edit', 'cdk-experimental/scrolling', 'cdk-experimental/selection', diff --git a/src/cdk-experimental/config.bzl b/src/cdk-experimental/config.bzl index 89dd51af4665..bd659c25e9e3 100644 --- a/src/cdk-experimental/config.bzl +++ b/src/cdk-experimental/config.bzl @@ -4,6 +4,7 @@ CDK_EXPERIMENTAL_ENTRYPOINTS = [ "combobox", "deferred-content", "listbox", + "nav", "popover-edit", "scrolling", "selection", diff --git a/src/cdk-experimental/nav/BUILD.bazel b/src/cdk-experimental/nav/BUILD.bazel new file mode 100644 index 000000000000..d77269c58643 --- /dev/null +++ b/src/cdk-experimental/nav/BUILD.bazel @@ -0,0 +1,17 @@ +load("//tools:defaults.bzl", "ng_project") + +package(default_visibility = ["//visibility:public"]) + +ng_project( + name = "nav", + srcs = glob( + ["**/*.ts"], + exclude = ["**/*.spec.ts"], + ), + deps = [ + "//:node_modules/@angular/core", + "//src/cdk-experimental/ui-patterns", + "//src/cdk/a11y", + "//src/cdk/bidi", + ], +) diff --git a/src/cdk-experimental/nav/index.ts b/src/cdk-experimental/nav/index.ts new file mode 100644 index 000000000000..52b3c7a5156f --- /dev/null +++ b/src/cdk-experimental/nav/index.ts @@ -0,0 +1,9 @@ +/** + * @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 + */ + +export * from './public-api'; diff --git a/src/cdk-experimental/nav/nav.ts b/src/cdk-experimental/nav/nav.ts new file mode 100644 index 000000000000..bd7071ce85b8 --- /dev/null +++ b/src/cdk-experimental/nav/nav.ts @@ -0,0 +1,186 @@ +/** + * @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 {Directionality} from '@angular/cdk/bidi'; +import {_IdGenerator} from '@angular/cdk/a11y'; +import { + AfterViewInit, + booleanAttribute, + computed, + contentChildren, + Directive, + effect, + ElementRef, + inject, + input, + linkedSignal, + model, + signal, + WritableSignal, +} from '@angular/core'; +import {toSignal} from '@angular/core/rxjs-interop'; +import {LinkPattern, NavPattern} from '../ui-patterns'; + +/** + * A Nav container. + * + * Represents a list of navigational links. The CdkNav is a container meant to be used with + * CdkLink as follows: + * + * ```html + * + * ``` + */ +@Directive({ + selector: '[cdkNav]', + exportAs: 'cdkNav', + standalone: true, + host: { + 'role': 'navigation', // Common role for