@atlaskit/link-datasource 2.8.0 → 2.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/cjs/hooks/useDatasourceTableState.js +54 -39
  3. package/dist/cjs/state/index.js +68 -0
  4. package/dist/cjs/ui/assets-modal/modal/index.js +8 -5
  5. package/dist/cjs/ui/common/modal/datasource-modal/createDatasourceModal.js +55 -0
  6. package/dist/cjs/ui/common/modal/datasources-table-in-modal-preview/index.js +13 -2
  7. package/dist/cjs/ui/common/modal/insert-button/index.js +5 -4
  8. package/dist/cjs/ui/confluence-search-modal/modal/index.js +36 -39
  9. package/dist/cjs/ui/datasource-table-view/datasourceTableView.js +3 -2
  10. package/dist/cjs/ui/jira-issues-modal/modal/index.js +142 -211
  11. package/dist/es2019/hooks/useDatasourceTableState.js +15 -5
  12. package/dist/es2019/state/index.js +55 -0
  13. package/dist/es2019/ui/assets-modal/modal/index.js +9 -6
  14. package/dist/es2019/ui/common/modal/datasource-context/index.js +1 -1
  15. package/dist/es2019/ui/common/modal/datasource-modal/createDatasourceModal.js +51 -0
  16. package/dist/es2019/ui/common/modal/datasources-table-in-modal-preview/index.js +9 -2
  17. package/dist/es2019/ui/common/modal/insert-button/index.js +5 -4
  18. package/dist/es2019/ui/confluence-search-modal/modal/index.js +36 -39
  19. package/dist/es2019/ui/datasource-table-view/datasourceTableView.js +4 -3
  20. package/dist/es2019/ui/jira-issues-modal/modal/index.js +134 -202
  21. package/dist/esm/hooks/useDatasourceTableState.js +54 -39
  22. package/dist/esm/state/index.js +61 -0
  23. package/dist/esm/ui/assets-modal/modal/index.js +9 -6
  24. package/dist/esm/ui/common/modal/datasource-modal/createDatasourceModal.js +48 -0
  25. package/dist/esm/ui/common/modal/datasources-table-in-modal-preview/index.js +10 -2
  26. package/dist/esm/ui/common/modal/insert-button/index.js +5 -4
  27. package/dist/esm/ui/confluence-search-modal/modal/index.js +39 -42
  28. package/dist/esm/ui/datasource-table-view/datasourceTableView.js +4 -3
  29. package/dist/esm/ui/jira-issues-modal/modal/index.js +147 -216
  30. package/dist/types/common/types.d.ts +2 -1
  31. package/dist/types/state/index.d.ts +21 -0
  32. package/dist/types/ui/common/modal/datasource-context/index.d.ts +9 -12
  33. package/dist/types/ui/common/modal/datasource-modal/createDatasourceModal.d.ts +15 -0
  34. package/dist/types/ui/common/modal/insert-button/index.d.ts +4 -2
  35. package/dist/types/ui/confluence-search-modal/basic-filters/filters/date-range-picker/PopupComponent.d.ts +1 -1
  36. package/dist/types/ui/confluence-search-modal/modal/index.d.ts +3 -4
  37. package/dist/types/ui/confluence-search-modal/types.d.ts +6 -1
  38. package/dist/types/ui/jira-issues-modal/modal/index.d.ts +3 -3
  39. package/dist/types/ui/jira-issues-modal/types.d.ts +3 -0
  40. package/dist/types-ts4.5/common/types.d.ts +2 -1
  41. package/dist/types-ts4.5/state/index.d.ts +21 -0
  42. package/dist/types-ts4.5/ui/common/modal/datasource-context/index.d.ts +9 -12
  43. package/dist/types-ts4.5/ui/common/modal/datasource-modal/createDatasourceModal.d.ts +15 -0
  44. package/dist/types-ts4.5/ui/common/modal/insert-button/index.d.ts +4 -2
  45. package/dist/types-ts4.5/ui/confluence-search-modal/basic-filters/filters/date-range-picker/PopupComponent.d.ts +1 -1
  46. package/dist/types-ts4.5/ui/confluence-search-modal/modal/index.d.ts +3 -4
  47. package/dist/types-ts4.5/ui/confluence-search-modal/types.d.ts +6 -1
  48. package/dist/types-ts4.5/ui/jira-issues-modal/modal/index.d.ts +3 -3
  49. package/dist/types-ts4.5/ui/jira-issues-modal/types.d.ts +3 -0
  50. package/package.json +5 -1
