Diwa Design System

Input Week

A week-and-year picker input (YYYY-Www). Delegates to the native browser week picker. Supports min and max week constraints.

Keyboard interaction

KeyAction
TabMove focus to the week input.
Shift + TabMove focus away from the week input to the previous element.
Type digitsEnter week and year values directly into the focused segment.
Arrow Up / DownIncrement or decrement the currently focused week or year segment.
EnterOpen or close the native browser week picker dialog (Chromium only).

Screen reader behaviour

The following ARIA attributes are managed internally by the component:

PropertyValueNote
aria-required"true" when required is setCommunicates the required state to assistive technologies.
aria-invalid"true" when state="error"Signals a validation failure. Paired with aria-describedby pointing at the error message.
aria-describedbyID of the message or description elementLinks the error or description text to the input so screen readers announce it on focus.
aria-label / aria-labelledbyFrom label propAssociates the visible label with the inner <input type="week"> via Shadow DOM id association.

Label association

The label is associated with the inner <input type="week"> via Shadow DOM id association. Screen readers announce the label and the selected week on focus.

Native week picker

Chrome and Edge provide a native week picker. Firefox and Safari fall back to a plain text input. For non-Chromium browsers, communicate the expected format (YYYY-Www, e.g. 2025-W24) via the description prop so users know what to type.

Required fields

required adds a visual asterisk and aria-required="true".

Validation state

state="error" sets aria-invalid="true" and links the error message via aria-describedby.

Focus management

delegatesFocus: true routes host focus to the inner input. Reduced-motion styles respect prefers-reduced-motion.

WCAG 2.2 compliance

1.3.1 Info and Relationships — APass

Label, required indicator, and error message are all programmatically associated with the input via ARIA attributes.

1.4.3 Contrast (Minimum) — AAPass

Input text and label foreground colours meet the 4.5:1 minimum contrast ratio against the field background in both themes.

2.1.1 Keyboard — APass

All functionality is operable via keyboard. Week and year segments are adjustable with arrow keys in Chromium-based browsers.

2.4.7 Focus Visible — AAPass

A visible focus ring is applied on keyboard focus using :focus-visible styles.

3.3.1 Error Identification — APass

When state="error", the error message is linked via aria-describedby so screen readers announce it on focus.

4.1.2 Name, Role, Value — APass

The inner <input type="week"> exposes correct name, role, and value to assistive technologies via delegated focus and ARIA labelling.

Best practices

  • Reduced motion — all CSS transitions inside the shadow DOM respond to prefers-reduced-motion: reduce and are suppressed automatically.
  • Browser support — Chrome and Edge provide a native week picker; Firefox and Safari fall back to a plain text input. Always provide a description communicating the expected format ( YYYY-Www, e.g. 2025-W24) for non-Chromium users.
  • Error messaging — always pair state="error" with a meaningful message prop. Colour alone is insufficient for users who cannot distinguish red from other colours.