aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDavid Chang2013-01-17 20:08:27 -0800
committerMisko Hevery2013-01-18 21:16:16 -0800
commitb8bd4d5460d9952e9a3bb14992636b17859bd457 (patch)
tree006bc10c402613a5a11c326e3d94b13037e0cd96 /src
parentb2f46251aca76c8568ee7d4bab54edbc9d7a186a (diff)
downloadangular.js-b8bd4d5460d9952e9a3bb14992636b17859bd457.tar.bz2
feat(directive): added ng-open boolean directive
Closes# 1797 add ng-open attribute
Diffstat (limited to 'src')
-rw-r--r--src/jqLite.js4
-rw-r--r--src/ng/directive/booleanAttrs.js31
2 files changed, 33 insertions, 2 deletions
diff --git a/src/jqLite.js b/src/jqLite.js
index 46e0a73c..f84e7d1f 100644
--- a/src/jqLite.js
+++ b/src/jqLite.js
@@ -353,11 +353,11 @@ var JQLitePrototype = JQLite.prototype = {
// value on get.
//////////////////////////////////////////
var BOOLEAN_ATTR = {};
-forEach('multiple,selected,checked,disabled,readOnly,required'.split(','), function(value) {
+forEach('multiple,selected,checked,disabled,readOnly,required,open'.split(','), function(value) {
BOOLEAN_ATTR[lowercase(value)] = value;
});
var BOOLEAN_ELEMENTS = {};
-forEach('input,select,option,textarea,button,form'.split(','), function(value) {
+forEach('input,select,option,textarea,button,form,details'.split(','), function(value) {
BOOLEAN_ELEMENTS[uppercase(value)] = true;
});
diff --git a/src/ng/directive/booleanAttrs.js b/src/ng/directive/booleanAttrs.js
index 8902c35d..864c12c1 100644
--- a/src/ng/directive/booleanAttrs.js
+++ b/src/ng/directive/booleanAttrs.js
@@ -272,6 +272,37 @@
* @param {string} expression Angular expression that will be evaluated.
*/
+/**
+ * @ngdoc directive
+ * @name ng.directive:ngOpen
+ * @restrict A
+ *
+ * @description
+ * The HTML specs do not require browsers to preserve the special attributes such as open.
+ * (The presence of them means true and absence means false)
+ * This prevents the angular compiler from correctly retrieving the binding expression.
+ * To solve this problem, we introduce the `ngMultiple` directive.
+ *
+ * @example
+ <doc:example>
+ <doc:source>
+ Check me check multiple: <input type="checkbox" ng-model="open"><br/>
+ <details id="details" ng-open="open">
+ <summary>Show/Hide me</summary>
+ </details>
+ </doc:source>
+ <doc:scenario>
+ it('should toggle open', function() {
+ expect(element('#details').prop('open')).toBeFalsy();
+ input('open').check();
+ expect(element('#details').prop('open')).toBeTruthy();
+ });
+ </doc:scenario>
+ </doc:example>
+ *
+ * @element DETAILS
+ * @param {string} expression Angular expression that will be evaluated.
+ */
var ngAttributeAliasDirectives = {};