resolveElementValue method

String? resolveElementValue({
  1. UIComponent? parentUIComponent,
  2. UIComponent? uiComponent,
  3. bool allowTextAsValue = true,
  4. bool resolveUIComponents = true,
})

Resolves the value of this UIElement.

Implementation

String? resolveElementValue(
    {UIComponent? parentUIComponent,
    UIComponent? uiComponent,
    bool allowTextAsValue = true,
    bool resolveUIComponents = true}) {
  var self = this;

  if (self.isA<HTMLInputElement>() ||
      self.isA<HTMLTextAreaElement>() ||
      self.isA<HTMLSelectElement>()) {
    return resolveInputElementValue();
  }

  if (uiComponent == null && resolveUIComponents) {
    uiComponent = resolveUIComponent(parentUIComponent: parentUIComponent);
  }

  if (uiComponent != null) {
    if (uiComponent is UIField) {
      var uiField = uiComponent as UIField;
      var fieldValue = uiField.getFieldValue();
      return MapProperties.toStringValue(fieldValue);
    } else if (uiComponent is UIFieldMap) {
      var uiFieldMap = uiComponent as UIFieldMap;
      var fieldValue = uiFieldMap.getFieldMap();
      return MapProperties.toStringValue(fieldValue);
    }
  }

  var value = self.getAttribute('field_value');
  if (isEmptyObject(value) && allowTextAsValue) {
    value = self.textContent;
  }
  return value;
}