Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -18,28 +18,28 @@ bazel_dep(name = "yq.bzl", version = "0.3.6")
bazel_dep(name = "rules_angular")
git_override(
module_name = "rules_angular",
commit = "b1d295334e70335dab7ac9984a989fae0a9c9dc2",
commit = "88a34a4f4f10f495b051c06c2ffa8698829b9215",
remote = "https://github.com/angular/rules_angular.git",
)

bazel_dep(name = "devinfra")
git_override(
module_name = "devinfra",
commit = "fcf9aad99710835428e0e9859bf060689045a131",
commit = "bb79de4712147000f5f289eac67e2ec366f57dbc",
remote = "https://github.com/angular/dev-infra.git",
)

bazel_dep(name = "rules_sass")
git_override(
module_name = "rules_sass",
commit = "a65d937fabd87672f7245aeaa5eb5a0c5a2abead",
commit = "53e635b7fe0c2132b3b61f17cf0631bb35364013",
remote = "https://github.com/angular/rules_sass.git",
)

bazel_dep(name = "rules_browsers")
git_override(
module_name = "rules_browsers",
commit = "b03f09ef28a08f8ae07482851cf5ecbf6ac23a2a",
commit = "f8a3a661882bf36e537971a9e50fd19cada0d471",
remote = "https://github.com/angular/rules_browsers.git",
)

