aboutsummaryrefslogtreecommitdiffstats
path: root/src/widgets2.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets2.js')
-rw-r--r--src/widgets2.js129
1 files changed, 0 insertions, 129 deletions
diff --git a/src/widgets2.js b/src/widgets2.js
deleted file mode 100644
index 04045426..00000000
--- a/src/widgets2.js
+++ /dev/null
@@ -1,129 +0,0 @@
-function modelAccessor(scope, element) {
- var expr = element.attr('name'),
- farmatterName = element.attr('ng-format') || NOOP,
- formatter = angularFormatter(farmatterName);
- if (!expr) throw "Required field 'name' not found.";
- if (!formatter) throw "Formatter named '" + farmatterName + "' not found.";
- return {
- get: function() {
- return formatter['format'](scope.$eval(expr));
- },
- set: function(value) {
- scope.$eval(expr + '=' + toJson(formatter['parse'](value)));
- }
- };
-}
-
-function valueAccessor(element) {
- var validatorName = element.attr('ng-validate') || NOOP,
- validator = angularValidator(validatorName),
- required = element.attr('ng-required'),
- lastError;
- required = required || required == '';
- if (!validator) throw "Validator named '" + validatorName + "' not found.";
- function validate(value) {
- var error = required && !trim(value) ? "Required" : validator(value);
- if (error !== lastError) {
- if (error) {
- element.addClass(NG_VALIDATION_ERROR);
- element.attr(NG_ERROR, error);
- } else {
- element.removeClass(NG_VALIDATION_ERROR);
- element.removeAttr(NG_ERROR);
- }
- lastError = error;
- }
- return value;
- }
- return {
- get: function(){ return validate(element.val()); },
- set: function(value){ element.val(validate(value)); }
- };
-}
-
-function checkedAccessor(element) {
- var domElement = element[0];
- return {
- get: function(){ return !!domElement.checked; },
- set: function(value){ domElement.checked = !!value; }
- };
-}
-
-function radioAccessor(element) {
- var domElement = element[0];
- return {
- get: function(){ return domElement.checked ? domElement.value : null; },
- set: function(value){ domElement.checked = value == domElement.value; }
- };
-}
-
-function optionsAccessor(element) {
- var options = element[0].options;
- return {
- get: function(){
- var values = [];
- foreach(options, function(option){
- if (option.selected) values.push(option.value);
- });
- return values;
- },
- set: function(values){
- var keys = {};
- foreach(values, function(value){ keys[value] = true; });
- foreach(options, function(option){
- option.selected = keys[option.value];
- });
- }
- };
-}
-
-function noopAccessor() { return { get: noop, set: noop }; }
-
-var NG_ERROR = 'ng-error',
- NG_VALIDATION_ERROR = 'ng-validation-error',
- textWidget = inputWidget('keyup change', modelAccessor, valueAccessor, ''),
- buttonWidget = inputWidget('click', noopAccessor, noopAccessor, undefined),
- INPUT_TYPE = {
- 'text': textWidget,
- 'textarea': textWidget,
- 'hidden': textWidget,
- 'password': textWidget,
- 'button': buttonWidget,
- 'submit': buttonWidget,
- 'reset': buttonWidget,
- 'image': buttonWidget,
- 'checkbox': inputWidget('click', modelAccessor, checkedAccessor, false),
- 'radio': inputWidget('click', modelAccessor, radioAccessor, undefined),
- 'select-one': inputWidget('click', modelAccessor, valueAccessor, null),
- 'select-multiple': inputWidget('click', modelAccessor, optionsAccessor, [])
-// 'file': fileWidget???
- };
-
-function inputWidget(events, modelAccessor, viewAccessor, initValue) {
- return function(element) {
- var scope = this,
- model = modelAccessor(scope, element),
- view = viewAccessor(element),
- action = element.attr('ng-action') || '',
- value = view.get() || copy(initValue);
- if (isDefined(value)) model.set(value);
- this.$eval(element.attr('ng-init')||'');
- element.bind(events, function(){
- model.set(view.get());
- scope.$tryEval(action, element);
- });
- scope.$watch(model.get, view.set);
- };
-}
-
-function inputWidgetSelector(element){
- return INPUT_TYPE[lowercase(element[0].type)] || noop;
-}
-
-angularWidget('INPUT', inputWidgetSelector);
-angularWidget('TEXTAREA', inputWidgetSelector);
-angularWidget('BUTTON', inputWidgetSelector);
-angularWidget('SELECT', function(element){
- this.descend(true);
- return inputWidgetSelector.call(this, element);
-});