diff --git a/README.md b/README.md
index 1a80a44..c2f5121 100644
--- a/README.md
+++ b/README.md
@@ -10,8 +10,18 @@ bower install angular-contenteditable
## Usage
+```javascript
+angular.module('myapp', ['contenteditable'])
+ .controller('Ctrl', function($scope){
+ $scope.model="interesting stuff" })
+```
+
```html
-
+
+
```
## Development
diff --git a/angular-contenteditable.js b/angular-contenteditable.js
index 64cfc64..54c9fb8 100644
--- a/angular-contenteditable.js
+++ b/angular-contenteditable.js
@@ -15,7 +15,7 @@
});
});
old_render = ngModel.$render;
- return ngModel.$render = function() {
+ ngModel.$render = function() {
var el, el2, range, sel;
if (old_render != null) {
old_render();
@@ -34,6 +34,20 @@
sel.removeAllRanges();
return sel.addRange(range);
};
+ if (attrs.selectNonEditable && attrs.selectNonEditable !== "false") {
+ return elmt.click(function(e) {
+ var range, sel, target;
+ target = e.toElement;
+ if (target !== this && angular.element(target).attr('contenteditable') === 'false') {
+ range = document.createRange();
+ sel = window.getSelection();
+ range.setStartBefore(target);
+ range.setEndAfter(target);
+ sel.removeAllRanges();
+ return sel.addRange(range);
+ }
+ });
+ }
}
};
});
diff --git a/bower.json b/bower.json
index 0db0a92..31419c6 100644
--- a/bower.json
+++ b/bower.json
@@ -1,5 +1,5 @@
{ "name": "angular-contenteditable"
-, "version": "0.1.0"
+, "version": "0.2.0"
, "main": "angular-contenteditable.js"
, "ignore":
[ ".*"
diff --git a/package.json b/package.json
index cd6f48f..717469e 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "angular-contenteditable",
- "version": "0.1.0",
+ "version": "0.2.0",
"description": "angular extensions",
"main": "angular-contenteditable.js",
"directories": {
diff --git a/src/contenteditable.coffee b/src/contenteditable.coffee
index 59687a1..f5083fc 100644
--- a/src/contenteditable.coffee
+++ b/src/contenteditable.coffee
@@ -26,4 +26,16 @@ angular.module('contenteditable', [])
range.collapse(true)
sel.removeAllRanges()
sel.addRange(range)
+
+ # select whole sub-span if it has contenteditable="false"
+ if attrs.selectNonEditable && attrs.selectNonEditable != "false"
+ elmt.click (e) ->
+ target = e.toElement
+ if target != @ && angular.element(target).attr('contenteditable') == 'false'
+ range = document.createRange()
+ sel = window.getSelection()
+ range.setStartBefore(target)
+ range.setEndAfter(target)
+ sel.removeAllRanges()
+ sel.addRange(range)
)
diff --git a/test/fixtures/select-non-editable.html b/test/fixtures/select-non-editable.html
new file mode 100644
index 0000000..f61ba9d
--- /dev/null
+++ b/test/fixtures/select-non-editable.html
@@ -0,0 +1,33 @@
+
+
+
+ Simple
+
+
+
+
+
+
+
+
+
+
+ something
+
+
+
+
+
+