do these by overriding setInfoState something like this

    setInfoState(...) {
      var prevTouched = touched;
      var prevDirty = dirty;
      super.setInfoState(...);
      if (touched != prevTouch) ....
      if (dirty != prevDirty) ...
    }