@atlaskit/link-datasource 1.27.4 → 1.28.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 (117) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/cjs/services/mocks.js +152 -1
  3. package/dist/cjs/services/useBasicFilterAGG.js +9 -2
  4. package/dist/cjs/services/utils.js +3 -2
  5. package/dist/cjs/ui/common/modal/popup-select/formatOptionLabel.js +6 -3
  6. package/dist/cjs/ui/common/modal/popup-select/index.js +2 -1
  7. package/dist/cjs/ui/common/modal/popup-select/trigger.js +1 -2
  8. package/dist/cjs/ui/confluence-search-modal/basic-filters/filters/date-range-picker/PopupComponent.js +19 -0
  9. package/dist/cjs/ui/confluence-search-modal/basic-filters/filters/date-range-picker/index.js +89 -0
  10. package/dist/cjs/ui/confluence-search-modal/basic-filters/filters/date-range-picker/messages.js +49 -0
  11. package/dist/cjs/ui/confluence-search-modal/basic-filters/filters/date-range-picker/styled.js +75 -0
  12. package/dist/cjs/ui/confluence-search-modal/basic-filters/filters/date-range-picker/trigger.js +32 -0
  13. package/dist/cjs/ui/confluence-search-modal/basic-filters/filters/edited-or-created-by/index.js +110 -0
  14. package/dist/cjs/ui/confluence-search-modal/basic-filters/filters/edited-or-created-by/messages.js +14 -0
  15. package/dist/cjs/ui/confluence-search-modal/basic-filters/hooks/useCurrentUserInfo.js +48 -0
  16. package/dist/cjs/ui/confluence-search-modal/basic-filters/hooks/useRecommendation.js +120 -0
  17. package/dist/cjs/ui/confluence-search-modal/basic-filters/index.js +14 -3
  18. package/dist/cjs/ui/confluence-search-modal/basic-filters/types.js +11 -0
  19. package/dist/cjs/ui/confluence-search-modal/confluence-search-container/index.js +25 -1
  20. package/dist/cjs/ui/confluence-search-modal/modal/index.js +41 -11
  21. package/dist/cjs/ui/datasource-table-view/datasourceTableView.js +1 -0
  22. package/dist/cjs/ui/table-footer/index.js +8 -2
  23. package/dist/cjs/ui/table-footer/messages.js +5 -0
  24. package/dist/cjs/ui/table-footer/powered-by-jsm-assets/index.js +53 -0
  25. package/dist/es2019/services/mocks.js +151 -0
  26. package/dist/es2019/services/useBasicFilterAGG.js +8 -3
  27. package/dist/es2019/services/utils.js +8 -0
  28. package/dist/es2019/ui/common/modal/popup-select/formatOptionLabel.js +6 -3
  29. package/dist/es2019/ui/common/modal/popup-select/index.js +1 -1
  30. package/dist/es2019/ui/common/modal/popup-select/trigger.js +1 -2
  31. package/dist/es2019/ui/confluence-search-modal/basic-filters/filters/date-range-picker/PopupComponent.js +7 -0
  32. package/dist/es2019/ui/confluence-search-modal/basic-filters/filters/date-range-picker/index.js +68 -0
  33. package/dist/es2019/ui/confluence-search-modal/basic-filters/filters/date-range-picker/messages.js +43 -0
  34. package/dist/es2019/ui/confluence-search-modal/basic-filters/filters/date-range-picker/styled.js +66 -0
  35. package/dist/es2019/ui/confluence-search-modal/basic-filters/filters/date-range-picker/trigger.js +26 -0
  36. package/dist/es2019/ui/confluence-search-modal/basic-filters/filters/edited-or-created-by/index.js +82 -0
  37. package/dist/es2019/ui/confluence-search-modal/basic-filters/filters/edited-or-created-by/messages.js +8 -0
  38. package/dist/es2019/ui/confluence-search-modal/basic-filters/hooks/useCurrentUserInfo.js +25 -0
  39. package/dist/es2019/ui/confluence-search-modal/basic-filters/hooks/useRecommendation.js +74 -0
  40. package/dist/es2019/ui/confluence-search-modal/basic-filters/index.js +17 -2
  41. package/dist/es2019/ui/confluence-search-modal/basic-filters/types.js +5 -0
  42. package/dist/es2019/ui/confluence-search-modal/confluence-search-container/index.js +20 -1
  43. package/dist/es2019/ui/confluence-search-modal/modal/index.js +27 -3
  44. package/dist/es2019/ui/datasource-table-view/datasourceTableView.js +1 -0
  45. package/dist/es2019/ui/table-footer/index.js +7 -1
  46. package/dist/es2019/ui/table-footer/messages.js +5 -0
  47. package/dist/es2019/ui/table-footer/powered-by-jsm-assets/index.js +45 -0
  48. package/dist/esm/services/mocks.js +151 -0
  49. package/dist/esm/services/useBasicFilterAGG.js +10 -3
  50. package/dist/esm/services/utils.js +2 -1
  51. package/dist/esm/ui/common/modal/popup-select/formatOptionLabel.js +6 -3
  52. package/dist/esm/ui/common/modal/popup-select/index.js +2 -1
  53. package/dist/esm/ui/common/modal/popup-select/trigger.js +1 -2
  54. package/dist/esm/ui/confluence-search-modal/basic-filters/filters/date-range-picker/PopupComponent.js +9 -0
  55. package/dist/esm/ui/confluence-search-modal/basic-filters/filters/date-range-picker/index.js +79 -0
  56. package/dist/esm/ui/confluence-search-modal/basic-filters/filters/date-range-picker/messages.js +43 -0
  57. package/dist/esm/ui/confluence-search-modal/basic-filters/filters/date-range-picker/styled.js +68 -0
  58. package/dist/esm/ui/confluence-search-modal/basic-filters/filters/date-range-picker/trigger.js +25 -0
  59. package/dist/esm/ui/confluence-search-modal/basic-filters/filters/edited-or-created-by/index.js +100 -0
  60. package/dist/esm/ui/confluence-search-modal/basic-filters/filters/edited-or-created-by/messages.js +8 -0
  61. package/dist/esm/ui/confluence-search-modal/basic-filters/hooks/useCurrentUserInfo.js +41 -0
  62. package/dist/esm/ui/confluence-search-modal/basic-filters/hooks/useRecommendation.js +113 -0
  63. package/dist/esm/ui/confluence-search-modal/basic-filters/index.js +14 -3
  64. package/dist/esm/ui/confluence-search-modal/basic-filters/types.js +5 -0
  65. package/dist/esm/ui/confluence-search-modal/confluence-search-container/index.js +25 -1
  66. package/dist/esm/ui/confluence-search-modal/modal/index.js +41 -11
  67. package/dist/esm/ui/datasource-table-view/datasourceTableView.js +1 -0
  68. package/dist/esm/ui/table-footer/index.js +8 -2
  69. package/dist/esm/ui/table-footer/messages.js +5 -0
  70. package/dist/esm/ui/table-footer/powered-by-jsm-assets/index.js +46 -0
  71. package/dist/types/analytics/generated/analytics.types.d.ts +7 -0
  72. package/dist/types/services/mocks.d.ts +51 -0
  73. package/dist/types/services/useBasicFilterAGG.d.ts +2 -0
  74. package/dist/types/services/utils.d.ts +1 -0
  75. package/dist/types/ui/common/modal/popup-select/index.d.ts +1 -1
  76. package/dist/types/ui/common/modal/popup-select/types.d.ts +6 -1
  77. package/dist/types/ui/confluence-search-modal/basic-filters/filters/date-range-picker/PopupComponent.d.ts +3 -0
  78. package/dist/types/ui/confluence-search-modal/basic-filters/filters/date-range-picker/index.d.ts +8 -0
  79. package/dist/types/ui/confluence-search-modal/basic-filters/filters/date-range-picker/messages.d.ts +42 -0
  80. package/dist/types/ui/confluence-search-modal/basic-filters/filters/date-range-picker/styled.d.ts +31 -0
  81. package/dist/types/ui/confluence-search-modal/basic-filters/filters/date-range-picker/trigger.d.ts +10 -0
  82. package/dist/types/ui/confluence-search-modal/basic-filters/filters/edited-or-created-by/index.d.ts +10 -0
  83. package/dist/types/ui/confluence-search-modal/basic-filters/filters/edited-or-created-by/messages.d.ts +7 -0
  84. package/dist/types/ui/confluence-search-modal/basic-filters/hooks/useCurrentUserInfo.d.ts +7 -0
  85. package/dist/types/ui/confluence-search-modal/basic-filters/hooks/useRecommendation.d.ts +16 -0
  86. package/dist/types/ui/confluence-search-modal/basic-filters/index.d.ts +6 -1
  87. package/dist/types/ui/confluence-search-modal/basic-filters/types.d.ts +20 -0
  88. package/dist/types/ui/confluence-search-modal/confluence-search-container/index.d.ts +2 -1
  89. package/dist/types/ui/confluence-search-modal/types.d.ts +2 -1
  90. package/dist/types/ui/table-footer/index.d.ts +2 -1
  91. package/dist/types/ui/table-footer/messages.d.ts +5 -0
  92. package/dist/types/ui/table-footer/powered-by-jsm-assets/index.d.ts +4 -0
  93. package/dist/types-ts4.5/analytics/generated/analytics.types.d.ts +7 -0
  94. package/dist/types-ts4.5/services/mocks.d.ts +51 -0
  95. package/dist/types-ts4.5/services/useBasicFilterAGG.d.ts +2 -0
  96. package/dist/types-ts4.5/services/utils.d.ts +1 -0
  97. package/dist/types-ts4.5/ui/common/modal/popup-select/index.d.ts +1 -1
  98. package/dist/types-ts4.5/ui/common/modal/popup-select/types.d.ts +6 -1
  99. package/dist/types-ts4.5/ui/confluence-search-modal/basic-filters/filters/date-range-picker/PopupComponent.d.ts +3 -0
  100. package/dist/types-ts4.5/ui/confluence-search-modal/basic-filters/filters/date-range-picker/index.d.ts +8 -0
  101. package/dist/types-ts4.5/ui/confluence-search-modal/basic-filters/filters/date-range-picker/messages.d.ts +42 -0
  102. package/dist/types-ts4.5/ui/confluence-search-modal/basic-filters/filters/date-range-picker/styled.d.ts +31 -0
  103. package/dist/types-ts4.5/ui/confluence-search-modal/basic-filters/filters/date-range-picker/trigger.d.ts +10 -0
  104. package/dist/types-ts4.5/ui/confluence-search-modal/basic-filters/filters/edited-or-created-by/index.d.ts +10 -0
  105. package/dist/types-ts4.5/ui/confluence-search-modal/basic-filters/filters/edited-or-created-by/messages.d.ts +7 -0
  106. package/dist/types-ts4.5/ui/confluence-search-modal/basic-filters/hooks/useCurrentUserInfo.d.ts +7 -0
  107. package/dist/types-ts4.5/ui/confluence-search-modal/basic-filters/hooks/useRecommendation.d.ts +16 -0
  108. package/dist/types-ts4.5/ui/confluence-search-modal/basic-filters/index.d.ts +6 -1
  109. package/dist/types-ts4.5/ui/confluence-search-modal/basic-filters/types.d.ts +20 -0
  110. package/dist/types-ts4.5/ui/confluence-search-modal/confluence-search-container/index.d.ts +2 -1
  111. package/dist/types-ts4.5/ui/confluence-search-modal/types.d.ts +2 -1
  112. package/dist/types-ts4.5/ui/table-footer/index.d.ts +2 -1
  113. package/dist/types-ts4.5/ui/table-footer/messages.d.ts +5 -0
  114. package/dist/types-ts4.5/ui/table-footer/powered-by-jsm-assets/index.d.ts +4 -0
  115. package/examples-helpers/buildAssetsIssuesTable.tsx +71 -0
  116. package/examples-helpers/useAssetsTableProps.tsx +57 -0
  117. package/package.json +8 -2
