Skip to content

Commit 5d797f7

Browse files
committed
Assets for Semantic UI 2.2.11
1 parent 7278caf commit 5d797f7

27 files changed

Lines changed: 960 additions & 470 deletions

File tree

Binary file not shown.

assets/javascripts/semantic_ui/definitions/behaviors/form.js

Lines changed: 119 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,17 @@ $.fn.form = function(parameters) {
252252
bracketedRule: function(rule) {
253253
return (rule.type && rule.type.match(settings.regExp.bracket));
254254
},
255+
shorthandFields: function(fields) {
256+
var
257+
fieldKeys = Object.keys(fields),
258+
firstRule = fields[fieldKeys[0]]
259+
;
260+
return module.is.shorthandRules(firstRule);
261+
},
262+
// duck type rule test
263+
shorthandRules: function(rules) {
264+
return (typeof rules == 'string' || $.isArray(rules));
265+
},
255266
empty: function($field) {
256267
if(!$field || $field.length === 0) {
257268
return true;
@@ -403,6 +414,23 @@ $.fn.form = function(parameters) {
403414
: 'keyup'
404415
;
405416
},
417+
fieldsFromShorthand: function(fields) {
418+
var
419+
fullFields = {}
420+
;
421+
$.each(fields, function(name, rules) {
422+
if(typeof rules == 'string') {
423+
rules = [rules];
424+
}
425+
fullFields[name] = {
426+
rules: []
427+
};
428+
$.each(rules, function(index, rule) {
429+
fullFields[name].rules.push({ type: rule });
430+
});
431+
});
432+
return fullFields;
433+
},
406434
prompt: function(rule, field) {
407435
var
408436
ruleName = module.get.ruleName(rule),
@@ -453,23 +481,9 @@ $.fn.form = function(parameters) {
453481
}
454482
else {
455483
// 2.x
456-
if(parameters.fields) {
457-
ruleKeys = Object.keys(parameters.fields);
458-
if( typeof parameters.fields[ruleKeys[0]] == 'string' || $.isArray(parameters.fields[ruleKeys[0]]) ) {
459-
$.each(parameters.fields, function(name, rules) {
460-
if(typeof rules == 'string') {
461-
rules = [rules];
462-
}
463-
parameters.fields[name] = {
464-
rules: []
465-
};
466-
$.each(rules, function(index, rule) {
467-
parameters.fields[name].rules.push({ type: rule });
468-
});
469-
});
470-
}
484+
if(parameters.fields && module.is.shorthandFields(parameters.fields)) {
485+
parameters.fields = module.get.fieldsFromShorthand(parameters.fields);
471486
}
472-
473487
settings = $.extend(true, {}, $.fn.form.settings, parameters);
474488
validation = $.extend({}, $.fn.form.settings.defaults, settings.fields);
475489
module.verbose('Extending settings', validation, settings);
@@ -589,8 +603,11 @@ $.fn.form = function(parameters) {
589603
}
590604
else {
591605
if(isRadio) {
592-
if(isChecked) {
593-
values[name] = value;
606+
if(values[name] === undefined) {
607+
values[name] = (isChecked)
608+
? true
609+
: false
610+
;
594611
}
595612
}
596613
else if(isCheckbox) {
@@ -641,6 +658,44 @@ $.fn.form = function(parameters) {
641658
},
642659

643660
add: {
661+
// alias
662+
rule: function(name, rules) {
663+
module.add.field(name, rules);
664+
},
665+
field: function(name, rules) {
666+
var
667+
newValidation = {}
668+
;
669+
if(module.is.shorthandRules(rules)) {
670+
rules = $.isArray(rules)
671+
? rules
672+
: [rules]
673+
;
674+
newValidation[name] = {
675+
rules: []
676+
};
677+
$.each(rules, function(index, rule) {
678+
newValidation[name].rules.push({ type: rule });
679+
});
680+
}
681+
else {
682+
newValidation[name] = rules;
683+
}
684+
validation = $.extend({}, validation, newValidation);
685+
module.debug('Adding rules', newValidation, validation);
686+
},
687+
fields: function(fields) {
688+
var
689+
newValidation
690+
;
691+
if(fields && module.is.shorthandFields(fields)) {
692+
newValidation = module.get.fieldsFromShorthand(fields);
693+
}
694+
else {
695+
newValidation = fields;
696+
}
697+
validation = $.extend({}, validation, newValidation);
698+
},
644699
prompt: function(identifier, errors) {
645700
var
646701
$field = module.get.field(identifier),
@@ -693,6 +748,51 @@ $.fn.form = function(parameters) {
693748
},
694749

695750
remove: {
751+
rule: function(field, rule) {
752+
var
753+
rules = $.isArray(rule)
754+
? rule
755+
: [rule]
756+
;
757+
if(rule == undefined) {
758+
module.debug('Removed all rules');
759+
validation[field].rules = [];
760+
return;
761+
}
762+
if(validation[field] == undefined || !$.isArray(validation[field].rules)) {
763+
return;
764+
}
765+
$.each(validation[field].rules, function(index, rule) {
766+
if(rules.indexOf(rule.type) !== -1) {
767+
module.debug('Removed rule', rule.type);
768+
validation[field].rules.splice(index, 1);
769+
}
770+
});
771+
},
772+
field: function(field) {
773+
var
774+
fields = $.isArray(field)
775+
? field
776+
: [field]
777+
;
778+
$.each(fields, function(index, field) {
779+
module.remove.rule(field);
780+
});
781+
},
782+
// alias
783+
rules: function(field, rules) {
784+
if($.isArray(field)) {
785+
$.each(fields, function(index, field) {
786+
module.remove.rule(field, rules);
787+
});
788+
}
789+
else {
790+
module.remove.rule(field, rules);
791+
}
792+
},
793+
fields: function(fields) {
794+
module.remove.field(fields);
795+
},
696796
prompt: function(identifier) {
697797
var
698798
$field = module.get.field(identifier),
@@ -857,7 +957,7 @@ $.fn.form = function(parameters) {
857957
if(typeof field == 'string') {
858958
module.verbose('Validating field', field);
859959
fieldName = field;
860-
field = validation[field];
960+
field = validation[field];
861961
}
862962
var
863963
identifier = field.identifier || fieldName,

0 commit comments

Comments
 (0)