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

Commit bb86fdf

Browse files
Googlernshahan
authored andcommitted
Add a HasDisabled interface to ACX components that support a disabled input.
PiperOrigin-RevId: 197037610
1 parent 471be79 commit bb86fdf

25 files changed

+107
-20
lines changed

lib/button_decorator/button_decorator.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import 'dart:html';
77

88
import 'package:angular/angular.dart';
99
import 'package:angular_components/focus/focus.dart';
10+
import 'package:angular_components/interfaces/has_disabled.dart';
1011
import 'package:angular_components/mixins/has_tab_index.dart';
1112
import 'package:angular_components/utils/browser/events/events.dart';
1213

@@ -26,7 +27,9 @@ import 'package:angular_components/utils/browser/events/events.dart';
2627
// Injected by [DisablePendingClickHandlerDirective].
2728
visibility: Visibility.all,
2829
)
29-
class ButtonDirective extends RootFocusable with HasTabIndex implements OnInit {
30+
class ButtonDirective extends RootFocusable
31+
with HasTabIndex
32+
implements OnInit, HasDisabled {
3033
/// Will emit Event on mouse click or keyboard activation.
3134
@Output()
3235
Stream<UIEvent> get trigger => _trigger.stream;

lib/interfaces/has_disabled.dart

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
2+
// for details. All rights reserved. Use of this source code is governed by a
3+
// BSD-style license that can be found in the LICENSE file.
4+
5+
/// Interface for classes accepting a disabled setting.
6+
abstract class HasDisabled {
7+
bool disabled;
8+
}

lib/material_button/material_button.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import 'dart:html';
66

77
import 'package:angular/angular.dart';
88
import 'package:angular_components/button_decorator/button_decorator.dart';
9+
import 'package:angular_components/interfaces/has_disabled.dart';
910
import 'package:angular_components/material_ripple/material_ripple.dart';
1011
import 'package:angular_components/theme/dark_theme.dart';
1112

@@ -106,7 +107,8 @@ import 'material_button_base.dart';
106107
templateUrl: 'material_button.html',
107108
providers: const [
108109
AcxDarkTheme,
109-
const Provider(ButtonDirective, useExisting: MaterialButtonComponent)
110+
const Provider(ButtonDirective, useExisting: MaterialButtonComponent),
111+
const Provider(HasDisabled, useExisting: MaterialButtonComponent),
110112
],
111113
styleUrls: const ['material_button.scss.css'],
112114
changeDetection: ChangeDetectionStrategy.OnPush,

lib/material_checkbox/material_checkbox.dart

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import 'dart:html';
88
import 'package:angular/angular.dart';
99
import 'package:angular_forms/angular_forms.dart';
1010
import 'package:meta/meta.dart';
11+
import 'package:angular_components/interfaces/has_disabled.dart';
1112
import 'package:angular_components/focus/focus.dart';
1213
import 'package:angular_components/glyph/glyph.dart';
1314
import 'package:angular_components/material_ripple/material_ripple.dart';
@@ -64,12 +65,16 @@ const indeterminateAriaState = 'mixed';
6465
///
6566
@Component(
6667
selector: 'material-checkbox',
68+
providers: const [
69+
const Provider(HasDisabled, useExisting: MaterialCheckboxComponent),
70+
],
6771
directives: const [GlyphComponent, MaterialRippleComponent, NgIf],
6872
templateUrl: 'material_checkbox.html',
6973
styleUrls: const ['material_checkbox.scss.css'],
7074
changeDetection: ChangeDetectionStrategy.OnPush,
7175
)
72-
class MaterialCheckboxComponent implements ControlValueAccessor, Focusable {
76+
class MaterialCheckboxComponent
77+
implements ControlValueAccessor, HasDisabled, Focusable {
7378
@HostBinding('class')
7479
static const hostClass = 'themeable';
7580

lib/material_datepicker/material_date_range_picker.dart

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import 'package:intl/intl.dart';
1010
import 'package:quiver/time.dart';
1111
import 'package:angular_components/button_decorator/button_decorator.dart';
1212
import 'package:angular_components/content/deferred_content.dart';
13+
import 'package:angular_components/interfaces/has_disabled.dart';
1314
import 'package:angular_components/focus/focus_trap.dart';
1415
import 'package:angular_components/focus/keyboard_only_focus_indicator.dart';
1516
import 'package:angular_components/glyph/glyph.dart';
@@ -78,11 +79,12 @@ import 'package:angular_components/utils/disposer/disposer.dart';
7879
],
7980
providers: const [
8081
const Provider(DateRangeEditorHost,
81-
useExisting: MaterialDateRangePickerComponent)
82+
useExisting: MaterialDateRangePickerComponent),
83+
const Provider(HasDisabled, useExisting: MaterialDateRangePickerComponent),
8284
],
8385
)
8486
class MaterialDateRangePickerComponent extends KeyboardHandlerMixin
85-
implements OnInit, OnDestroy, DateRangeEditorHost {
87+
implements HasDisabled, OnInit, OnDestroy, DateRangeEditorHost {
8688
DateRangeEditorComponent _dateRangeEditor;
8789
bool _focusOnDateRangeEditorInit = false;
8890

lib/material_datepicker/material_date_time_picker.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import 'dart:async';
77
import 'package:angular/angular.dart';
88
import 'package:intl/intl.dart';
99
import 'package:quiver/time.dart';
10+
import 'package:angular_components/interfaces/has_disabled.dart';
1011
import 'package:angular_components/material_datepicker/material_datepicker.dart';
1112
import 'package:angular_components/material_datepicker/material_time_picker.dart';
1213
import 'package:angular_components/material_datepicker/module.dart';
@@ -33,8 +34,11 @@ import 'package:angular_components/model/date/date.dart';
3334
MaterialTimePickerComponent,
3435
MaterialInputComponent,
3536
],
37+
providers: const [
38+
const Provider(HasDisabled, useExisting: MaterialDateTimePickerComponent),
39+
],
3640
)
37-
class MaterialDateTimePickerComponent {
41+
class MaterialDateTimePickerComponent implements HasDisabled {
3842
final Clock _clock;
3943

4044
/// The format used to format dates.

lib/material_datepicker/material_datepicker.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import 'package:intl/intl.dart';
1010
import 'package:quiver/time.dart';
1111
import 'package:angular_components/button_decorator/button_decorator.dart';
1212
import 'package:angular_components/content/deferred_content.dart';
13+
import 'package:angular_components/interfaces/has_disabled.dart';
1314
import 'package:angular_components/focus/focus.dart';
1415
import 'package:angular_components/focus/focus_trap.dart';
1516
import 'package:angular_components/focus/keyboard_only_focus_indicator.dart';
@@ -68,12 +69,15 @@ import 'package:angular_components/model/date/date.dart';
6869
NgIf,
6970
PopupSourceDirective,
7071
],
72+
providers: const [
73+
const Provider(HasDisabled, useExisting: MaterialDatepickerComponent),
74+
],
7175
styleUrls: const ['material_datepicker.scss.css'],
7276
templateUrl: 'material_datepicker.html',
7377
)
7478
class MaterialDatepickerComponent extends KeyboardHandlerMixin
7579
with FocusableMixin
76-
implements AfterViewInit {
80+
implements AfterViewInit, HasDisabled {
7781
/// The format used to format dates.
7882
///
7983
/// Defaults to `yMMMd`, e.g. 'Jan 23, 2015'.

lib/material_datepicker/material_time_picker.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import 'dart:html';
88
import 'package:angular/angular.dart';
99
import 'package:intl/intl.dart';
1010
import 'package:quiver/time.dart';
11+
import 'package:angular_components/interfaces/has_disabled.dart';
1112
import 'package:angular_components/material_datepicker/module.dart';
1213
import 'package:angular_components/material_input/material_input.dart';
1314
import 'package:angular_components/material_select/material_dropdown_select.dart';
@@ -26,11 +27,14 @@ import 'package:angular_components/utils/disposer/disposer.dart';
2627
materialInputDirectives,
2728
NgStyle,
2829
],
30+
providers: const [
31+
const Provider(HasDisabled, useExisting: MaterialTimePickerComponent),
32+
],
2933
templateUrl: 'material_time_picker.html',
3034
styleUrls: const ['material_time_picker.scss.css'],
3135
)
3236
class MaterialTimePickerComponent extends KeyboardHandlerMixin
33-
implements OnInit, OnDestroy {
37+
implements HasDisabled, OnInit, OnDestroy {
3438
static DateTime _utcTime(int hour, [int minute = 0]) => new DateTime.utc(
3539
_unixEpoch.year, _unixEpoch.month, _unixEpoch.day, hour, minute);
3640

lib/material_expansionpanel/material_expansionpanel.dart

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import 'package:angular/angular.dart';
99
import 'package:intl/intl.dart';
1010
import 'package:angular_components/button_decorator/button_decorator.dart';
1111
import 'package:angular_components/content/deferred_content_aware.dart';
12+
import 'package:angular_components/interfaces/has_disabled.dart';
1213
import 'package:angular_components/focus/focus.dart';
1314
import 'package:angular_components/material_icon/material_icon.dart';
1415
import 'package:angular_components/material_yes_no_buttons/material_yes_no_buttons.dart';
@@ -112,15 +113,16 @@ import 'package:angular_components/utils/disposer/disposer.dart';
112113
KeyUpBoundaryDirective
113114
],
114115
providers: const [
115-
const Provider(DeferredContentAware, useExisting: MaterialExpansionPanel)
116+
const Provider(DeferredContentAware, useExisting: MaterialExpansionPanel),
117+
const Provider(HasDisabled, useExisting: MaterialExpansionPanel),
116118
],
117119
templateUrl: 'material_expansionpanel.html',
118120
styleUrls: const ['material_expansionpanel.scss.css'],
119121
changeDetection: ChangeDetectionStrategy.OnPush,
120122
visibility: Visibility.all, // injected
121123
)
122124
class MaterialExpansionPanel
123-
implements DeferredContentAware, OnInit, OnDestroy {
125+
implements DeferredContentAware, HasDisabled, OnInit, OnDestroy {
124126
final NgZone _ngZone;
125127
final ChangeDetectorRef _changeDetector;
126128
final DomService _domService;

lib/material_input/base_material_input.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import 'package:angular/angular.dart';
99
import 'package:angular_forms/angular_forms.dart';
1010
import 'package:intl/intl.dart';
1111
import 'package:quiver/strings.dart' show isEmpty, isNotEmpty;
12+
import 'package:angular_components/interfaces/has_disabled.dart';
1213
import 'package:angular_components/focus/focus.dart';
1314
import 'package:angular_components/forms/error_renderer.dart' show ErrorFn;
1415
import 'package:angular_components/mixins/focusable_mixin.dart';
@@ -33,7 +34,7 @@ enum BottomPanelState {
3334

3435
/// Base class for behavior that is shared between material input components.
3536
class BaseMaterialInput extends FocusableMixin
36-
implements Focusable, AfterViewInit, OnDestroy {
37+
implements HasDisabled, Focusable, AfterViewInit, OnDestroy {
3738
final ChangeDetectorRef _changeDetector;
3839
final _disposer = new Disposer.oneShot();
3940

0 commit comments

Comments
 (0)