Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(67)

Side by Side Diff: sky/framework/components/drawer.dart

Issue 1003553002: Update Button to be made of Material (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 import '../animation/curves.dart'; 5 import '../animation/curves.dart';
6 import '../animation/generator.dart'; 6 import '../animation/generator.dart';
7 import '../fn.dart'; 7 import '../fn.dart';
8 import '../theme/colors.dart'; 8 import '../theme/colors.dart';
9 import '../theme/shadows.dart'; 9 import '../theme/shadows.dart';
10 import 'dart:async'; 10 import 'dart:async';
11 import 'dart:math' as math; 11 import 'dart:math' as math;
12 import 'dart:sky' as sky; 12 import 'dart:sky' as sky;
13 import 'material.dart';
13 14
14 const double _kWidth = 256.0; 15 const double _kWidth = 256.0;
15 const double _kMinFlingVelocity = 0.4; 16 const double _kMinFlingVelocity = 0.4;
16 const double _kBaseSettleDurationMS = 246.0; 17 const double _kBaseSettleDurationMS = 246.0;
17 const double _kMaxSettleDurationMS = 600.0; 18 const double _kMaxSettleDurationMS = 600.0;
18 const Cubic _kAnimationCurve = easeOut; 19 const Cubic _kAnimationCurve = easeOut;
19 20
20 class DrawerAnimation extends Animation { 21 class DrawerAnimation extends Animation {
21 Stream<double> get onPositionChanged => onValueChanged; 22 Stream<double> get onPositionChanged => onValueChanged;
22 23
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 } 77 }
77 } 78 }
78 79
79 class Drawer extends Component { 80 class Drawer extends Component {
80 static final Style _style = new Style(''' 81 static final Style _style = new Style('''
81 position: absolute; 82 position: absolute;
82 z-index: 2; 83 z-index: 2;
83 top: 0; 84 top: 0;
84 left: 0; 85 left: 0;
85 bottom: 0; 86 bottom: 0;
86 right: 0; 87 right: 0;'''
87 box-shadpw: ${Shadow[3]};'''
88 ); 88 );
89 89
90 static final Style _maskStyle = new Style(''' 90 static final Style _maskStyle = new Style('''
91 background-color: black; 91 background-color: black;
92 will-change: opacity; 92 will-change: opacity;
93 position: absolute; 93 position: absolute;
94 top: 0; 94 top: 0;
95 left: 0; 95 left: 0;
96 bottom: 0; 96 bottom: 0;
97 right: 0;''' 97 right: 0;'''
98 ); 98 );
99 99
100 static final Style _contentStyle = new Style(''' 100 static final Style _contentStyle = new Style('''
101 background-color: ${Grey[50]}; 101 background-color: ${Grey[50]};
102 will-change: transform; 102 will-change: transform;
103 position: absolute; 103 position: absolute;
104 z-index: 3; 104 z-index: 3;
105 width: 256px; 105 width: 256px;
106 top: 0; 106 top: 0;
107 left: 0; 107 left: 0;
108 bottom: 0;''' 108 bottom: 0;'''
109 ); 109 );
110 110
111 DrawerAnimation animation; 111 DrawerAnimation animation;
112 List<Node> children; 112 List<Node> children;
113 int level;
113 114
114 Drawer({ 115 Drawer({
115 Object key, 116 Object key,
116 this.animation, 117 this.animation,
117 this.children 118 this.children,
119 this.level: 0
118 }) : super(key: key) { 120 }) : super(key: key) {
119 events.listen('pointerdown', animation.handlePointerDown); 121 events.listen('pointerdown', animation.handlePointerDown);
120 events.listen('pointermove', animation.handlePointerMove); 122 events.listen('pointermove', animation.handlePointerMove);
121 events.listen('pointerup', animation.handlePointerUp); 123 events.listen('pointerup', animation.handlePointerUp);
122 events.listen('pointercancel', animation.handlePointerCancel); 124 events.listen('pointercancel', animation.handlePointerCancel);
123 } 125 }
124 126
125 double _position = -_kWidth; 127 double _position = -_kWidth;
126 128
127 bool _listening = false; 129 bool _listening = false;
(...skipping 13 matching lines...) Expand all
141 Node build() { 143 Node build() {
142 _ensureListening(); 144 _ensureListening();
143 145
144 bool isClosed = _position <= -_kWidth; 146 bool isClosed = _position <= -_kWidth;
145 String inlineStyle = 'display: ${isClosed ? 'none' : ''}'; 147 String inlineStyle = 'display: ${isClosed ? 'none' : ''}';
146 String maskInlineStyle = 'opacity: ${(_position / _kWidth + 1) * 0.25}'; 148 String maskInlineStyle = 'opacity: ${(_position / _kWidth + 1) * 0.25}';
147 String contentInlineStyle = 'transform: translateX(${_position}px)'; 149 String contentInlineStyle = 'transform: translateX(${_position}px)';
148 150
149 Container mask = new Container( 151 Container mask = new Container(
150 key: 'Mask', 152 key: 'Mask',
151 style: _maskStyle, 153 styles: [_maskStyle],
152 inlineStyle: maskInlineStyle 154 inlineStyle: maskInlineStyle
153 )..events.listen('gesturetap', animation.handleMaskTap) 155 )..events.listen('gesturetap', animation.handleMaskTap)
154 ..events.listen('gestureflingstart', animation.handleFlingStart); 156 ..events.listen('gestureflingstart', animation.handleFlingStart);
155 157
156 Container content = new Container( 158 Material content = new Material(
157 key: 'Content', 159 key: 'Content',
158 style: _contentStyle, 160 styles: [_contentStyle],
159 inlineStyle: contentInlineStyle, 161 inlineStyle: contentInlineStyle,
160 children: children 162 children: children,
163 level: level
161 ); 164 );
162 165
163 return new Container( 166 return new Container(
164 style: _style, 167 styles: [_style],
165 inlineStyle: inlineStyle, 168 inlineStyle: inlineStyle,
166 children: [ mask, content ] 169 children: [ mask, content ]
167 ); 170 );
168 } 171 }
169 } 172 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698