Focus on a Widget Annotation

You can set the focus on a widget annotation programmatically using the DOM API. The following example adds a custom toolbar item that focuses on a form field when clicked. Remember to adjust the selector with a valid form field name:

let instance = null;

PSPDFKit.load({
  ...defaultConfiguration,
  toolbarItems: [
    ...PSPDFKit.defaultToolbarItems,
    {
      type: "custom",
      title: "Focus",
      onPress() {
        instance.contentDocument
          .querySelector(
            ".PSPDFKit-Annotation-Widget[name='form field name']"
          )
          .focus();
      }
    }
  ]
}).then((_instance) => {
  instance = _instance;
});

If the widget annotation is associated with a text form field, you can also automatically set the selection to the end of the current value of the input using the HTMLInputElement.setSelectionRange method:

let instance = null;

PSPDFKit.load({
  ...defaultConfiguration,
  toolbarItems: [
    ...PSPDFKit.defaultToolbarItems,
    {
      type: "custom",
      title: "Focus",
      onPress() {
        const element = instance.contentDocument.querySelector(
          ".PSPDFKit-Annotation-Widget[name='form field name']"
        );
        element.focus();
        element.setSelectionRange(
          element.value.length,
          element.value.length
        );
      }
    }
  ]
}).then((_instance) => {
  instance = _instance;
});

This has been tested with PSPDFKit for Web 2019.5.4.