aria function

Map<String, String> aria({
  1. AriaRole? role,
  2. String? label,
  3. String? labelledBy,
  4. String? labelledby,
  5. String? describedBy,
  6. String? describedby,
  7. String? details,
  8. String? errorMessage,
  9. String? errormessage,
  10. String? flowTo,
  11. String? flowto,
  12. String? controls,
  13. String? owns,
  14. bool? hidden,
  15. bool? expanded,
  16. bool? selected,
  17. bool? checked,
  18. AriaChecked? checkedState,
  19. bool? pressed,
  20. AriaPressed? pressedState,
  21. bool? disabled,
  22. bool? required,
  23. bool? readOnly,
  24. bool? readonly,
  25. bool? modal,
  26. bool? multiselectable,
  27. bool? multiLine,
  28. bool? multiline,
  29. bool? busy,
  30. bool? atomic,
  31. bool? invalid,
  32. AriaInvalid? invalidState,
  33. AriaLive? live,
  34. AriaCurrent? current,
  35. AriaHasPopup? hasPopup,
  36. AriaHasPopup? haspopup,
  37. AriaOrientation? orientation,
  38. AriaAutocomplete? autocomplete,
  39. AriaSort? sort,
  40. AriaRelevant? relevant,
  41. int? level,
  42. int? setSize,
  43. int? setsize,
  44. int? posInSet,
  45. int? posinset,
  46. int? colIndex,
  47. int? rowIndex,
  48. int? colSpan,
  49. int? rowSpan,
  50. num? valueMin,
  51. num? valuemin,
  52. num? valueMax,
  53. num? valuemax,
  54. num? valueNow,
  55. num? valuenow,
  56. String? valueText,
  57. String? valuetext,
  58. String? keyShortcuts,
  59. String? keyshortcuts,
  60. String? placeholder,
  61. String? roleDescription,
  62. String? roledescription,
  63. Map<String, String>? extra,
})

Generates a map of WAI-ARIA and accessibility attributes.

Only non-null parameters are included in the returned map. Boolean parameters are serialized as "true" or "false".

Compose directly with element attrs:

Button(
  attrs: {
    ...aria(
      role: AriaRole.button,
      label: 'Close dialog',
      expanded: false,
      controls: 'settings-modal',
    ),
    'id': 'close-btn',
  },
  text: 'Close',
)

Implementation

