Throughout my entire app, I've tried to use autoform multiple times, but I think there is a real conflict between autoform and MaterializeCSS templates. Anyhow, I have been getting the following errors:
Schema:
import SimpleSchema from 'simpl-schema';
import { Materials } from '/imports/api/materials/materials.js';
import { PurchasesAPI } from '/imports/api/purchases/api.js';
import '../../ui/components/purchasing/purchasing-autocomplete-list-template.html';
export const purchasingCreatePurchaseSchema = new SimpleSchema({
userId: {
type: String,
autoValue: function () {
if (this.isInsert) {
console.log("this is insert");
console.log(Meteor.userId());
return Meteor.userId();
} else if (this.isUpsert) {
return { $setOnInsert: Meteor.userId() };
}
this.unset(); // Prevent user from supplying their own value
return undefined;
},
autoform: {
omit: true
}
},
createdOn: {
type: Date,
// defaultValue: new Date(),
autoValue: function () {
if (this.isInsert) {
return new Date();
}
this.unset(); // Prevent user from supplying their own value
return undefined;
},
autoform: {
omit: true
}
},
purchaseOrderNo: {
type: String,
autoValue: function () {
if (this.isInsert) {
return PurchasesAPI.newPurchaseOrder();
}
this.unset(); // Prevent user from supplying their own value
return undefined;
}
},
orderedDate: {
type: Date,
autoform: {
afFieldInput: {
class: 'datepicker'
}
}
},
supplier: {
type: String,
defaultValue: "Not Specified"
},
material: {
type: String,
autoform: {
afFieldInput: {
type: 'autocomplete-input',
placeholder: 'Material',
settings: function () {
return {
position: "top",
limit: 20,
rules: [
{
collection: Materials,
field: "material",
matchAll: true,
template: Template.Purchasing_material_item
}
]
}
}
}
}
},
orderConfirmationDate: {
type: Date,
optional: true,
autoform: {
afFieldInput: {
class: 'datepicker'
}
}
},
estimatedTimeOfArrival: {
type: Date,
optional: true,
autoform: {
afFieldInput: {
class: 'datepicker'
}
}
},
actualTimeOfArrival: {
type: Date,
optional: true,
autoform: {
afFieldInput: {
class: 'datepicker'
}
}
}
});
HTML
{{> quickForm schema=createPurchaseSchema id="createNewPurchase" type="normal" buttonContent="false"}}
When the submit button is pressed, I'm getting:
VM32227 aldeed_autoform.js:7702 Uncaught TypeError: ec.invalidKeys is not a function
at failedValidation (VM32227 aldeed_autoform.js:7702)
at Object.autoFormSubmitHandler (VM32227 aldeed_autoform.js:7836)
at VM32193 blaze.js:3775
at Function.Template._withTemplateInstanceFunc (VM32193 blaze.js:3744)
at Blaze.View.<anonymous> (VM32193 blaze.js:3774)
at VM32193 blaze.js:2617
at Object.Blaze._withCurrentView (VM32193 blaze.js:2271)
at Blaze._DOMRange.<anonymous> (VM32193 blaze.js:2616)
at HTMLFormElement.<anonymous> (VM32193 blaze.js:863)
at HTMLDivElement.dispatch (VM32156 modules.js:17882)
failedValidation @ VM32227 aldeed_autoform.js:7702
autoFormSubmitHandler @ VM32227 aldeed_autoform.js:7836
(anonymous) @ VM32193 blaze.js:3775
Template._withTemplateInstanceFunc @ VM32193 blaze.js:3744
(anonymous) @ VM32193 blaze.js:3774
(anonymous) @ VM32193 blaze.js:2617
Blaze._withCurrentView @ VM32193 blaze.js:2271
(anonymous) @ VM32193 blaze.js:2616
(anonymous) @ VM32193 blaze.js:863
dispatch @ VM32156 modules.js:17882
elemData.handle @ VM32156 modules.js:17690
Navigated to http://localhost:3000/purchasing/purchases/new-purchase?purchaseOrderNo=&orderedDate=&supplier=Not+Specified&material=&orderConfirmationDate=&estimatedTimeOfArrival=&actualTimeOfArrival=
My hooks are not firing either, if I try to overwrite the submit button with Template.Purchasing_new_purchase_form.events({ 'submit' : function() {...} })
It does not work either.
If someone can help me with this I'd be immensely grateful and hopefully I can start using more autoforms in my app, but currently I have simply coded the form from scratch, then apply manual validation without reactive validation. Is this an inherent problem with AutoForm or just something I'm doing wrong?
Managed to resolve this issue!
I updated Autoform to 6.3.0
, Simple-schema
to > 1.4, removed all other related autoform packages like autocomplete
, and autoform-materialize
and got things to work.