@@ -0,0 +1,7 @@
1
+ import { UserInfo } from '../types';
2
+ interface useUserInfoState {
3
+ user?: UserInfo;
4
+ getCurrentUserInfo: () => Promise<void>;
5
+ }
6
+ export declare const useCurrentUserInfo: () => useUserInfoState;
7
+ export {};
@@ -0,0 +1,16 @@
1
+ import { FilterPopupSelectProps } from '../../../common/modal/popup-select';
2
+ import { SelectOption } from '../../../common/modal/popup-select/types';
3
+ interface FetchFilterOptionsProps {
4
+ cloudId: string;
5
+ userId: string;
6
+ searchTerm: string;
7
+ }
8
+ interface UserRecommendationState {
9
+ filterOptions: SelectOption[];
10
+ reset: () => void;
11
+ status: FilterPopupSelectProps['status'];
12
+ errors: unknown[];
13
+ fetchFilterOptions: (prop: FetchFilterOptionsProps) => Promise<any>;
14
+ }
15
+ declare const useRecommendation: () => UserRecommendationState;
16
+ export default useRecommendation;
@@ -1,5 +1,10 @@
1
1
  /// <reference types="react" />
2
+ import { SelectOption } from '../../common/modal/popup-select/types';
3
+ import { CLOLBasicFilters, SelectedOptionsMap } from './types';
2
4
  export interface BasicFilterContainerProps {
5
+ cloudId?: string;
6
+ selections: SelectedOptionsMap;
7
+ onChange: (filterType: CLOLBasicFilters, options: SelectOption[]) => void;
3
8
  }
