]> git.ipfire.org Git - thirdparty/paperless-ngx.git/commitdiff
Always accept yyyy-mm-dd date inputs 864/head
authorMichael Shamoon <4887959+shamoon@users.noreply.github.com>
Mon, 2 May 2022 04:38:04 +0000 (21:38 -0700)
committerMichael Shamoon <4887959+shamoon@users.noreply.github.com>
Mon, 2 May 2022 04:38:04 +0000 (21:38 -0700)
src-ui/src/app/utils/ngb-date-parser-formatter.ts

index ff77068192910015d7db9abdd7f3d35cf53d4d98..5d95b21a6d6274e8cc93d9b92d383bfb987d602e 100644 (file)
@@ -51,11 +51,22 @@ export class LocalizedDateParserFormatter extends NgbDateParserFormatter {
     const dateSeparator = inputFormat.replace(/[dmy]/gi, '').charAt(0)
 
     if (this.separatorRegExp.test(value)) {
-      // split on separator, pad & re-join without separator
-      value = value
-        .split(this.separatorRegExp)
-        .map((segment) => segment.padStart(2, '0'))
-        .join('')
+      let segments = value.split(this.separatorRegExp)
+
+      // always accept strict yyyy*mm*dd format even if thats not the input format since we can be certain its not yyyy*dd*mm
+      if (
+        value.length == 10 &&
+        segments.length == 3 &&
+        segments[0].length == 4
+      ) {
+        return inputFormat
+          .replace('yyyy', segments[0])
+          .replace('mm', segments[1])
+          .replace('dd', segments[2])
+      } else {
+        // otherwise pad & re-join without separator
+        value = segments.map((segment) => segment.padStart(2, '0')).join('')
+      }
     }
 
     if (value.length == 4 && inputFormat.substring(0, 4) != 'yyyy') {