@@ -1,11 +1,16 @@
1
1
  import { type DatasourceAdf, type InlineCardAdf } from '@atlaskit/linking-common/types';
2
- import type { DatasourceParameters } from '@atlaskit/linking-types';
2
+ import { type DatasourceParameters } from '@atlaskit/linking-types';
3
3
  import { type ConfigModalProps } from '../../common/types';
4
+ import { type ConnectedConfigModalProps } from '../common/modal/datasource-modal/createDatasourceModal';
4
5
  import { type DateRangeType } from '../common/modal/popup-select/types';
5
6
  export interface ConfluenceSearchConfigModalProps extends ConfigModalProps<InlineCardAdf | ConfluenceSearchDatasourceAdf, DatasourceParameters | ConfluenceSearchDatasourceParameters> {
6
7
  disableDisplayDropdown?: boolean;
7
8
  overrideParameters?: Pick<ConfluenceSearchDatasourceParameters, 'entityTypes'>;
8
9
  }
10
+ export interface ConnectedConfluenceSearchConfigModalProps extends ConnectedConfigModalProps<ConfluenceSearchDatasourceParameters> {
11
+ disableDisplayDropdown?: boolean;
12
+ overrideParameters?: Pick<ConfluenceSearchDatasourceParameters, 'entityTypes'>;
13
+ }
9
14
  export type ConfluenceSearchDatasourceParameters = {
10
15
  cloudId: string;
11
16
  searchString?: string;
@@ -1,3 +1,3 @@
1
- /// <reference types="react" />
2
- import type { JiraConfigModalProps } from '../types';
3
- export declare const JiraIssuesConfigModal: import("react").ForwardRefExoticComponent<JiraConfigModalProps & import("@atlaskit/analytics-next").WithContextProps & import("react").RefAttributes<any>>;
1
+ import { jsx } from '@emotion/react';
2
+ import { type JiraConfigModalProps } from '../types';
3
+ export declare const JiraIssuesConfigModal: (props: JiraConfigModalProps) => jsx.JSX.Element;
@@ -1,6 +1,7 @@
1
1
  import { type DatasourceAdf, type InlineCardAdf } from '@atlaskit/linking-common/types';
2
2
  import { type DatasourceParameters } from '@atlaskit/linking-types';
3
3
  import { type ConfigModalProps } from '../../common/types';
4
+ import { type ConnectedConfigModalProps } from '../common/modal/datasource-modal/createDatasourceModal';
4
5
  type XOR<T1, T2> = (T1 & {
5
6
  [k in Exclude<keyof T2, keyof T1>]?: never;
6
7
  }) | (T2 & {
@@ -17,4 +18,6 @@ export type JiraIssueDatasourceParameters = {
17
18
  export type JiraIssuesDatasourceAdf = DatasourceAdf<JiraIssueDatasourceParameters>;
18
19
  export interface JiraConfigModalProps extends ConfigModalProps<InlineCardAdf | DatasourceAdf, DatasourceParameters | JiraIssueDatasourceParameters> {
19
20
  }
21
+ export interface ConnectedJiraConfigModalProps extends ConnectedConfigModalProps<JiraIssueDatasourceParameters> {
22
+ }
20
23
  export {};
@@ -7,6 +7,7 @@ export interface Site {
7
7
  url: string;
8
8
  }
9
9
  export type DisplayViewModes = 'table' | 'inline';
10
+ export type OnInsertFunction<ADF> = (adf: ADF, analyticsEvent?: UIAnalyticsEvent) => void;
10
11
  export type ConfigModalProps<ADF, Parameters> = {
11
12
  /** Unique identifier for which type of datasource is being rendered and for making its requests */
12
13
  datasourceId: string;
@@ -17,7 +18,7 @@ export type ConfigModalProps<ADF, Parameters> = {
17
18
  /** Callback function to be invoked when the modal is closed either via cancel button click, esc keydown, or modal blanket click */
18
19
  onCancel: () => void;
19
20
  /** Callback function to be invoked when the insert issues button is clicked */
20
- onInsert: (adf: ADF, analyticsEvent?: UIAnalyticsEvent) => void;
21
+ onInsert: OnInsertFunction<ADF>;
21
22
  /**
22
23
  * The view mode that the modal will show on open:
23
24
  * - Table = Displays a list of links in table format
@@ -0,0 +1,21 @@
1
+ /// <reference types="react" />
2
+ import { type Action } from 'react-sweet-state';
3
+ import { type DatasourceDataResponseItem } from '@atlaskit/linking-types';
4
+ export interface State {
5
+ items: Record<string, DatasourceDataResponseItem>;
6
+ }
7
+ export declare const actions: {
8
+ onAddItems: (items: DatasourceDataResponseItem[]) => Action<State, void, string[]>;
9
+ };
10
+ export declare const Store: import("react-sweet-state").Store<State, {
11
+ onAddItems: (items: DatasourceDataResponseItem[]) => Action<State, void, string[]>;
12
+ }>;
13
+ export declare const useDatasourceItem: import("react-sweet-state").HookStateFunction<DatasourceDataResponseItem | undefined, {
14
+ id: string;
15
+ }>;
16
+ export declare const useDatasourceActions: import("react-sweet-state").HookActionsFunction<import("react-sweet-state").BoundActions<State, {
17
+ onAddItems: (items: DatasourceDataResponseItem[]) => Action<State, void, string[]>;
18
+ }>>;
19
+ export declare const StoreContainer: ({ children }: {
20
+ children: JSX.Element;
21
+ }) => JSX.Element;
@@ -1,30 +1,27 @@
1
1
  import React, { type PropsWithChildren } from 'react';
2
- import { type UIAnalyticsEvent } from '@atlaskit/analytics-next';
3
2
  import { type DatasourceAdf, type InlineCardAdf } from '@atlaskit/linking-common';
4
3
  import type { DatasourceParameters } from '@atlaskit/linking-types';
4
+ import { type OnInsertFunction } from '../../../../common/types';
5
5
  import { type DatasourceTableState } from '../../../../hooks/useDatasourceTableState';
6
6
  import type { ColumnSizesMap } from '../../../issue-like-table/types';
7
7
  import { type ColumnResizeProps } from '../datasources-table-in-modal-preview/use-column-resize';
8
8
  import { type ColumnVisibilityProps } from '../datasources-table-in-modal-preview/use-column-visibility';
9
9
  import { type ColumnWrappingProps } from '../datasources-table-in-modal-preview/use-column-wrapping';
10
- type DatasourceContextStore = ColumnVisibilityProps & ColumnWrappingProps & ColumnResizeProps & {
11
- datasourceId: string;
12
- isValidParameters: (params: DatasourceParameters | undefined) => boolean;
10
+ type DatasourceContextValue<Parameters extends DatasourceParameters = DatasourceParameters> = ColumnVisibilityProps & ColumnWrappingProps & ColumnResizeProps & Pick<DatasourceContextProviderProps<Parameters>, 'datasourceId' | 'onInsert' | 'isValidParameters'> & {
13
11
  tableState: DatasourceTableState;
14
12
  visibleColumnKeys?: string[];
15
- parameters: DatasourceParameters | undefined;
16
- setParameters: React.Dispatch<React.SetStateAction<DatasourceParameters | undefined>>;
17
- onInsert: (adf: InlineCardAdf | DatasourceAdf<any>, analyticsEvent?: UIAnalyticsEvent) => void;
13
+ parameters: Parameters | undefined;
14
+ setParameters: React.Dispatch<React.SetStateAction<Parameters | undefined>>;
18
15
  };
19
- export type Props = PropsWithChildren<{
16
+ type DatasourceContextProviderProps<Parameters extends DatasourceParameters> = PropsWithChildren<{
20
17
  datasourceId: string;
21
18
  isValidParameters: (params: DatasourceParameters | undefined) => boolean;
22
- initialParameters: DatasourceParameters | undefined;
19
+ initialParameters: Parameters | undefined;
23
20
  initialVisibleColumnKeys?: string[] | undefined;
24
21
  initialWrappedColumnKeys?: string[] | undefined;
25
22
  initialColumnCustomSizes?: ColumnSizesMap | undefined;
26
- onInsert: (adf: InlineCardAdf | DatasourceAdf<any>, analyticsEvent?: UIAnalyticsEvent) => void;
23
+ onInsert: OnInsertFunction<InlineCardAdf | DatasourceAdf<Parameters>>;
27
24
  }>;
28
- export declare const DatasourceContextProvider: ({ children, datasourceId, isValidParameters, initialParameters, initialVisibleColumnKeys, initialColumnCustomSizes, initialWrappedColumnKeys, onInsert, }: Props) => JSX.Element;
29
- export declare const useDatasourceContext: () => DatasourceContextStore;
25
+ export declare const DatasourceContextProvider: <Parameters extends DatasourceParameters>({ children, datasourceId, isValidParameters, initialParameters, initialVisibleColumnKeys, initialColumnCustomSizes, initialWrappedColumnKeys, onInsert, }: DatasourceContextProviderProps<Parameters>) => JSX.Element;
26
+ export declare const useDatasourceContext: <Parameters extends DatasourceParameters>() => DatasourceContextValue<Parameters>;
30
27
  export {};
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @jsxRuntime classic
3
+ * @jsx jsx
4
+ */
5
+ import React from 'react';
6
+ import { jsx } from '@emotion/react';
7
+ import { type DatasourceAdf, type InlineCardAdf } from '@atlaskit/linking-common';
8
+ import { type DatasourceParameters } from '@atlaskit/linking-types';
9
+ import { type ConfigModalProps } from '../../../../common/types';
10
+ export type ConnectedConfigModalProps<Parameters extends DatasourceParameters> = Omit<ConfigModalProps<DatasourceAdf<Parameters> | InlineCardAdf, Parameters>, 'onInsert' | 'parameters'>;
11
+ export declare const createDatasourceModal: <Parameters extends DatasourceParameters>({ isValidParameters, dataProvider, component: ModalContent, }: {
12
+ isValidParameters: (params: DatasourceParameters | undefined) => boolean;
13
+ dataProvider: string;
14
+ component: React.ComponentType<ConnectedConfigModalProps<Parameters>>;
15
+ }) => (props: ConfigModalProps<DatasourceAdf<Parameters> | InlineCardAdf, DatasourceParameters | Parameters>) => jsx.JSX.Element;
@@ -4,9 +4,11 @@
4
4
  */
5
5
  import { type PropsWithChildren } from 'react';
6
6
  import { jsx } from '@emotion/react';
7
- export type InsertButtonProps = PropsWithChildren<{
7
+ import { type DatasourceParameters } from '@atlaskit/linking-types';
8
+ export type InsertButtonProps<Parameters extends DatasourceParameters> = PropsWithChildren<{
8
9
  testId: string;
9
10
  url: string | undefined;
10
11
  getAnalyticsPayload: () => Record<string, any>;
12
+ overwriteParameters?: (parameters: Parameters) => Parameters;
11
13
  }>;
12
- export declare const InsertButton: ({ testId, url, getAnalyticsPayload, children }: InsertButtonProps) => jsx.JSX.Element;
14
+ export declare const InsertButton: <Parameters extends DatasourceParameters>({ testId, url, getAnalyticsPayload, overwriteParameters, children, }: InsertButtonProps<Parameters>) => jsx.JSX.Element;
@@ -1,3 +1,3 @@
1
1
  import React from 'react';
2
2
  import type { PopupComponentProps } from '@atlaskit/popup';
3
- export declare const PopupComponent: React.ForwardRefExoticComponent<Pick<PopupComponentProps, "style" | "data-testid" | "children" | "id" | "tabIndex" | "role" | "shouldFitContainer" | "shouldRenderToParent" | "data-placement"> & React.RefAttributes<HTMLDivElement>>;
3
+ export declare const PopupComponent: React.ForwardRefExoticComponent<Pick<PopupComponentProps, "id" | "children" | "style" | "data-testid" | "tabIndex" | "role" | "shouldFitContainer" | "shouldRenderToParent" | "data-placement"> & React.RefAttributes<HTMLDivElement>>;
@@ -1,5 +1,4 @@
1
- /// <reference types="react" />
2
1
  import { jsx } from '@emotion/react';
3
- import { type ConfluenceSearchConfigModalProps } from '../types';
4
- export declare const PlainConfluenceSearchConfigModal: (props: ConfluenceSearchConfigModalProps) => jsx.JSX.Element;
5
- export declare const ConfluenceSearchConfigModal: import("react").ForwardRefExoticComponent<ConfluenceSearchConfigModalProps & import("@atlaskit/analytics-next").WithContextProps & import("react").RefAttributes<any>>;
2
+ import { type ConfluenceSearchConfigModalProps, type ConnectedConfluenceSearchConfigModalProps } from '../types';
3
+ export declare const PlainConfluenceSearchConfigModal: (props: ConnectedConfluenceSearchConfigModalProps) => jsx.JSX.Element;
4
+ export declare const ConfluenceSearchConfigModal: (props: ConfluenceSearchConfigModalProps) => jsx.JSX.Element;
@@ -1,11 +1,16 @@
1
1
  import { type DatasourceAdf, type InlineCardAdf } from '@atlaskit/linking-common/types';
2
- import type { DatasourceParameters } from '@atlaskit/linking-types';
2
+ import { type DatasourceParameters } from '@atlaskit/linking-types';
3
3
  import { type ConfigModalProps } from '../../common/types';
4
+ import { type ConnectedConfigModalProps } from '../common/modal/datasource-modal/createDatasourceModal';
4
5
  import { type DateRangeType } from '../common/modal/popup-select/types';
5
6
  export interface ConfluenceSearchConfigModalProps extends ConfigModalProps<InlineCardAdf | ConfluenceSearchDatasourceAdf, DatasourceParameters | ConfluenceSearchDatasourceParameters> {
6
7
  disableDisplayDropdown?: boolean;
7
8
  overrideParameters?: Pick<ConfluenceSearchDatasourceParameters, 'entityTypes'>;
8
9
  }
10
+ export interface ConnectedConfluenceSearchConfigModalProps extends ConnectedConfigModalProps<ConfluenceSearchDatasourceParameters> {
11
+ disableDisplayDropdown?: boolean;
12
+ overrideParameters?: Pick<ConfluenceSearchDatasourceParameters, 'entityTypes'>;
13
+ }
9
14
  export type ConfluenceSearchDatasourceParameters = {
10
15
  cloudId: string;
11
16
  searchString?: string;
@@ -1,3 +1,3 @@
1
- /// <reference types="react" />
2
- import type { JiraConfigModalProps } from '../types';
3
- export declare const JiraIssuesConfigModal: import("react").ForwardRefExoticComponent<JiraConfigModalProps & import("@atlaskit/analytics-next").WithContextProps & import("react").RefAttributes<any>>;
1
+ import { jsx } from '@emotion/react';
2
+ import { type JiraConfigModalProps } from '../types';
3
+ export declare const JiraIssuesConfigModal: (props: JiraConfigModalProps) => jsx.JSX.Element;
@@ -1,6 +1,7 @@
1
1
  import { type DatasourceAdf, type InlineCardAdf } from '@atlaskit/linking-common/types';
2
2
  import { type DatasourceParameters } from '@atlaskit/linking-types';
3
3
  import { type ConfigModalProps } from '../../common/types';
4
+ import { type ConnectedConfigModalProps } from '../common/modal/datasource-modal/createDatasourceModal';
4
5
  type XOR<T1, T2> = (T1 & {
5
6
  [k in Exclude<keyof T2, keyof T1>]?: never;
6
7
  }) | (T2 & {
@@ -17,4 +18,6 @@ export type JiraIssueDatasourceParameters = {
17
18
  export type JiraIssuesDatasourceAdf = DatasourceAdf<JiraIssueDatasourceParameters>;
18
19
  export interface JiraConfigModalProps extends ConfigModalProps<InlineCardAdf | DatasourceAdf, DatasourceParameters | JiraIssueDatasourceParameters> {
19
20
  }
21
+ export interface ConnectedJiraConfigModalProps extends ConnectedConfigModalProps<JiraIssueDatasourceParameters> {
22
+ }
20
23
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/link-datasource",
3
- "version": "2.8.0",
3
+ "version": "2.9.1",
4
4
  "description": "UI Components to support linking platform dataset feature",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",
@@ -85,6 +85,7 @@
85
85
  "debounce-promise": "^3.1.2",
86
86
  "lodash": "^4.17.21",
87
87
  "react-dom": "^16.8.0",
88
+ "react-sweet-state": "^2.6.5",
88
89
  "tiny-invariant": "^1.2.0",
89
90
  "use-debounce": "^3.4.0",
90
91
  "uuid": "^3.1.0"
@@ -151,6 +152,9 @@
151
152
  "./elements": "./src/elements.ts"
152
153
  },
153
154
  "platform-feature-flags": {
155
+ "enable_datasource_react_sweet_state": {
156
+ "type": "boolean"
157
+ },
154
158
  "platform.linking-platform.datasource.add-timezone-header": {
155
159
  "type": "boolean",
156
160
  "referenceOnly": "true"