blob: 0d7bbd49e1dd302817a7528d730a64b524472cc6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
// <input type="text" name="bla" ng-action=""> -> <ng:textinput name="" ng-action=""/>
angular.widget("inputtext", function(element) {
var expression = element.attr('name');
var formatter = this.formatter(element.attr('formatter'));
var validator = this.validator(element.attr('validator'));
function validate(value) {
var error = validator(element);
if (error) {
element.addClass("ng-error");
scope.markInvalid(this); //move out of scope
} else {
scope.clearInvalid(this);
}
}
element.keyup(this.withScope(function(){
this.$evalSet(expression, formatter.parse(element.val()));
validate(element.val());
}));
return {watch: expression, apply: function(newValue){
element.val(formatter.format(newValue));
validate(element.val());
}};
});
angular.widget("inputfile", function(element) {
});
angular.widget("inputradio", function(element) {
});
// <ng:colorpicker name="chosenColor" >
angular.widget("colorpicker", function(element) {
var name = element.attr('datasource');
var formatter = this.formatter(element.attr('ng-formatter'));
element.colorPicker(this.withScope(function(selectedColor){
this.$evalSet(name, formatter.parse(selectedColor));
}));
return function(){
this.$watch(expression, function(cmyk){
element.setColor(formatter.format(cmyk));
});
}
});
angular.widget("template", function(element) {
var srcExpression = element.attr('src');
var self = this;
return {watch:srcExpression, apply:function(src){
$.load(src, function(html){
self.destroy(element);
element.html(html);
self.compile(element);
});
}};
});
/**
*
* {
* withScope: //safely executes, with a try/catch. applies scope
* compile:
* widget:
* directive:
* validator:
* formatter:
*
*
* config:
* loadCSS:
* loadScript:
* loadTemplate:
* }
*
**/
|