summaryrefslogtreecommitdiffstats
path: root/packages/meteor-useraccounts-core/lib/templates_helpers/at_input.js
diff options
context:
space:
mode:
Diffstat (limited to 'packages/meteor-useraccounts-core/lib/templates_helpers/at_input.js')
-rw-r--r--packages/meteor-useraccounts-core/lib/templates_helpers/at_input.js124
1 files changed, 124 insertions, 0 deletions
diff --git a/packages/meteor-useraccounts-core/lib/templates_helpers/at_input.js b/packages/meteor-useraccounts-core/lib/templates_helpers/at_input.js
new file mode 100644
index 00000000..fe74eeb1
--- /dev/null
+++ b/packages/meteor-useraccounts-core/lib/templates_helpers/at_input.js
@@ -0,0 +1,124 @@
+AT.prototype.atInputRendered = [function(){
+ var fieldId = this.data._id;
+
+ var parentData = Template.currentData();
+ var state = (parentData && parentData.state) || AccountsTemplates.getState();
+
+ if (AccountsTemplates.options.focusFirstInput) {
+ var firstVisibleInput = _.find(AccountsTemplates.getFields(), function(f){
+ return _.contains(f.visible, state);
+ });
+
+ if (firstVisibleInput && firstVisibleInput._id === fieldId) {
+ this.$("input#at-field-" + fieldId).focus();
+ }
+ }
+}];
+
+AT.prototype.atInputHelpers = {
+ disabled: function() {
+ return AccountsTemplates.disabled();
+ },
+ showLabels: function() {
+ return AccountsTemplates.options.showLabels;
+ },
+ displayName: function() {
+ var parentData = Template.parentData();
+ var state = (parentData && parentData.state) || AccountsTemplates.getState();
+ var displayName = this.getDisplayName(state);
+ return T9n.get(displayName, markIfMissing=false);
+ },
+ optionalText: function(){
+ return "(" + T9n.get(AccountsTemplates.texts.optionalField, markIfMissing=false) + ")";
+ },
+ templateName: function() {
+ if (this.template)
+ return this.template;
+ if (this.type === "checkbox")
+ return "atCheckboxInput";
+ if (this.type === "select")
+ return "atSelectInput";
+ if (this.type === "radio")
+ return "atRadioInput";
+ if (this.type === "hidden")
+ return "atHiddenInput";
+ return "atTextInput";
+ },
+ values: function(){
+ var id = this._id;
+ return _.map(this.select, function(select){
+ var s = _.clone(select);
+ s._id = id + "-" + select.value;
+ s.id = id;
+ return s;
+ });
+ },
+ errorText: function() {
+ var err = this.getStatus();
+ return T9n.get(err, markIfMissing=false);
+ },
+ placeholder: function() {
+ if (AccountsTemplates.options.showPlaceholders) {
+ var parentData = Template.parentData();
+ var state = (parentData && parentData.state) || AccountsTemplates.getState();
+ var placeholder = this.getPlaceholder(state);
+ return T9n.get(placeholder, markIfMissing=false);
+ }
+ },
+};
+
+AT.prototype.atInputEvents = {
+ "focusin input": function(event, t){
+ var field = Template.currentData();
+ field.clearStatus();
+ },
+ "focusout input, change select": function(event, t){
+ var field = Template.currentData();
+ var fieldId = field._id;
+ var rawValue = field.getValue(t);
+ var value = field.fixValue(rawValue);
+ // Possibly updates the input value
+ if (value !== rawValue) {
+ field.setValue(t, value);
+ }
+
+ // Client-side only validation
+ if (!field.validation)
+ return;
+ var parentData = Template.parentData();
+ var state = (parentData && parentData.state) || AccountsTemplates.getState();
+ // No validation during signIn
+ if (state === "signIn")
+ return;
+ // Special case for password confirmation
+ if (value && fieldId === "password_again"){
+ if (value !== $("#at-field-password").val())
+ return field.setError(AccountsTemplates.texts.errors.pwdMismatch);
+ }
+ field.validate(value);
+ },
+ "keyup input": function(event, t){
+ var field = Template.currentData();
+ // Client-side only continuous validation
+ if (!field.continuousValidation)
+ return;
+ var parentData = Template.parentData();
+ var state = (parentData && parentData.state) || AccountsTemplates.getState();
+ // No validation during signIn
+ if (state === "signIn")
+ return;
+ var fieldId = field._id;
+ var rawValue = field.getValue(t);
+ var value = field.fixValue(rawValue);
+ // Possibly updates the input value
+ if (value !== rawValue) {
+ field.setValue(t, value);
+ }
+ // Special case for password confirmation
+ if (value && fieldId === "password_again"){
+ if (value !== $("#at-field-password").val())
+ return field.setError(AccountsTemplates.texts.errors.pwdMismatch);
+ }
+ field.validate(value);
+ },
+};