X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=ang%2FcrmUi.js;h=20ee8b1a8f10af7da538e118becc24499a43b7ee;hb=a02c849585aba900804a0a2a25d9b736237dbd91;hp=355939c2dcf71ec855ac2fdaadc0c26d73c7db47;hpb=1e76376024f7a69ad35fcbea34865b34f636c06a;p=civicrm-core.git
diff --git a/ang/crmUi.js b/ang/crmUi.js
index 355939c2dc..20ee8b1a8f 100644
--- a/ang/crmUi.js
+++ b/ang/crmUi.js
@@ -106,7 +106,11 @@
},
template: function() {
var args = $location.search();
- return (args && args.angularDebug) ? '
' : '';
+ if (args && args.angularDebug) {
+ var jsonTpl = (CRM.angular.modules.indexOf('jsonFormatter') < 0) ? '{{data|json}}
' : '';
+ return '' + jsonTpl + '
';
+ }
+ return '';
},
link: function(scope, element, attrs) {
var args = $location.search();
@@ -1079,13 +1083,60 @@
};
})
+ // Editable text using ngModel & html5 contenteditable
+ // Usage: {{ my.data }}
+ .directive("crmUiEditable", function() {
+ return {
+ restrict: "A",
+ require: "ngModel",
+ scope: {
+ defaultValue: '='
+ },
+ link: function(scope, element, attrs, ngModel) {
+ var ts = CRM.ts();
+
+ function read() {
+ var htmlVal = element.html();
+ if (!htmlVal) {
+ htmlVal = scope.defaultValue || '';
+ element.text(htmlVal);
+ }
+ ngModel.$setViewValue(htmlVal);
+ }
+
+ ngModel.$render = function() {
+ element.text(ngModel.$viewValue || scope.defaultValue || '');
+ };
+
+ // Special handling for enter and escape keys
+ element.on('keydown', function(e) {
+ // Enter: prevent line break and save
+ if (e.which === 13) {
+ e.preventDefault();
+ element.blur();
+ }
+ // Escape: undo
+ if (e.which === 27) {
+ element.text(ngModel.$viewValue || scope.defaultValue || '');
+ element.blur();
+ }
+ });
+
+ element.on("blur change", function() {
+ scope.$apply(read);
+ });
+
+ element.attr('contenteditable', 'true').addClass('crm-editable-enabled');
+ }
+ };
+ })
+
.run(function($rootScope, $location) {
/// Example:
$rootScope.goto = function(path) {
$location.path(path);
};
// useful for debugging: $rootScope.log = console.log || function() {};
- })
- ;
+ });
})(angular, CRM.$, CRM._);