Skip to content

bug(MaterialLuxonAdapter): Parsing format for some text inputs fails due to iso check before format check #28703

Open
@dylandrendel

Description

@dylandrendel

Is this a regression?

  • No

The previous version in which this bug was not present was

N/A

Description

In /src/material-luxon-adapter/adapter/luxon-date-adapter.ts#L174 the date is formatted with ISO before the user provided formats.

This leads to a bug where specific text inputs are not parsing correctly according to the user provided formats.

For example, I provide the format MMyyyy to the parse dateInputs array. This gets ignored for certain string inputs. One example is 082001. This gets parsed as yyyyMM by the ISO check before checking my provided formats array and returns incorrectly as 01/0820 instead of the desired 08/2001.

parse(value: any, parseFormat: string | string[]): LuxonDateTime | null {
    const iso8601Date = LuxonDateTime.fromISO(value, options);
    
    if (this.isValid(iso8601Date)) {
      return iso8601Date;
    }
    
    const formats = Array.isArray(parseFormat) ? parseFormat : [parseFormat];
    
    if (!parseFormat.length) {
      throw Error('Formats array must not be empty.');
    }
    
    for (const format of formats) {
      const fromFormat = LuxonDateTime.fromFormat(value, format, options);
    
      if (this.isValid(fromFormat)) {
        return fromFormat;
      }
    }

...

Reproduction

StackBlitz link: https://stackblitz.com/edit/ocbei5?file=package.json
Steps to reproduce:

  1. provide the format MMyyyy to the parse dateInputs array
  2. type 082001 into the date input with luxon date times and tab off to enter

Expected Behavior

Gets parsed correctly as 08/2001 and displays as 08/2001.

Actual Behavior

Gets parsed incorrectly by ISO check as 01/0820 and displays as 01/0820.

Environment

  • Angular: 16.0.4
  • CDK/Material:
    • "@angular/material": "^16.0.3",
    • "@angular/material-luxon-adapter": "^16.2.4",
  • Browser(s): Chrome
  • Operating System: macOS

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3An issue that is relevant to core functions, but does not impede progress. Important, but not urgentarea: material/datepicker

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions