Closed bekworks closed 1 year ago
Hej @bekworks
Tak for henvendelsen!
Vi har oprettet en sag på det og vil vende tilbage når vi har kigget nærmere på det.
Med venlig hilsen Kristina Jensen Det Fælles Designsystem
Hej @bekworks,
Vi har tilføjet dokumentation på funktioner på kodesiden for Datovælgeren i den kommende v8.0, som kan hjælpe til at få fat i de rette elementer.
Der er tale om javascript funktionen DKFDS.datePicker.getDatePickerContext(ELEMENT)
, hvor man kan sende et vilkårligt element fra datovælgeren med, som så returnerer et objekt med alle elementer tilknyttet datovælgeren. På den måde kan man både få fat i internal og external input elementer, og herfra sætte eventlisteners på de rette elementer.
Datovælgeren er baseret på USWDS' datepicker komponent. Vi har indtil videre valgt ikke at ændre i datovælgeren som foreslået, da der er nyere versioner af datovælgeren hos USWDS som vi gerne vil opdatere til samt features vi gerne vil understøtte i vores egen datovælger. Der er blandt andet tale om en til/fra version af datovælgeren.
Med venlig hilsen Kristina Jensen Det Fælles Designsystem
Navn i designsystemet (Feature name in the design system) Datovælger
Link til det der skal opdateres (URL to what needs to be updated) https://designsystem.dk/kode/komponenter/datovaelger/ https://github.com/detfaellesdesignsystem/dkfds-components/blob/master/src/js/components/date-picker.js
Skyldes dit forslag et problem? Beskriv venligst. (Is your update request related to a problem? Please describe.) Vi er løbet ind i 3 problemer ved brug af Datovælger:
Lidt flere detaljer og baggrund for hvorfor disse er vigtige
(1) Enter KeyUp Event Hvis Datovælger er det sidste element i en form der skal indsendes, og hvis brugeren ikke ønsker at bruge kalender-funktionen, men derimod manuelt indtaste en dato, kan brugeren ikke ved brug af "Enter" knappen, indsende formularen. I vores tilfælde har vi brug for at kunne køre validering på formen som en helhed og herefter indsende den, når der trykkes på "Enter" knappen.
(2, 3) Change Event, forkert data og manglende emits For at sikre god UX, har vi i vores løsning en validering der kører på alle indtastningsfelter, der ved ugyldigt input viser en fejlbesked efter enten 1 sekund eller ved blur event. Dette gør vi for at undgå aggressive fejlbeskeder, imens brugeren er ved at indtaste information. - Når brugeren fortsætter med sin indtastning, fjerner vi fejlbeskeden og starter forfra med valideringen.
Denne valideringsform afhænger af det Change Event der emittes fra Datovælger input feltet, men den nuværende Datovælger emitter kun 2 states: Korrekt dato og ukorrekt dato efter en korrekt dato allerede var indtastet. Dette efterlader os uden validering:
Dette kan observeres ved at bruge følgende steps:
details.value
details.value
ikke er korrekt jf. hvad der står i feltetBeskriv det du gerne ser ske. (Describe the solution you'd like) Der er to måder at løse problemet på:
Eller
Sidstnævnte vil nok være den hurtigste løsning, hvor førstnævnte vil være den korrekte løsning, så man følger konventionelle retningslinjer for brug af events (der skal aldrig blokeres for events, med mindre komponenten afhænger af det for at kunne fungere)
Beskriv de alternativer du har overvejet. (Describe alternatives you've considered)
Det er muligt at lave en timer der kører på siden, ca. hver 50ms der henter værdien udfra DOM elementet, men rent performance mæssigt er det ikke en holdbar løsning, hvorfor vi har været nødsaget til at benytte os af en helt anden kalenderløsning.