diff --git a/aurelia-slickgrid/src/aurelia-slickgrid/editors/dateEditor.ts b/aurelia-slickgrid/src/aurelia-slickgrid/editors/dateEditor.ts index b06dc563c..43ea1ece4 100644 --- a/aurelia-slickgrid/src/aurelia-slickgrid/editors/dateEditor.ts +++ b/aurelia-slickgrid/src/aurelia-slickgrid/editors/dateEditor.ts @@ -88,17 +88,26 @@ export class DateEditor implements Editor { loadValue(item: any) { this.defaultDate = item[this.args.column.field]; + this.flatInstance.setDate(item[this.args.column.field]); } serializeValue() { + const domValue: string = this.$input.val(); + + if (!domValue) return ''; + const outputFormat = mapMomentDateFormatWithFieldType(this.args.column.type || FieldType.dateIso); - const value = moment(this.defaultDate).format(outputFormat); + const value = moment(domValue).format(outputFormat); return value; } applyValue(item: any, state: any) { - item[this.args.column.field] = state; + if (!state) return; + + const outputFormat = mapMomentDateFormatWithFieldType(this.args.column.type || FieldType.dateIso); + + item[this.args.column.field] = moment(state, outputFormat).toDate(); } isValueChanged() { diff --git a/aurelia-slickgrid/src/aurelia-slickgrid/editors/singleSelectEditor.ts b/aurelia-slickgrid/src/aurelia-slickgrid/editors/singleSelectEditor.ts index bed47e619..7eb05ef19 100644 --- a/aurelia-slickgrid/src/aurelia-slickgrid/editors/singleSelectEditor.ts +++ b/aurelia-slickgrid/src/aurelia-slickgrid/editors/singleSelectEditor.ts @@ -119,7 +119,8 @@ export class SingleSelectEditor implements Editor { loadValue(item: any): void { // convert to string because that is how the DOM will return these values - this.defaultValue = item[this.columnDef.field].toString(); + // make sure the prop exists first + this.defaultValue = item[this.columnDef.field] && item[this.columnDef.field].toString(); this.$editorElm.find('option').each((i: number, $e: any) => { if (this.defaultValue === $e.value) {