@atlassianlabs/jql-editor-forge

JQL Editor pre-integrated with autocomplete REST API's suitable for use in Forge custom UI apps.

Usage no npm install needed!

<script type="module">
  import atlassianlabsJqlEditorForge from 'https://cdn.skypack.dev/@atlassianlabs/jql-editor-forge';
</script>

README

JQL Editor for Forge

Atlassian license

This package allows Forge app developers to render a JQL Editor component to enable autocomplete-assisted authoring and validation of JQL queries in Forge custom UI apps. The component is pre-configured to fetch autocomplete data from Jira REST API's.

Usage

A minimal configuration of the JQL editor is as follows:

import { useCallback } from 'react';
import { JQLEditorForge } from '@atlassianlabs/jql-editor-forge';

const MyJQLEditor = () => {
  const onSearch = useCallback((jql: string) => {
    // Do some action on search    
  }, []);
  
  return (
    <JQLEditorForge
      query={''}
      onSearch={onSearch}
      locale={"en"} 
    />
  );
};

Installation

yarn add @atlassianlabs/jql-editor-forge

Documentation

JQLEditorForge is a thin wrapper on top of the @atlassianlabs/jql-editor package. Refer to the JQL editor documentation to see what other configuration options are available.

Forge permissions

Scopes

The JQL editor uses Jira Cloud REST API's to fetch autocomplete data which requires the read:jira-work scope in your manifest.yml.

Content Security Policy

By default, Forge custom UI apps block any policies that are considered unsafe by Atlassian (see Use custom content security policies). To use the JQL editor you'll need to include the styles: unsafe-inline policy in your app's manifest.yml. This is required by styled-components to embed JQL editor component styles into the page.

The following is an example of the required permissions block in your app's manifest.yml:

permissions:
  scopes:
    - 'read:jira-work'
  content:
    styles:
      - 'unsafe-inline'

What's missing?

This package does not yet support the same feature set available to the JQL editor used in Jira. The key exclusions are:

  1. User lozenges
    • The API's required to translate Atlassian account ID's to user display names is not yet available to third parties.
  2. Simplified loading of localised messages
    • Currently, to show non-english messages, consumers need to import the appropriate message set for the user's locale and render an IntlProvider in the React tree with the imported data. In the long term we'd like these localised messages to be loaded automatically based on the provided locale.

We intend to make these features available to third party apps in future but there is currently no roadmap/timeline for inclusion.

Support

For developers outside of Atlassian looking for help, or to report issues, please make a post on the community forum. We will monitor the forums and redirect topics to the appropriate maintainers.

License

Copyright (c) 2021 - 2022 Atlassian and others. Apache 2.0 licensed, see LICENSE file.