4
- declare const BasicFilterContainer: ({}: BasicFilterContainerProps) => JSX.Element;
9
+ declare const BasicFilterContainer: ({ cloudId, onChange, selections, }: BasicFilterContainerProps) => JSX.Element;
5
10
  export default BasicFilterContainer;
@@ -0,0 +1,20 @@
1
+ import { SelectOption } from '../../common/modal/popup-select/types';
2
+ export interface UserInfo {
3
+ accountId: string;
4
+ id: string;
5
+ }
6
+ export interface UserInfoAGGResponse {
7
+ data?: {
8
+ me: {
9
+ user: UserInfo;
10
+ };
11
+ };
12
+ errors?: Array<object>;
13
+ }
14
+ export declare enum CLOLBasicFilters {
15
+ editedOrCreatedBy = "editedOrCreatedBy",
16
+ lastModified = "lastModified"
17
+ }
18
+ export type SelectedOptionsMap = {
19
+ [key in CLOLBasicFilters]?: SelectOption[];
20
+ };
@@ -1,9 +1,10 @@
1
1
  /// <reference types="react" />
2
+ import { SelectedOptionsMap } from '../basic-filters/types';
2
3
  interface Props {
3
4
  cloudId?: string;
4
5
  initialSearchValue?: string;
5
6
  isSearching: boolean;
6
- onSearch: (searchTerm: string) => void;
7
+ onSearch: (searchTerm: string, filters?: SelectedOptionsMap) => void;
7
8
  }
8
9
  declare const ConfluenceSearchContainer: ({ cloudId, initialSearchValue, isSearching, onSearch, }: Props) => JSX.Element;
9
10
  export default ConfluenceSearchContainer;
@@ -1,5 +1,6 @@
1
1
  import { DatasourceAdf, InlineCardAdf } from '@atlaskit/linking-common/types';
