diff --git a/.gitignore b/.gitignore
index f71f1ac..614e979 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,5 @@
.packages
.pub/
build/
+
+screenshot.png
diff --git a/.travis.yml b/.travis.yml
index a6ca522..d214f01 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -11,5 +11,4 @@ cache:
- $HOME/.pub-cache
matrix:
allow_failures:
- - dart: dev
- dart_task: dartfmt
+ - dart: stable
diff --git a/lib/app_component.dart b/lib/app_component.dart
index 03face2..56c0c1d 100644
--- a/lib/app_component.dart
+++ b/lib/app_component.dart
@@ -16,6 +16,7 @@ import 'src/material_expansionpanel_demo/material_expansionpanel_demo.dart';
import 'src/material_icon_demo/material_icon_demo.dart';
import 'src/material_input_demo/material_input_demo.dart';
import 'src/material_list_demo/material_list_demo.dart';
+import 'src/material_menu_demo/material_menu_demo.dart';
import 'src/material_popup_demo/material_popup_demo.dart';
import 'src/material_progress_demo/material_progress_demo.dart';
import 'src/material_radio_demo/material_radio_demo.dart';
@@ -45,6 +46,7 @@ import 'src/scorecard_demo/scorecard_demo.dart';
MaterialIconDemoComponent,
MaterialInputDemoComponent,
MaterialListDemoComponent,
+ MaterialMenuDemoComponent,
MaterialPopupDemoComponent,
MaterialProgressDemoComponent,
MaterialRadioDemoComponent,
diff --git a/lib/app_component.html b/lib/app_component.html
index d3b5af0..39dbc49 100644
--- a/lib/app_component.html
+++ b/lib/app_component.html
@@ -24,6 +24,7 @@
Scorecards
Popups
Modal Dialogs
+ Menus
Tooltips
Lists
Selects
@@ -388,6 +389,25 @@ Modal Dialogs
+
+Menus
+
+
+
+
Tooltips
diff --git a/lib/src/material_auto_suggest_input_demo/material_auto_suggest_input_demo.dart b/lib/src/material_auto_suggest_input_demo/material_auto_suggest_input_demo.dart
index 07e4702..c32de5a 100644
--- a/lib/src/material_auto_suggest_input_demo/material_auto_suggest_input_demo.dart
+++ b/lib/src/material_auto_suggest_input_demo/material_auto_suggest_input_demo.dart
@@ -88,7 +88,7 @@ class MaterialAutoSuggestInputDemoComponent {
final ExampleSelectionOptions suggestionOptions =
new ExampleSelectionOptions.withOptionGroups(_optionGroups);
final ExampleSelectionOptions suggestionOptionsWithItemRenderer =
- new ExampleSelectionOptions.withOptionGroups(_optionGroups,
+ new ExampleSelectionOptions>.withOptionGroups(_optionGroups,
toFilterableString: _numberNameRenderer);
final emptySuggestionOptions =
@@ -126,7 +126,7 @@ class MaterialAutoSuggestInputDemoComponent {
SelectionOptions get options => suggestionOptionsWithItemRenderer;
- ItemRenderer get itemRenderer => _numberNameRenderer;
+ ItemRenderer> get itemRenderer => _numberNameRenderer;
ComponentRenderer get componentRenderer =>
useComponentRenderer ? (_) => ExampleRendererComponent : null;
diff --git a/lib/src/material_menu_demo/material_menu_demo.dart b/lib/src/material_menu_demo/material_menu_demo.dart
new file mode 100644
index 0000000..2fa6c63
--- /dev/null
+++ b/lib/src/material_menu_demo/material_menu_demo.dart
@@ -0,0 +1,278 @@
+import 'dart:html';
+
+import 'package:angular/angular.dart';
+import 'package:observable/observable.dart';
+import 'package:angular_components/laminate/overlay/zindexer.dart';
+import 'package:angular_components/laminate/popup/module.dart';
+import 'package:angular_components/material_menu/dropdown_menu.dart';
+import 'package:angular_components/material_menu/material_fab_menu.dart';
+import 'package:angular_components/material_menu/material_menu.dart';
+import 'package:angular_components/model/menu/menu.dart';
+import 'package:angular_components/model/menu/selectable_menu.dart';
+import 'package:angular_components/model/selection/select.dart';
+import 'package:angular_components/model/selection/selection_model.dart';
+import 'package:angular_components/model/ui/icon.dart';
+import 'package:angular_components/utils/disposer/disposer.dart';
+
+@Component(
+ selector: 'material-menu-demo',
+ providers: const [
+ popupBindings,
+ const Provider(ZIndexer, useClass: ZIndexer)
+ ],
+ directives: const [
+ MaterialMenuComponent,
+ MaterialFabMenuComponent,
+ DropdownMenuComponent
+ ],
+ templateUrl: 'material_menu_demo.html',
+ styleUrls: const ['material_menu_demo.css'],
+)
+class MaterialMenuDemoComponent implements OnDestroy {
+ /// Stores the selected color, in an observable manner.
+ final SelectionModel colorSelection;
+
+ /// Simple menu with some colors.
+ final MenuModel