Map<String, String> aria({
  AriaRole? role,
  String? label,
  String? labelledBy,
  String? labelledby,
  String? describedBy,
  String? describedby,
  String? details,
  String? errorMessage,
  String? errormessage,
  String? flowTo,
  String? flowto,
  String? controls,
  String? owns,
  bool? hidden,
  bool? expanded,
  bool? selected,
  bool? checked,
  AriaChecked? checkedState,
  bool? pressed,
  AriaPressed? pressedState,
  bool? disabled,
  bool? required,
  bool? readOnly,
  bool? readonly,
  bool? modal,
  bool? multiselectable,
  bool? multiLine,
  bool? multiline,
  bool? busy,
  bool? atomic,
  bool? invalid,
  AriaInvalid? invalidState,
  AriaLive? live,
  AriaCurrent? current,
  AriaHasPopup? hasPopup,
  AriaHasPopup? haspopup,
  AriaOrientation? orientation,
  AriaAutocomplete? autocomplete,
  AriaSort? sort,
  AriaRelevant? relevant,
  int? level,
  int? setSize,
  int? setsize,
  int? posInSet,
  int? posinset,
  int? colIndex,
  int? rowIndex,
  int? colSpan,
  int? rowSpan,
  num? valueMin,
  num? valuemin,
  num? valueMax,
  num? valuemax,
  num? valueNow,
  num? valuenow,
  String? valueText,
  String? valuetext,
  String? keyShortcuts,
  String? keyshortcuts,
  String? placeholder,
  String? roleDescription,
  String? roledescription,
  Map<String, String>? extra,
}) {
  final out = <String, String>{};

  if (role != null) out['role'] = role.value;
  if (label != null) out['aria-label'] = label;

  final effLabelledBy = labelledBy ?? labelledby;
  if (effLabelledBy != null) out['aria-labelledby'] = effLabelledBy;

  final effDescribedBy = describedBy ?? describedby;
  if (effDescribedBy != null) out['aria-describedby'] = effDescribedBy;

  if (details != null) out['aria-details'] = details;

  final effErrorMessage = errorMessage ?? errormessage;
  if (effErrorMessage != null) out['aria-errormessage'] = effErrorMessage;

  final effFlowTo = flowTo ?? flowto;
  if (effFlowTo != null) out['aria-flowto'] = effFlowTo;

  if (controls != null) out['aria-controls'] = controls;
  if (owns != null) out['aria-owns'] = owns;

  if (hidden != null) out['aria-hidden'] = hidden ? 'true' : 'false';
  if (expanded != null) out['aria-expanded'] = expanded ? 'true' : 'false';
  if (selected != null) out['aria-selected'] = selected ? 'true' : 'false';

  final effChecked = checkedState?.value ?? (checked != null ? (checked ? 'true' : 'false') : null);
  if (effChecked != null) out['aria-checked'] = effChecked;

  final effPressed = pressedState?.value ?? (pressed != null ? (pressed ? 'true' : 'false') : null);
  if (effPressed != null) out['aria-pressed'] = effPressed;

  if (disabled != null) out['aria-disabled'] = disabled ? 'true' : 'false';
  if (required != null) out['aria-required'] = required ? 'true' : 'false';

  final effReadOnly = readOnly ?? readonly;
  if (effReadOnly != null) out['aria-readonly'] = effReadOnly ? 'true' : 'false';

  if (modal != null) out['aria-modal'] = modal ? 'true' : 'false';
  if (multiselectable != null) {
    out['aria-multiselectable'] = multiselectable ? 'true' : 'false';
  }

  final effMultiLine = multiLine ?? multiline;
  if (effMultiLine != null) {
    out['aria-multiline'] = effMultiLine ? 'true' : 'false';
  }

  if (busy != null) out['aria-busy'] = busy ? 'true' : 'false';
  if (atomic != null) out['aria-atomic'] = atomic ? 'true' : 'false';

  final effInvalid = invalidState?.value ?? (invalid != null ? (invalid ? 'true' : 'false') : null);
  if (effInvalid != null) out['aria-invalid'] = effInvalid;

  if (live != null) out['aria-live'] = live.value;
  if (current != null) out['aria-current'] = current.value;

  final effHasPopup = hasPopup ?? haspopup;
  if (effHasPopup != null) out['aria-haspopup'] = effHasPopup.value;

  if (orientation != null) out['aria-orientation'] = orientation.value;
  if (autocomplete != null) out['aria-autocomplete'] = autocomplete.value;
  if (sort != null) out['aria-sort'] = sort.value;
  if (relevant != null) out['aria-relevant'] = relevant.value;

  if (level != null) out['aria-level'] = level.toString();

  final effSetSize = setSize ?? setsize;
  if (effSetSize != null) out['aria-setsize'] = effSetSize.toString();

  final effPosInSet = posInSet ?? posinset;
  if (effPosInSet != null) out['aria-posinset'] = effPosInSet.toString();

  if (colIndex != null) out['aria-colindex'] = colIndex.toString();
  if (rowIndex != null) out['aria-rowindex'] = rowIndex.toString();
  if (colSpan != null) out['aria-colspan'] = colSpan.toString();
  if (rowSpan != null) out['aria-rowspan'] = rowSpan.toString();

  final effValueMin = valueMin ?? valuemin;
  if (effValueMin != null) out['aria-valuemin'] = _formatNum(effValueMin);

  final effValueMax = valueMax ?? valuemax;
  if (effValueMax != null) out['aria-valuemax'] = _formatNum(effValueMax);

  final effValueNow = valueNow ?? valuenow;
  if (effValueNow != null) out['aria-valuenow'] = _formatNum(effValueNow);

  final effValueText = valueText ?? valuetext;
  if (effValueText != null) out['aria-valuetext'] = effValueText;

  final effKeyShortcuts = keyShortcuts ?? keyshortcuts;
  if (effKeyShortcuts != null) out['aria-keyshortcuts'] = effKeyShortcuts;

  if (placeholder != null) out['aria-placeholder'] = placeholder;

  final effRoleDescription = roleDescription ?? roledescription;
  if (effRoleDescription != null) {
    out['aria-roledescription'] = effRoleDescription;
  }

  if (extra != null) {
    out.addAll(extra);
  }

  return out;
}