2
2
  import { ConfigModalProps } from '../../common/types';
3
+ import { DateRangeType } from '../common/modal/popup-select/types';
3
4
  export interface ConfluenceSearchConfigModalProps extends ConfigModalProps<InlineCardAdf | ConfluenceSearchDatasourceAdf, ConfluenceSearchDatasourceParameters> {
4
5
  disableDisplayDropdown?: boolean;
5
6
  overrideParameters?: Pick<ConfluenceSearchDatasourceParameters, 'entityTypes'>;
@@ -16,7 +17,7 @@ export type ConfluenceSearchDatasourceParameters = {
16
17
  containerStatus?: string[];
17
18
  contentStatuses?: string[];
18
19
  creatorAccountIds?: string[];
19
- lastModified?: 'today' | 'yesterday' | 'past7Days' | 'past30Days' | 'pastYear' | 'custom';
20
+ lastModified?: DateRangeType;
20
21
  lastModifiedFrom?: string;
21
22
  lastModifiedTo?: string;
22
23
  shouldMatchTitleOnly?: boolean;
@@ -1,8 +1,9 @@
1
1
  import { jsx } from '@emotion/react';
2
2
  export type TableFooterProps = {
3
+ datasourceId: string;
3
4
  itemCount?: number;
4
5
  onRefresh?: () => void;
5
6
  isLoading: boolean;
6
7
  url?: string;
7
8
  };
8
- export declare const TableFooter: ({ itemCount, onRefresh, isLoading, url, }: TableFooterProps) => jsx.JSX.Element | null;
9
+ export declare const TableFooter: ({ datasourceId, itemCount, onRefresh, isLoading, url, }: TableFooterProps) => jsx.JSX.Element | null;
@@ -14,4 +14,9 @@ export declare const footerMessages: {
14
14
  description: string;
15
15
  defaultMessage: string;
16
16
  };
17
+ powerByJSM: {
18
+ id: string;
19
+ description: string;
20
+ defaultMessage: string;
21
+ };
17
22
  };
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ export declare const PoweredByJSMAssets: (props: {
3
+ text: string;
4
+ }) => JSX.Element;
@@ -16,6 +16,10 @@ export type AnalyticsContextAttributesType = {
16
16
  dataProvider: 'jira-issues' | 'jsm-assets' | 'confluence-search';
17
17
  };
18
18
  export type DatasourceModalDialogViewedAttributesType = {};
19
+ export type LinkClickedPoweredByAttributesType = {
20
+ extensionKey: string;
21
+ componentHierarchy: string;
22
+ };
19
23
  export type ModalReadyDatasourceAttributesType = {
20
24
  instancesCount: number | null;
21
25
  schemasCount: number | null;
@@ -211,6 +215,9 @@ export type AnalyticsEventAttributes = {
211
215
  /**
212
216
  * Fired when the “show more” button inside the dropdown menu is clicked */
213
217
  'ui.button.clicked.basicSearchDropdown': ButtonClickedBasicSearchDropdownAttributesType;
218
+ /**
219
+ * Fired when the “show more” button inside the dropdown menu is clicked */
220
+ 'ui.link.clicked.poweredBy': LinkClickedPoweredByAttributesType;
214
221
  /**
215
222
  * Fired when search is initiated via the search icon or enter key press for aql editor input field. */
216
223
  'ui.aqlEditor.searched': AqlEditorSearchedAttributesType;
@@ -1,3 +1,54 @@
1
1
  import { FieldValuesResponse, HydrateResponse } from '../ui/jira-issues-modal/basic-filters/types';
2
2
  export declare const mockHydrateJqlResponse: HydrateResponse;
3
3
  export declare const mockFieldValuesResponse: FieldValuesResponse;
4
+ export declare const mockUserRecommendationsResponse: {
5
+ recommendedUsers: ({
6
+ entityType: string;
7
+ id: string;
8
+ name: string;
9
+ avatarUrl: string;
10
+ nickname: string;
11
+ matchPositions: {};
12
+ accessLevel: string;
13
+ accountStatus: string;
14
+ notMentionable: boolean;
15
+ userType: string;
16
+ attributes: {
17
+ isConfluenceExternalCollaborator: boolean;
18
+ };
19
+ email?: undefined;
20
+ locale?: undefined;
21
+ } | {
22
+ entityType: string;
23
+ id: string;
24
+ name: string;
25
+ email: string;
26
+ avatarUrl: string;
27
+ nickname: string;
28
+ matchPositions: {};
29
+ accessLevel: string;
30
+ accountStatus: string;
31
+ notMentionable: boolean;
32
+ locale: string;
33
+ userType: string;
34
+ attributes: {
35
+ isConfluenceExternalCollaborator: boolean;
36
+ };
37
+ } | {
38
+ entityType: string;
39
+ id: string;
40
+ name: string;
41
+ avatarUrl: string;
42
+ nickname: string;
43
+ matchPositions: {};
44
+ accessLevel: string;
45
+ accountStatus: string;
46
+ notMentionable: boolean;
47
+ locale: string;
48
+ userType: string;
49
+ attributes: {
50
+ isConfluenceExternalCollaborator: boolean;
51
+ };
52
+ email?: undefined;
53
+ })[];
54
+ };
@@ -1,3 +1,4 @@
1
+ import { UserInfoAGGResponse } from '../ui/confluence-search-modal/basic-filters/types';
1
2
  import { BasicFilterFieldType, FieldValuesResponse, HydrateResponse } from '../ui/jira-issues-modal/basic-filters/types';
2
3
  interface GetFieldValuesProps {
3
4
  cloudId: string;
@@ -9,5 +10,6 @@ interface GetFieldValuesProps {
9
10
  export declare const useBasicFilterAGG: () => {
10
11
  getHydratedJQL: (cloudId: string, jql: string) => Promise<HydrateResponse>;
11
12
  getFieldValues: ({ cloudId, jql, jqlTerm, searchString, pageCursor, }: GetFieldValuesProps) => Promise<FieldValuesResponse>;
13
+ getCurrentUserInfo: () => Promise<UserInfoAGGResponse>;
12
14
  };
13
15
  export {};
@@ -6,3 +6,4 @@
6
6
  */
7
7
  export declare const hydrateJQLQuery = "query hydrate($cloudId: ID!, $jql: String!) {\n jira {\n jqlBuilder(cloudId: $cloudId) {\n hydrateJqlQuery(query: $jql) {\n ... on JiraJqlHydratedQuery {\n fields {\n ... on JiraJqlQueryHydratedField {\n jqlTerm\n values {\n ... on JiraJqlQueryHydratedValue {\n values {\n ... on JiraJqlProjectFieldValue {\n jqlTerm\n displayName\n project {\n avatar {\n small\n }\n }\n }\n ... on JiraJqlStatusFieldValue {\n jqlTerm\n displayName\n statusCategory {\n colorName\n }\n }\n ... on JiraJqlIssueTypeFieldValue {\n jqlTerm\n displayName\n issueTypes {\n avatar {\n small\n }\n }\n }\n ... on JiraJqlUserFieldValue {\n jqlTerm\n displayName\n user {\n picture\n }\n }\n ... on JiraJqlGroupFieldValue {\n jqlTerm\n displayName\n group {\n name\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n}";
8
8
  export declare const fieldValuesQuery = "query fieldValues($cloudId: ID!, $first: Int = 10, $jqlTerm: String!, $jql: String!, $searchString: String!, $after: String) {\n jira {\n jqlBuilder(cloudId: $cloudId) {\n fieldValues(\n first: $first\n jqlTerm: $jqlTerm\n jqlContext: $jql\n searchString: $searchString\n after: $after\n ) {\n totalCount\n pageInfo {\n endCursor\n }\n edges {\n node {\n jqlTerm\n displayName\n ... on JiraJqlProjectFieldValue {\n project {\n avatar {\n small\n }\n }\n }\n ... on JiraJqlIssueTypeFieldValue {\n issueTypes {\n avatar {\n small\n }\n }\n }\n ... on JiraJqlStatusFieldValue {\n statusCategory {\n colorName\n }\n }\n ... on JiraJqlUserFieldValue {\n user {\n picture\n }\n }\n ... on JiraJqlGroupFieldValue {\n group {\n name\n }\n }\n }\n }\n }\n }\n }\n}";
9
+ export declare const userQuery = "query userQuery {\n me {\n user {\n id\n accountId\n }\n }\n}";
@@ -4,7 +4,7 @@ import { CustomMenuListProps } from './menu-list';
4
4
  import { SelectOption } from './types';
5
5
  export interface FilterPopupSelectProps {
6
6
  buttonLabel: string;
7
- totalCount: number;
7
+ totalCount?: number;
8
8
  filterName: string;
9
9
  isDisabled: boolean;
10
10
  showLoading: boolean;
@@ -18,5 +18,10 @@ export type AvatarLabelOption = OptionBase & {
18
18
  isSquare?: boolean;
19
19
  isGroup?: boolean;
20
20
  };
21
- export type SelectOption = IconLabelOption | LozengeLabelOption | AvatarLabelOption;
21
+ export type DateRangeType = 'anyTime' | 'today' | 'yesterday' | 'past7Days' | 'past30Days' | 'pastYear' | 'custom';
22
+ export type DateRangeOption = OptionBase & {
23
+ optionType: 'defaultOption';
24
+ value: DateRangeType;
25
+ };
26
+ export type SelectOption = IconLabelOption | LozengeLabelOption | AvatarLabelOption | DateRangeOption;
22
27
  export type FormatOptionLabel = (option: SelectOption) => ReactElement;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ import type { PopupComponentProps } from '@atlaskit/popup';
3
+ export declare const PopupComponent: React.ForwardRefExoticComponent<Pick<PopupComponentProps, "style" | "children" | "id" | "tabIndex" | "data-testid" | "shouldRenderToParent" | "data-placement"> & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ import { SelectOption } from '../../../../common/modal/popup-select/types';
3
+ import { CLOLBasicFilters } from '../../types';
4
+ interface DateRangeProps {
5
+ onSelectionChange: (filterType: CLOLBasicFilters, options: SelectOption[]) => void;
6
+ }
7
+ export declare const DateRangePicker: ({ onSelectionChange }: DateRangeProps) => JSX.Element;
8
+ export {};
@@ -0,0 +1,42 @@
1
+ export declare const dateRangeMessages: {
2
+ dateRangeTitle: {
3
+ id: string;
4
+ defaultMessage: string;
5
+ description: string;
6
+ };
7
+ dateRangeAnyTime: {
8
+ id: string;
9
+ defaultMessage: string;
10
+ description: string;
11
+ };
12
+ dateRangeToday: {
13
+ id: string;
14
+ defaultMessage: string;
15
+ description: string;
16
+ };
17
+ dateRangeYesterday: {
18
+ id: string;
19
+ defaultMessage: string;
20
+ description: string;
21
+ };
22
+ dateRangeLastWeek: {
23
+ id: string;
24
+ defaultMessage: string;
25
+ description: string;
26
+ };
27
+ dateRangeLastMonth: {
28
+ id: string;
29
+ defaultMessage: string;
30
+ description: string;
31
+ };
32
+ dateRangeLastYear: {
33
+ id: string;
34
+ defaultMessage: string;
35
+ description: string;
36
+ };
37
+ dateRangeCustom: {
38
+ id: string;
39
+ defaultMessage: string;
40
+ description: string;
41
+ };
42
+ };
@@ -0,0 +1,31 @@
1
+ /// <reference types="react" />
2
+ export declare const PopupComponentContainer: import("@emotion/styled").StyledComponent<{
3
+ theme?: import("@emotion/react").Theme | undefined;
4
+ as?: import("react").ElementType<any> | undefined;
5
+ }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
6
+ export declare const CustomDropdown: import("@emotion/styled").StyledComponent<{
7
+ theme?: import("@emotion/react").Theme | undefined;
8
+ as?: import("react").ElementType<any> | undefined;
9
+ }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
10
+ export declare const CustomDropdownItem: import("@emotion/styled").StyledComponent<{
11
+ theme?: import("@emotion/react").Theme | undefined;
12
+ as?: import("react").ElementType<any> | undefined;
13
+ } & {
14
+ isSelected: boolean;
15
+ }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
16
+ export declare const CustomDateWrapper: import("@emotion/styled").StyledComponent<{
17
+ theme?: import("@emotion/react").Theme | undefined;
18
+ as?: import("react").ElementType<any> | undefined;
19
+ }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
20
+ export declare const DatePickersWrapper: import("@emotion/styled").StyledComponent<{
21
+ theme?: import("@emotion/react").Theme | undefined;
22
+ as?: import("react").ElementType<any> | undefined;
23
+ }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
24
+ export declare const SelectDateRangeButton: import("@emotion/styled").StyledComponent<{
25
+ theme?: import("@emotion/react").Theme | undefined;
26
+ as?: import("react").ElementType<any> | undefined;
27
+ }, import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, {}>;
28
+ export declare const DateRangeErrorMessage: import("@emotion/styled").StyledComponent<{
29
+ theme?: import("@emotion/react").Theme | undefined;
30
+ as?: import("react").ElementType<any> | undefined;
31
+ }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
@@ -0,0 +1,10 @@
1
+ /// <reference types="react" />
2
+ import type { TriggerProps } from '@atlaskit/popup/types';
3
+ export interface PopupTriggerProps {
4
+ triggerProps: TriggerProps;
5
+ optionSelected: boolean;
6
+ label?: string;
7
+ selectedLabel?: string;
8
+ onClickButton: () => void;
9
+ }
10
+ export declare const PopupTrigger: ({ triggerProps, optionSelected, label, selectedLabel, onClickButton, }: PopupTriggerProps) => JSX.Element;
@@ -0,0 +1,10 @@
1
+ /// <reference types="react" />
2
+ import { SelectOption } from '../../../../common/modal/popup-select/types';
3
+ import { CLOLBasicFilters } from '../../types';
4
+ interface EditedOrCreatedByFilterProps {
5
+ cloudId?: string;
6
+ selection: SelectOption[];
7
+ onSelectionChange: (filterType: CLOLBasicFilters, selection: SelectOption[]) => void;
8
+ }
9
+ declare const EditedOrCreatedByFilter: ({ cloudId, onSelectionChange, selection, }: EditedOrCreatedByFilterProps) => JSX.Element;
10
+ export default EditedOrCreatedByFilter;
@@ -0,0 +1,7 @@
1
+ export declare const editedOrCreatedByMessage: {
2
+ buttonLabel: {
3
+ id: string;
4
+ description: string;
5
+ defaultMessage: string;
6
+ };
7
+ };
@@ -0,0 +1,7 @@
1
+ import { UserInfo } from '../types';
2
+ interface useUserInfoState {
3
+ user?: UserInfo;
4
+ getCurrentUserInfo: () => Promise<void>;
5
+ }
6
+ export declare const useCurrentUserInfo: () => useUserInfoState;
7
+ export {};
@@ -0,0 +1,16 @@
1
+ import { FilterPopupSelectProps } from '../../../common/modal/popup-select';
2
+ import { SelectOption } from '../../../common/modal/popup-select/types';
3
+ interface FetchFilterOptionsProps {
4
+ cloudId: string;
5
+ userId: string;
6
+ searchTerm: string;
7
+ }
8
+ interface UserRecommendationState {
9
+ filterOptions: SelectOption[];
10
+ reset: () => void;
11
+ status: FilterPopupSelectProps['status'];
12
+ errors: unknown[];
13
+ fetchFilterOptions: (prop: FetchFilterOptionsProps) => Promise<any>;
14
+ }
15
+ declare const useRecommendation: () => UserRecommendationState;
16
+ export default useRecommendation;
@@ -1,5 +1,10 @@
1
1
  /// <reference types="react" />
2
+ import { SelectOption } from '../../common/modal/popup-select/types';
3
+ import { CLOLBasicFilters, SelectedOptionsMap } from './types';
2
4
  export interface BasicFilterContainerProps {
5
+ cloudId?: string;
6
+ selections: SelectedOptionsMap;
7
+ onChange: (filterType: CLOLBasicFilters, options: SelectOption[]) => void;
3
8
  }
4
- declare const BasicFilterContainer: ({}: BasicFilterContainerProps) => JSX.Element;
9
+ declare const BasicFilterContainer: ({ cloudId, onChange, selections, }: BasicFilterContainerProps) => JSX.Element;
5
10
  export default BasicFilterContainer;
@@ -0,0 +1,20 @@
1
+ import { SelectOption } from '../../common/modal/popup-select/types';
2
+ export interface UserInfo {
3
+ accountId: string;
4
+ id: string;
5
+ }
6
+ export interface UserInfoAGGResponse {
7
+ data?: {
8
+ me: {
9
+ user: UserInfo;
10
+ };
11
+ };
12
+ errors?: Array<object>;
13
+ }
14
+ export declare enum CLOLBasicFilters {
15
+ editedOrCreatedBy = "editedOrCreatedBy",
16
+ lastModified = "lastModified"
17
+ }
18
+ export type SelectedOptionsMap = {
19
+ [key in CLOLBasicFilters]?: SelectOption[];
20
+ };
@@ -1,9 +1,10 @@
1
1
  /// <reference types="react" />
2
+ import { SelectedOptionsMap } from '../basic-filters/types';
2
3
  interface Props {
3
4
  cloudId?: string;
4
5
  initialSearchValue?: string;
5
6
  isSearching: boolean;
6
- onSearch: (searchTerm: string) => void;
7
+ onSearch: (searchTerm: string, filters?: SelectedOptionsMap) => void;
7
8
  }
8
9
  declare const ConfluenceSearchContainer: ({ cloudId, initialSearchValue, isSearching, onSearch, }: Props) => JSX.Element;
9
10
  export default ConfluenceSearchContainer;
@@ -1,5 +1,6 @@
1
1
  import { DatasourceAdf, InlineCardAdf } from '@atlaskit/linking-common/types';
2
2
  import { ConfigModalProps } from '../../common/types';
3
+ import { DateRangeType } from '../common/modal/popup-select/types';
3
4
  export interface ConfluenceSearchConfigModalProps extends ConfigModalProps<InlineCardAdf | ConfluenceSearchDatasourceAdf, ConfluenceSearchDatasourceParameters> {
4
5
  disableDisplayDropdown?: boolean;
5
6
  overrideParameters?: Pick<ConfluenceSearchDatasourceParameters, 'entityTypes'>;
@@ -16,7 +17,7 @@ export type ConfluenceSearchDatasourceParameters = {
16
17
  containerStatus?: string[];
17
18
  contentStatuses?: string[];
18
19
  creatorAccountIds?: string[];
19
- lastModified?: 'today' | 'yesterday' | 'past7Days' | 'past30Days' | 'pastYear' | 'custom';
20
+ lastModified?: DateRangeType;
20
21
  lastModifiedFrom?: string;
21
22
  lastModifiedTo?: string;
22
23
  shouldMatchTitleOnly?: boolean;
@@ -1,8 +1,9 @@
1
1
  import { jsx } from '@emotion/react';
2
2
  export type TableFooterProps = {
3
+ datasourceId: string;
3
4
  itemCount?: number;
4
5
  onRefresh?: () => void;
5
6
  isLoading: boolean;
6
7
  url?: string;
7
8
  };
8
- export declare const TableFooter: ({ itemCount, onRefresh, isLoading, url, }: TableFooterProps) => jsx.JSX.Element | null;
9
+ export declare const TableFooter: ({ datasourceId, itemCount, onRefresh, isLoading, url, }: TableFooterProps) => jsx.JSX.Element | null;
@@ -14,4 +14,9 @@ export declare const footerMessages: {
14
14
  description: string;
15
15
  defaultMessage: string;
16
16
  };
17
+ powerByJSM: {
18
+ id: string;
19
+ description: string;
20
+ defaultMessage: string;
21
+ };
17
22
  };
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ export declare const PoweredByJSMAssets: (props: {
3
+ text: string;
4
+ }) => JSX.Element;
@@ -0,0 +1,71 @@
1
+ import React, { useEffect } from 'react';
2
+
3
+ import { IntlMessagesProvider } from '@atlaskit/intl-messages-provider';
4
+ import { SmartCardProvider } from '@atlaskit/link-provider';
5
+ import { mockAssetsClientFetchRequests } from '@atlaskit/link-test-helpers/datasource';
6
+ import { DatasourceParameters } from '@atlaskit/linking-types';
7
+
8
+ import { DatasourceTableView } from '../src';
9
+ import { fetchMessagesForLocale } from '../src/common/utils/locale/fetch-messages-for-locale';
10
+ import { ASSETS_LIST_OF_LINKS_DATASOURCE_ID } from '../src/ui/assets-modal';
11
+ import { AssetsDatasourceParameters } from '../src/ui/assets-modal/types';
12
+
13
+ import SmartLinkClient from './smartLinkCustomClient';
14
+ import { useAssetsTableProps } from './useAssetsTableProps';
15
+
16
+ interface AssetsTableViewProps {
17
+ parameters?: DatasourceParameters;
18
+ mockDatasourceFetchRequest?: boolean;
19
+ }
20
+
21
+ const AssetsTableView = () => {
22
+ const datasourceParameters: AssetsDatasourceParameters = {
23
+ workspaceId: 'workspaceId',
24
+ aql: 'name like a',
25
+ schemaId: '2',
26
+ };
27
+
28
+ const {
29
+ visibleColumnKeys,
30
+ onVisibleColumnKeysChange,
31
+ columnCustomSizes,
32
+ onColumnResize,
33
+ wrappedColumnKeys,
34
+ onWrappedColumnChange,
35
+ } = useAssetsTableProps({
36
+ defaultColumnCustomSizes: {
37
+ people: 100,
38
+ },
39
+ });
40
+
41
+ return (
42
+ <DatasourceTableView
43
+ datasourceId={ASSETS_LIST_OF_LINKS_DATASOURCE_ID}
44
+ parameters={datasourceParameters}
45
+ visibleColumnKeys={visibleColumnKeys}
46
+ onVisibleColumnKeysChange={onVisibleColumnKeysChange}
47
+ columnCustomSizes={columnCustomSizes}
48
+ onColumnResize={onColumnResize}
49
+ onWrappedColumnChange={onWrappedColumnChange}
50
+ wrappedColumnKeys={wrappedColumnKeys}
51
+ />
52
+ );
53
+ };
54
+
55
+ export const ExampleAssetsIssuesTableView = ({
56
+ mockDatasourceFetchRequest = true,
57
+ }: AssetsTableViewProps) => {
58
+ useEffect(() => {
59
+ if (mockDatasourceFetchRequest) {
60
+ mockAssetsClientFetchRequests();
61
+ }
62
+ }, [mockDatasourceFetchRequest]);
63
+
64
+ return (
65
+ <IntlMessagesProvider loaderFn={fetchMessagesForLocale}>
66
+ <SmartCardProvider client={new SmartLinkClient()}>
67
+ <AssetsTableView />
68
+ </SmartCardProvider>
69
+ </IntlMessagesProvider>
70
+ );
71
+ };
@@ -0,0 +1,57 @@
1
+ import { useCallback, useState } from 'react';
2
+
3
+ import { assetsDefaultInitialVisibleColumnKeys } from '@atlaskit/link-test-helpers/datasource';
4
+
5
+ import { DatasourceTableViewProps } from '../src/ui/datasource-table-view/types';
6
+ import { ColumnSizesMap } from '../src/ui/issue-like-table/types';
7
+
8
+ export const useAssetsTableProps = (
9
+ props: { defaultColumnCustomSizes?: ColumnSizesMap } = {},
10
+ ): Required<
11
+ Pick<
12
+ DatasourceTableViewProps,
13
+ | 'visibleColumnKeys'
14
+ | 'onVisibleColumnKeysChange'
15
+ | 'wrappedColumnKeys'
16
+ | 'onWrappedColumnChange'
17
+ | 'onColumnResize'
18
+ >
19
+ > &
20
+ Pick<DatasourceTableViewProps, 'columnCustomSizes'> => {
21
+ const [visibleColumnKeys, onVisibleColumnKeysChange] = useState<string[]>(
22
+ assetsDefaultInitialVisibleColumnKeys,
23
+ );
24
+
25
+ const [columnCustomSizes, setColumnCustomSizes] = useState<
26
+ ColumnSizesMap | undefined
27
+ >(props.defaultColumnCustomSizes);
28
+
29
+ const onColumnResize = useCallback(
30
+ (key: string, width: number) => {
31
+ setColumnCustomSizes({ ...columnCustomSizes, [key]: width });
32
+ },
33
+ [columnCustomSizes],
34
+ );
35
+
36
+ const [wrappedColumnKeys, setWrappedColumnKeys] = useState<string[]>([]);
37
+
38
+ const onWrappedColumnChange = useCallback(
39
+ (key: string, shouldWrap: boolean) => {
40
+ if (shouldWrap) {
41
+ setWrappedColumnKeys([...wrappedColumnKeys, key]);
42
+ } else {
43
+ setWrappedColumnKeys(wrappedColumnKeys.filter(k => k !== key));
44
+ }
45
+ },
46
+ [wrappedColumnKeys],
47
+ );
48
+
49
+ return {
50
+ visibleColumnKeys,
51
+ onVisibleColumnKeysChange,
52
+ columnCustomSizes,
53
+ onColumnResize,
54
+ wrappedColumnKeys,
55
+ onWrappedColumnChange,
56
+ };
57
+ };