Skip to content
This repository was archived by the owner on May 20, 2023. It is now read-only.

Commit 94f1bab

Browse files
Googlernshahan
authored andcommitted
Update MaterialDropdownSelect to hide item from the option list when getSelectable(item) call returns SelectableOption.Hidden
PiperOrigin-RevId: 179590775
1 parent c70b658 commit 94f1bab

File tree

5 files changed

+27
-0
lines changed

5 files changed

+27
-0
lines changed

lib/material_select/material_dropdown_select.dart

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -465,6 +465,15 @@ class MaterialDropdownSelectComponent extends MaterialSelectBase
465465
return false;
466466
}
467467

468+
/// Whether to hide [item].
469+
bool isOptionHidden(Object item) {
470+
if (options is Selectable) {
471+
return (options as Selectable).getSelectable(item) ==
472+
SelectableOption.Hidden;
473+
}
474+
return false;
475+
}
476+
468477
/// Whether to show select item that deselects the current selection.
469478
bool get showDeselectItem =>
470479
!isMultiSelect && deselectLabel?.isNotEmpty == true;

lib/material_select/material_dropdown_select.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@
8181
[factoryRenderer]="factoryRenderer"
8282
[selection]="selection"
8383
[disabled]="isOptionDisabled(item)"
84+
[isHidden]="isOptionHidden(item)"
8485
[value]="item"
8586
[active]="activeModel.isActive(item)"
8687
[attr.id]="activeModel.id(item)"

lib/material_select/material_select_dropdown_item.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import 'package:angular_components/utils/browser/dom_service/dom_service.dart';
2323
host: const {
2424
'class': 'item',
2525
'[class.disabled]': 'disabled',
26+
'[class.hidden]': 'isHidden',
2627
'[class.active]': 'active',
2728
'[class.selected]': 'isSelected',
2829
'[class.multiselect]': 'supportsMultiSelect',

lib/material_select/material_select_dropdown_item.scss

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@
2121
color: $mat-lighter-transparent-black;
2222
cursor: default;
2323
}
24+
25+
&.hidden {
26+
display: none;
27+
}
2428
}
2529

2630
.check-container {

lib/material_select/material_select_item.dart

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import 'package:angular_components/utils/disposer/disposer.dart';
2727
host: const {
2828
'class': 'item',
2929
'[class.disabled]': 'disabled',
30+
'[class.hidden]': 'isHidden',
3031
'[class.selected]': 'isSelected',
3132
'[class.multiselect]': 'supportsMultiSelect',
3233
'tabindex': '0',
@@ -78,6 +79,17 @@ class MaterialSelectItemComponent extends ButtonDirective
7879
..addFunction(() => _selectionChangeStreamSub?.cancel());
7980
}
8081

82+
/// Whether the item should be hidden.
83+
///
84+
/// False by default.
85+
bool get isHidden => _isHidden;
86+
@Input()
87+
set isHidden(value) {
88+
_isHidden = getBool(value);
89+
}
90+
91+
bool _isHidden = false;
92+
8193
/// The value this selection item represents.
8294
///
8395
/// If the object implements [HasUIDisplayName], it will render use

0 commit comments

Comments
 (0)