diff --git a/frontend-html/src/gui/Components/ScreenElements/Editors/DateCompleter.tsx b/frontend-html/src/gui/Components/ScreenElements/Editors/DateCompleter.tsx index 99934f994a..3c11bb409a 100644 --- a/frontend-html/src/gui/Components/ScreenElements/Editors/DateCompleter.tsx +++ b/frontend-html/src/gui/Components/ScreenElements/Editors/DateCompleter.tsx @@ -50,7 +50,8 @@ export default class DateCompleter { t.match(/^\d\d\d\s+\d\d\d\d$/) || t.match(/^\d\d\d\d?\s+\d\d$/) || t.match(/^\d\d\d\d\d\d\d\d\s+\d\d\d\d\d\d$/) || - t.match(new RegExp("^\\d\\d?" + this.dateSeparator + "\\d?\\d?" + this.dateSeparator + "?\\d?\\d?\\d?\\d? *\\d?\\d?:?\\d?\\d?:?\\d?\\d?$")) + t.match(new RegExp("^\\d\\d?\\" + this.dateSeparator + "\\d?\\d?\\" + this.dateSeparator + "?\\d?\\d?\\d?\\d?")) || + t.match(new RegExp("^\\d\\d?\\" + this.dateSeparator + "\\d?\\d?\\" + this.dateSeparator + "?\\d?\\d?\\d?\\d? +\\d?\\d?:?\\d?\\d?:?\\d?\\d?$")) ); } @@ -64,7 +65,8 @@ export default class DateCompleter { t.match(/^\d\d\d\d\s+\d\d$/) || t.match(/^\d\d\d\d\d\d\d\d \d\d\d\d\d\d$/) || t.match(/^\d\d?$/) || - t.match(new RegExp("^\\d\\d?" + this.dateSeparator + "\\d?\\d?" + this.dateSeparator + "?\\d?\\d?\\d?\\d? *\\d?\\d?:?\\d?\\d?:?\\d?\\d?$")) + t.match(new RegExp("^\\d\\d?\\" + this.dateSeparator + "\\d?\\d?\\" + this.dateSeparator + "?\\d?\\d?\\d?\\d?")) || + t.match(new RegExp("^\\d\\d?\\" + this.dateSeparator + "\\d?\\d?\\" + this.dateSeparator + "?\\d?\\d?\\d?\\d? +\\d?\\d?:?\\d?\\d?:?\\d?\\d?$")) ); } diff --git a/frontend-html/src/gui/Components/ScreenElements/Editors/DateTimeEditor/DateEditorModel.ts b/frontend-html/src/gui/Components/ScreenElements/Editors/DateTimeEditor/DateEditorModel.ts index 59aa19fed2..7540a2246d 100644 --- a/frontend-html/src/gui/Components/ScreenElements/Editors/DateTimeEditor/DateEditorModel.ts +++ b/frontend-html/src/gui/Components/ScreenElements/Editors/DateTimeEditor/DateEditorModel.ts @@ -46,7 +46,7 @@ export class DateEditorModel { await flow(function*() { const dateCompleter = self.getDateCompleter(); const completedMoment = dateCompleter.autoComplete(self.dirtyTextualValue); - if (completedMoment) { + if (completedMoment && completedMoment.isValid()) { yield self.onChange?.(event, toOrigamServerString(completedMoment)); } else if (self.hasValueChanged()) { @@ -120,7 +120,7 @@ export class DateEditorModel { isRefreshShortcut(event) ) { const completedMoment = this.autoCompletedMoment; - if (completedMoment) { + if (completedMoment && completedMoment.isValid()) { this.onChange?.(event, toOrigamServerString(completedMoment)); } else if (this.hasValueChanged()) { diff --git a/frontend-html/src/tests/DateTimeCompleter.test.ts b/frontend-html/src/tests/DateTimeCompleter.test.ts index c4653f7b4b..82a64f45dc 100644 --- a/frontend-html/src/tests/DateTimeCompleter.test.ts +++ b/frontend-html/src/tests/DateTimeCompleter.test.ts @@ -76,4 +76,22 @@ test.each([ ])('Should auto complete %s to: %s using dateCompleterCz', (incompleteDate, expected) => { const momentValue = dateCompleterCz.autoComplete(incompleteDate) expect(format(momentValue!, "DD.MM.YYYY HH:mm:ss")).toBe(expected); +}); + +test.each([ + ["12:30"], + ["12:30:14"], + ["12:30:14.16"], +])('Should not try to complete time alone using dateCompleterCz', (incompleteDate) => { + const momentValue = dateCompleterCz.autoComplete(incompleteDate) + expect(momentValue).toBe(undefined); +}); + +test.each([ + ["12:30"], + ["12:30:14"], + ["12:30:14.16"], +])('Should not try to complete time alone using dateCompleterUs', (incompleteDate) => { + const momentValue = dateCompleterUs.autoComplete(incompleteDate) + expect(momentValue).toBe(undefined); }); \ No newline at end of file