Expand Down
6 changes: 3 additions & 3 deletions adev/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,17 @@
"@algolia/requester-browser-xhr": "5.52.1",
"@algolia/requester-node-http": "5.52.1",
"@angular/animations": "workspace:*",
"@angular/aria": "22.0.0-next.7",
"@angular/aria": "22.0.0-next.8",
"@angular/build": "22.0.0-next.7",
"@angular/cdk": "22.0.0-next.7",
"@angular/cdk": "22.0.0-next.8",
"@angular/cli": "22.0.0-next.7",
"@angular/common": "workspace:*",
"@angular/compiler": "workspace:*",
"@angular/compiler-cli": "workspace:*",
"@angular/core": "workspace:*",
"@angular/docs": "workspace:*",
"@angular/forms": "workspace:*",
"@angular/material": "22.0.0-next.7",
"@angular/material": "22.0.0-next.8",
"@angular/platform-browser": "workspace:*",
"@angular/platform-server": "workspace:*",
"@angular/router": "workspace:*",
Expand Down
1 change: 1 addition & 0 deletions adev/shared-docs/components/select/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ ng_project(
],
deps = [
"//adev:node_modules/@angular/aria",
"//adev:node_modules/@angular/cdk",
"//adev:node_modules/@angular/common",
"//adev:node_modules/@angular/core",
"//adev:node_modules/@angular/forms",
Expand Down
116 changes: 74 additions & 42 deletions adev/shared-docs/components/select/select.component.html
Original file line number Diff line number Diff line change
@@ -1,61 +1,93 @@
<div ngCombobox #outerCombobox="ngCombobox" [readonly]="true" [disabled]="disabled()">
<div class="docs-select-input-container">
<div ngCombobox #combobox="ngCombobox" class="docs-combobox-container" [(expanded)]="popupExpanded">
<div #origin class="docs-select-input-container">
<input
ngComboboxInput
[attr.id]="id()"
[attr.name]="name()"
[value]="displayValue()"
placeholder="Select an option..."
placeholder="Select an option"
readonly
[tabindex]="-1"
/>
<span class="material-symbols-outlined docs-select-arrow" translate="no" aria-hidden="true"
>arrow_drop_down</span
>
</div>

<ng-template ngComboboxPopupContainer>
<dialog ngComboboxDialog class="docs-select-dialog">
<div ngCombobox #innerCombobox="ngCombobox" filterMode="manual" [alwaysExpanded]="true">
<div class="docs-select-search-container">
<span
class="material-symbols-outlined docs-select-search-icon"
translate="no"
aria-hidden="true"
>search</span
>
<input
ngComboboxInput
class="docs-select-search-input"
placeholder="Search..."
[(value)]="searchString"
/>
</div>
<ng-template
[cdkConnectedOverlay]="{origin: combobox.element, usePopover: 'inline', matchWidth: true}"
[cdkConnectedOverlayOpen]="popupExpanded()"
[cdkConnectedOverlayDisableClose]="false"
(overlayOutsideClick)="popupExpanded.set(false)"
>
<ng-template ngComboboxPopup [combobox]="combobox" popupType="dialog">
<div class="docs-select-popover">
<div class="docs-select-dialog" ngComboboxWidget>
<div class="example-combobox-container">
<div class="docs-select-search-container">
<span
class="material-symbols-outlined docs-select-search-icon"
translate="no"
aria-hidden="true"
>search</span
>
<input
ngCombobox
#innerCombobox="ngCombobox"
#searchInput
class="docs-select-search-input"
placeholder="Search..."
[(value)]="searchString"
[alwaysExpanded]="true"
(keydown.escape)="onSearchEscape($event)"
/>
</div>

<ng-template ngComboboxPopupContainer>
@if (filteredOptions().length === 0) {
<div class="docs-select-no-results">No results found</div>
}
<div aria-live="polite" class="cdk-visually-hidden">
{{ filteredOptions().length === 0 ? 'No results found for ' + searchString() : '' }}
</div>

<div ngListbox [(value)]="selectedValues" class="docs-select-listbox">
@for (option of filteredOptions(); track option.value) {
<div
ngOption
[value]="option.value"
[label]="option.label"
class="docs-select-option"
>
<span class="docs-select-option-label">{{ option.label }}</span>
<span
class="material-symbols-outlined docs-select-check-icon"
translate="no"
aria-hidden="true"
>check</span
<ng-template ngComboboxPopup [combobox]="innerCombobox">
<div class="example-popup example-popup-no-margin">
@if (filteredOptions().length === 0) {
<div class="docs-select-no-results">No results found</div>
}
<div
#listbox="ngListbox"
ngListbox
[(value)]="selectedValues"
[multi]="false"
ngComboboxWidget
class="example-listbox"
focusMode="activedescendant"
tabindex="-1"
selectionMode="explicit"
(click)="onCommit()"
(keydown.enter)="onCommit()"
[activeDescendant]="listbox.activeDescendant()"
[class.example-empty]="filteredOptions().length === 0"
>
@for (option of filteredOptions(); track option.value) {
<div
ngOption
[value]="option.value"
[label]="option.label"
class="docs-select-option"
>
<span class="docs-select-option-label">{{ option.label }}</span>
<span
class="material-symbols-outlined docs-select-check-icon"
translate="no"
aria-hidden="true"
>check</span
>
</div>
}
</div>
</div>
}
</ng-template>
</div>
</ng-template>
</div>
</div>
</dialog>
</ng-template>
</ng-template>
</div>
41 changes: 24 additions & 17 deletions adev/shared-docs/components/select/select.component.scss
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
:host {
--border-color: color-mix(in srgb, var(--full-contrast) 20%, var(--page-background));
}

[ngCombobox] {
position: relative;
width: 100%;
display: flex;
Expand All @@ -16,22 +14,36 @@
position: relative;
align-items: center;
border-radius: 0.25rem;
}

[ngComboboxInput] {
border-radius: 0.25rem;
}

[ngComboboxInput][readonly='true'] {
cursor: pointer;
padding: 0.7rem 1rem;
input {
width: 100%;
border: none;
outline: none;
font-size: 1rem;
padding: 0.7rem 1rem 0.7rem;
background-color: var(--septenary-contrast);
color: var(--primary-contrast);

&[readonly] {
cursor: pointer;
padding: 0.7rem 1rem;
}

&[aria-expanded='true'] + .docs-select-arrow {
transform: rotate(180deg);
}
}
}

[ngCombobox]:focus-within [ngComboboxInput]:not(.docs-select-search-input) {
outline: 1.5px solid var(--vivid-pink);
box-shadow: 0 0 0 4px color-mix(in srgb, var(--vivid-pink) 25%, transparent);
}

.docs-select-popover {
width: 100%;
}

.docs-select-arrow {
width: 24px;
height: 24px;
Expand All @@ -46,16 +58,11 @@
transition: transform 0.2s ease;
}

[ngComboboxInput][aria-expanded='true'] + .docs-select-arrow {
transform: rotate(180deg);
}

[ngComboboxInput] {
width: 100%;
[ngComboboxInput] [ngCombobox] {
border: none;
outline: none;
font-size: 1rem;
padding: 0.7rem 1rem 0.7rem 2.5rem;
padding: 0.7rem 1rem 0.7rem;
background-color: var(--septenary-contrast);
color: var(--primary-contrast);
}
Expand Down
Loading
Loading