setAttribute method

  1. @override
void setAttribute(
  1. Node element,
  2. String attrName,
  3. String? attrVal
)
override

Implementation

@override
void setAttribute(Node element, String attrName, String? attrVal) {
  if (!element.isA<Element>()) return;

  var element2 = element as Element;

  switch (attrName) {
    case 'selected':
      {
        if (element2.isA<HTMLOptionElement>()) {
          (element2 as HTMLOptionElement).selected =
              _parseAttributeBoolValue(attrVal);
        } else {
          element2.setAttribute(attrName, attrVal!);
        }
        break;
      }
    case 'multiple':
      {
        if (element2.isA<HTMLSelectElement>()) {
          (element2 as HTMLSelectElement).multiple =
              _parseAttributeBoolValue(attrVal);
        } else if (element2.isA<HTMLInputElement>()) {
          (element2 as HTMLInputElement).multiple =
              _parseAttributeBoolValue(attrVal);
        } else {
          element2.setAttribute(attrName, attrVal!);
        }
        break;
      }
    case 'hidden':
      {
        if (element2.isA<HTMLElement>()) {
          (element2 as HTMLElement).hidden =
              _parseAttributeBoolValue(attrVal).toJS;
        }
        break;
      }
    case 'inert':
      {
        if (element2.isA<HTMLElement>()) {
          (element2 as HTMLElement).inert = _parseAttributeBoolValue(attrVal);
        }
        break;
      }
    default:
      {
        if (attrVal == null) {
          element2.removeAttribute(attrName);
        } else {
          switch (attrName) {
            case 'id':
              {
                element2.id = attrVal;
                break;
              }
            case 'class':
              {
                element2.className = attrVal;
                break;
              }
            case 'style':
              {
                element2.style?.cssText = attrVal;
                break;
              }
            default:
              {
                element2.setAttribute(attrName, attrVal);
                break;
              }
          }
        }
        break;
      }
  }
}