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

Unified Diff: third_party/pkg/angular/lib/directive/input_select.dart

Issue 256553002: Revert "Update all Angular libs (run update_all.sh)." (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: third_party/pkg/angular/lib/directive/input_select.dart
diff --git a/third_party/pkg/angular/lib/directive/ng_model_select.dart b/third_party/pkg/angular/lib/directive/input_select.dart
similarity index 71%
rename from third_party/pkg/angular/lib/directive/ng_model_select.dart
rename to third_party/pkg/angular/lib/directive/input_select.dart
index 1e8e6e047bdf0c76db13d791a7e7bc92a0bc83b5..af568b30aaac49e0f0a293782c74ca4ac4c8c0f1 100644
--- a/third_party/pkg/angular/lib/directive/ng_model_select.dart
+++ b/third_party/pkg/angular/lib/directive/input_select.dart
@@ -1,10 +1,12 @@
part of angular.directive;
+typedef dynamic ItemEval(dynamic item, num index);
+
/**
* HTML [SELECT] element with angular data-binding if used with
- * [NgModel].
+ * [NgModelDirective].
*
- * The [NgModel] will receive the currently selected item. The binding
+ * The [NgModelDirective] will receive the currently selected item. The binding
* is performed on the [OPTION].[value] property. An empty [OPTION].[value] is
* treated as null.
*
@@ -12,15 +14,17 @@ part of angular.directive;
* unknown [OPTION] is inserted into the list. Once the model points to an
* existing [OPTION] the unknown [OPTION] is removed.
*
- * Because [OPTION].[value] attribute is a string, the model is bound to a
- * string. If there is need to bind to an object then [OptionValue]
+ * Becouse [OPTION].[value] attribute is a string, the model is bound to a
+ * string. If there is need to bind to an object then [OptionValueDirective]
* should be used.
*
*/
-@Decorator(
- selector: 'select[ng-model]')
-class InputSelect implements AttachAware {
- final expando = new Expando<OptionValue>();
+@NgDirective(
+ selector: 'select[ng-model]',
+ visibility: NgDirective.CHILDREN_VISIBILITY)
+class InputSelectDirective implements NgAttachAware {
+ final Expando<OptionValueDirective> expando =
+ new Expando<OptionValueDirective>();
final dom.SelectElement _selectElement;
final NodeAttrs _attrs;
final NgModel _model;
@@ -32,11 +36,15 @@ class InputSelect implements AttachAware {
_SelectMode _mode = new _SelectMode(null, null, null);
bool _dirty = false;
- InputSelect(dom.Element this._selectElement, this._attrs, this._model,
- this._scope) {
+ InputSelectDirective(dom.Element this._selectElement, this._attrs, this._model,
+ this._scope) {
_unknownOption.value = '?';
- _nullOption = _selectElement.querySelectorAll('option')
- .firstWhere((o) => o.value == '', orElse: () => null);
+ _unknownOption.text = ''; // Explicit due to dartbug.com/14407
+ _selectElement.querySelectorAll('option').forEach((o) {
+ if (_nullOption == null && o.value == '') {
+ _nullOption = o;
+ }
+ });
}
attach() {
@@ -44,8 +52,7 @@ class InputSelect implements AttachAware {
_mode.destroy();
if (value == null) {
_model.watchCollection = false;
- _mode = new _SingleSelectMode(expando, _selectElement, _model,
- _nullOption, _unknownOption);
+ _mode = new _SingleSelectMode(expando, _selectElement, _model, _nullOption, _unknownOption);
} else {
_model.watchCollection = true;
_mode = new _MultipleSelectionMode(expando, _selectElement, _model);
@@ -72,7 +79,7 @@ class InputSelect implements AttachAware {
if (!_dirty) {
_dirty = true;
// TODO(misko): this hack need to delay the rendering until after domRead
- // because the modelChange reads from the DOM. We should be able to render
+ // becouse the modelChange reads from the DOM. We should be able to render
// without DOM changes.
_scope.rootScope.domRead(() {
_scope.rootScope.domWrite(() {
@@ -89,22 +96,25 @@ class InputSelect implements AttachAware {
* provides [ng-value] which allows binding to any expression.
*
*/
-@Decorator(selector: 'option', module: NgValue.moduleFactory)
-class OptionValue implements AttachAware,
- DetachAware {
- final InputSelect _inputSelectDirective;
+@NgDirective(
+ selector: 'option')
+class OptionValueDirective implements NgAttachAware,
+ NgDetachAware {
+ final InputSelectDirective _inputSelectDirective;
final dom.Element _element;
NgValue _ngValue;
- OptionValue(this._element, this._inputSelectDirective, this._ngValue) {
+ OptionValueDirective(this._element, this._inputSelectDirective, this._ngValue) {
if (_inputSelectDirective != null) {
_inputSelectDirective.expando[_element] = this;
}
}
attach() {
- if (_inputSelectDirective != null) _inputSelectDirective.dirty();
+ if (_inputSelectDirective != null) {
+ _inputSelectDirective.dirty();
+ }
}
detach() {
@@ -114,11 +124,11 @@ class OptionValue implements AttachAware,
}
}
- get ngValue => _ngValue.value;
+ get ngValue => _ngValue.readValue(_element);
}
class _SelectMode {
- final Expando<OptionValue> expando;
+ final Expando<OptionValueDirective> expando;
final dom.SelectElement select;
final NgModel model;
@@ -144,21 +154,19 @@ class _SingleSelectMode extends _SelectMode {
bool _unknownOptionActive = false;
- _SingleSelectMode(Expando<OptionValue> expando,
+ _SingleSelectMode(Expando<OptionValueDirective> expando,
dom.SelectElement select,
NgModel model,
this._nullOption,
- this._unknownOption)
- : super(expando, select, model) {
+ this._unknownOption
+ ): super(expando, select, model) {
}
onViewChange(event) {
var i = 0;
model.viewValue = _forEachOption((option, _) {
if (option.selected) {
- if (option == _nullOption) return null;
- assert(expando[option] != null);
- return expando[option].ngValue;
+ return option == _nullOption ? null : expando[option].ngValue;
}
if (option != _unknownOption && option != _nullOption) i++;
}, true);
@@ -172,10 +180,8 @@ class _SingleSelectMode extends _SelectMode {
if (value == null) {
selected = option == _nullOption;
} else {
- OptionValue optionValueDirective = expando[option];
- selected = optionValueDirective == null ?
- false :
- optionValueDirective.ngValue == value;
+ OptionValueDirective optionValueDirective = expando[option];
+ selected = optionValueDirective == null ? false : optionValueDirective.ngValue == value;
}
found = found || selected;
option.selected = selected;
@@ -197,7 +203,7 @@ class _SingleSelectMode extends _SelectMode {
}
class _MultipleSelectionMode extends _SelectMode {
- _MultipleSelectionMode(Expando<OptionValue> expando,
+ _MultipleSelectionMode(Expando<OptionValueDirective> expando,
dom.SelectElement select,
NgModel model)
: super(expando, select, model);
@@ -217,9 +223,11 @@ class _MultipleSelectionMode extends _SelectMode {
if (selectedValues is List) {
fn = (o, i) {
var selected = expando[o];
- return selected == null ?
- false :
- o.selected = selectedValues.contains(selected.ngValue);
+ if (selected == null) {
+ return false;
+ } else {
+ return o.selected = selectedValues.contains(selected.ngValue);
+ }
};
}
« no previous file with comments | « third_party/pkg/angular/lib/directive/a_href.dart ('k') | third_party/pkg/angular/lib/directive/module.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698