@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,48 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useCurrentUserInfo = void 0;
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+ var _react = require("react");
12
+ var _useBasicFilterAGG2 = require("../../../../services/useBasicFilterAGG");
13
+ var useCurrentUserInfo = exports.useCurrentUserInfo = function useCurrentUserInfo() {
14
+ var _useState = (0, _react.useState)(),
15
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
16
+ user = _useState2[0],
17
+ setUser = _useState2[1];
18
+ var _useBasicFilterAGG = (0, _useBasicFilterAGG2.useBasicFilterAGG)(),
19
+ getCurrentUserInfoFromAGG = _useBasicFilterAGG.getCurrentUserInfo;
20
+ var getCurrentUserInfo = (0, _react.useCallback)( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
21
+ var _user$data;
22
+ var user, _user$data2;
23
+ return _regenerator.default.wrap(function _callee$(_context) {
24
+ while (1) switch (_context.prev = _context.next) {
25
+ case 0:
26
+ _context.next = 2;
27
+ return getCurrentUserInfoFromAGG();
28
+ case 2:
29
+ user = _context.sent;
30
+ if (user !== null && user !== void 0 && (_user$data = user.data) !== null && _user$data !== void 0 && _user$data.me.user) {
31
+ setUser((_user$data2 = user.data) === null || _user$data2 === void 0 ? void 0 : _user$data2.me.user);
32
+ } else {
33
+ setUser(undefined);
34
+ }
35
+ case 4:
36
+ case "end":
37
+ return _context.stop();
38
+ }
39
+ }, _callee);
40
+ })), [getCurrentUserInfoFromAGG]);
41
+ (0, _react.useEffect)(function () {
42
+ getCurrentUserInfo();
43
+ }, [getCurrentUserInfo]);
44
+ return {
45
+ user: user,
46
+ getCurrentUserInfo: getCurrentUserInfo
47
+ };
48
+ };
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+ var _react = require("react");
12
+ var _reactIntlNext = require("react-intl-next");
13
+ var _smartUserPicker = require("@atlaskit/smart-user-picker");
14
+ var useRecommendation = function useRecommendation() {
15
+ var intl = (0, _reactIntlNext.useIntl)();
16
+ var _useState = (0, _react.useState)([]),
17
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
18
+ filterOptions = _useState2[0],
19
+ setFilterOptions = _useState2[1];
20
+ var _useState3 = (0, _react.useState)('empty'),
21
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
22
+ status = _useState4[0],
23
+ setStatus = _useState4[1];
24
+ var _useState5 = (0, _react.useState)([]),
25
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
26
+ errors = _useState6[0],
27
+ setErrors = _useState6[1];
28
+ var initialData = (0, _react.useRef)();
29
+ var convertRecommendationsToFilterOptions = function convertRecommendationsToFilterOptions(recommendations) {
30
+ return recommendations.map(function (item) {
31
+ return {
32
+ optionType: 'avatarLabel',
33
+ label: item.name,
34
+ value: item.id,
35
+ avatar: item.avatarUrl
36
+ };
37
+ });
38
+ };
39
+ var fetchFilterOptions = (0, _react.useCallback)( /*#__PURE__*/function () {
40
+ var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(_ref) {
41
+ var userId, cloudId, searchTerm, requestParams, initialResponseData, isRequestLikeInitialSearch, recommendations;
42
+ return _regenerator.default.wrap(function _callee$(_context) {
43
+ while (1) switch (_context.prev = _context.next) {
44
+ case 0:
45
+ userId = _ref.userId, cloudId = _ref.cloudId, searchTerm = _ref.searchTerm;
46
+ setStatus('loading');
47
+ requestParams = {
48
+ context: {
49
+ contextType: 'contributors',
50
+ principalId: userId || '',
51
+ productAttributes: {
52
+ isEntitledConfluenceExternalCollaborator: true
53
+ },
54
+ productKey: 'confluence',
55
+ siteId: cloudId
56
+ },
57
+ includeGroups: false,
58
+ includeTeams: false,
59
+ includeUsers: true,
60
+ maxNumberOfResults: 10,
61
+ performSearchQueryOnly: false,
62
+ query: searchTerm
63
+ };
64
+ initialResponseData = initialData.current;
65
+ isRequestLikeInitialSearch = !searchTerm;
66
+ _context.prev = 5;
67
+ if (!(isRequestLikeInitialSearch && initialResponseData)) {
68
+ _context.next = 10;
69
+ break;
70
+ }
71
+ _context.t0 = initialResponseData;
72
+ _context.next = 13;
73
+ break;
74
+ case 10:
75
+ _context.next = 12;
76
+ return (0, _smartUserPicker.getUserRecommendations)(requestParams, intl);
77
+ case 12:
78
+ _context.t0 = _context.sent;
79
+ case 13:
80
+ recommendations = _context.t0;
81
+ setFilterOptions(convertRecommendationsToFilterOptions(recommendations));
82
+ setStatus('resolved');
83
+ if (!searchTerm) {
84
+ /**
85
+ * The initial dataset is used in couple of paths, eg: when a user searches and clears the search text.
86
+ * During these times, we dont want to fetch data again and again, hence a mini cache setup to store and provide the initial dataset
87
+ */
88
+ initialData.current = recommendations;
89
+ }
90
+ _context.next = 23;
91
+ break;
92
+ case 19:
93
+ _context.prev = 19;
94
+ _context.t1 = _context["catch"](5);
95
+ setStatus('rejected');
96
+ setErrors([_context.t1]);
97
+ case 23:
98
+ case "end":
99
+ return _context.stop();
100
+ }
101
+ }, _callee, null, [[5, 19]]);
102
+ }));
103
+ return function (_x) {
104
+ return _ref2.apply(this, arguments);
105
+ };
106
+ }(), [intl]);
107
+ var reset = (0, _react.useCallback)(function () {
108
+ setStatus('empty');
109
+ setFilterOptions([]);
110
+ setErrors([]);
111
+ }, []);
112
+ return {
113
+ status: status,
114
+ errors: errors,
115
+ filterOptions: filterOptions,
116
+ reset: reset,
117
+ fetchFilterOptions: fetchFilterOptions
118
+ };
119
+ };
120
+ var _default = exports.default = useRecommendation;
@@ -5,18 +5,29 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.default = void 0;
8
- var _objectDestructuringEmpty2 = _interopRequireDefault(require("@babel/runtime/helpers/objectDestructuringEmpty"));
9
8
  var _react = _interopRequireDefault(require("react"));
10
9
  var _primitives = require("@atlaskit/primitives");
10
+ var _dateRangePicker = require("./filters/date-range-picker");
11
+ var _editedOrCreatedBy = _interopRequireDefault(require("./filters/edited-or-created-by"));
11
12
  var basicFilterContainerStyles = (0, _primitives.xcss)({
12
13
  paddingLeft: 'space.100'
13
14
  });
14
15
  var BasicFilterContainer = function BasicFilterContainer(_ref) {
15
- (0, _objectDestructuringEmpty2.default)(_ref);
16
+ var cloudId = _ref.cloudId,
17
+ onChange = _ref.onChange,
18
+ _ref$selections = _ref.selections,
19
+ selections = _ref$selections === void 0 ? {} : _ref$selections;
20
+ var editedOrCreatedBy = selections.editedOrCreatedBy;
16
21
  return /*#__PURE__*/_react.default.createElement(_primitives.Flex, {
17
22
  xcss: basicFilterContainerStyles,
18
23
  gap: "space.100",
19
24
  testId: "clol-basic-filter-container"
20
- }, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null), /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null));
25
+ }, /*#__PURE__*/_react.default.createElement(_editedOrCreatedBy.default, {
26
+ cloudId: cloudId,
27
+ onSelectionChange: onChange,
28
+ selection: editedOrCreatedBy || []
29
+ }), /*#__PURE__*/_react.default.createElement(_dateRangePicker.DateRangePicker, {
30
+ onSelectionChange: onChange
31
+ }));
21
32
  };
22
33
  var _default = exports.default = BasicFilterContainer;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.CLOLBasicFilters = void 0;
7
+ var CLOLBasicFilters = exports.CLOLBasicFilters = /*#__PURE__*/function (CLOLBasicFilters) {
8
+ CLOLBasicFilters["editedOrCreatedBy"] = "editedOrCreatedBy";
9
+ CLOLBasicFilters["lastModified"] = "lastModified";
10
+ return CLOLBasicFilters;
11
+ }({});
@@ -6,15 +6,20 @@ Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.default = void 0;
9
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
10
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
11
  var _react = _interopRequireWildcard(require("react"));
12
+ var _useDebounce = require("use-debounce");
11
13
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
12
14
  var _primitives = require("@atlaskit/primitives");
13
15
  var _basicSearchInput = require("../../common/modal/basic-search-input");
16
+ var _constants = require("../../common/modal/popup-select/constants");
14
17
  var _basicFilters = _interopRequireDefault(require("../basic-filters"));
15
18
  var _messages = require("./messages");
16
19
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
17
20
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
21
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
22
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
18
23
  var basicSearchInputContainerStyles = (0, _primitives.xcss)({
19
24
  flexGrow: 1
20
25
  });
@@ -28,16 +33,31 @@ var ConfluenceSearchContainer = function ConfluenceSearchContainer(_ref) {
28
33
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
29
34
  searchBarSearchString = _useState2[0],
30
35
  setSearchBarSearchString = _useState2[1];
36
+ var _useState3 = (0, _react.useState)({}),
37
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
38
+ filterSelections = _useState4[0],
39
+ setFilterSelections = _useState4[1];
31
40
  var handleSearchChange = (0, _react.useCallback)(function (e) {
32
41
  var rawSearch = e.currentTarget.value;
33
42
  setSearchBarSearchString(rawSearch);
34
43
  }, []);
44
+ var _useDebouncedCallback = (0, _useDebounce.useDebouncedCallback)(function (filterValues) {
45
+ onSearch(searchBarSearchString, filterValues);
46
+ }, _constants.FILTER_SELECTION_DEBOUNCE_MS),
47
+ _useDebouncedCallback2 = (0, _slicedToArray2.default)(_useDebouncedCallback, 1),
48
+ debouncedBasicFilterSelectionChange = _useDebouncedCallback2[0];
49
+ var handleBasicFilterSelectionChange = (0, _react.useCallback)(function (filterType, options) {
50
+ var updatedSelection = _objectSpread(_objectSpread({}, filterSelections), {}, (0, _defineProperty2.default)({}, filterType, options));
51
+ setFilterSelections(updatedSelection);
52
+ debouncedBasicFilterSelectionChange(updatedSelection);
53
+ }, [debouncedBasicFilterSelectionChange, filterSelections]);
35
54
 
36
55
  // TODO: further refactoring in EDM-9573
37
56
  // https://stash.atlassian.com/projects/ATLASSIAN/repos/atlassian-frontend-monorepo/pull-requests/82725/overview?commentId=6827913
38
57
  (0, _react.useEffect)(function () {
39
58
  if (currentCloudId.current !== cloudId) {
40
59
  setSearchBarSearchString('');
60
+ setFilterSelections({});
41
61
  currentCloudId.current = cloudId;
42
62
  }
43
63
  }, [cloudId]);
@@ -58,6 +78,10 @@ var ConfluenceSearchContainer = function ConfluenceSearchContainer(_ref) {
58
78
  searchTerm: searchBarSearchString,
59
79
  placeholder: _messages.searchMessages.searchLabel,
60
80
  fullWidth: !showBasicFilters
61
- }), showBasicFilters && /*#__PURE__*/_react.default.createElement(_basicFilters.default, null));
81
+ }), showBasicFilters && /*#__PURE__*/_react.default.createElement(_basicFilters.default, {
82
+ cloudId: cloudId,
83
+ selections: filterSelections,
84
+ onChange: handleBasicFilterSelectionChange
85
+ }));
62
86
  };
63
87
  var _default = exports.default = ConfluenceSearchContainer;
@@ -108,6 +108,14 @@ var PlainConfluenceSearchConfigModal = exports.PlainConfluenceSearchConfigModal
108
108
  _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
109
109
  visibleColumnKeys = _useState10[0],
110
110
  setVisibleColumnKeys = _useState10[1];
111
+ var _useState11 = (0, _react.useState)(initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.lastModified),
112
+ _useState12 = (0, _slicedToArray2.default)(_useState11, 2),
113
+ lastModified = _useState12[0],
114
+ setLastModified = _useState12[1];
115
+ var _useState13 = (0, _react.useState)((initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.contributorAccountIds) || []),
116
+ _useState14 = (0, _slicedToArray2.default)(_useState13, 2),
117
+ contributorAccountIds = _useState14[0],
118
+ setContributorAccountIds = _useState14[1];
111
119
 
112
120
  // analytics related parameters
113
121
  var searchCount = (0, _react.useRef)(0);
@@ -117,11 +125,15 @@ var PlainConfluenceSearchConfigModal = exports.PlainConfluenceSearchConfigModal
117
125
  // TODO: further refactoring in EDM-9573
118
126
  // https://stash.atlassian.com/projects/ATLASSIAN/repos/atlassian-frontend-monorepo/pull-requests/82725/overview?commentId=6829210
119
127
  var parameters = (0, _react.useMemo)(function () {
120
- return _objectSpread(_objectSpread({}, initialParameters), {}, {
128
+ return _objectSpread(_objectSpread(_objectSpread({}, initialParameters), {}, {
121
129
  cloudId: cloudId,
122
130
  searchString: searchString
131
+ }, ((initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.lastModified) || lastModified) && {
132
+ lastModified: lastModified
133
+ }), ((initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.contributorAccountIds) || (contributorAccountIds === null || contributorAccountIds === void 0 ? void 0 : contributorAccountIds.length) > 0) && {
134
+ contributorAccountIds: contributorAccountIds
123
135
  });
124
- }, [cloudId, initialParameters, searchString /** Add more parameters when more filters are added */]);
136
+ }, [cloudId, lastModified, contributorAccountIds, initialParameters, searchString /** Add more parameters when more filters are added */]);
125
137
  var isParametersSet = (0, _react.useMemo)(function () {
126
138
  return !!cloudId && Object.values(parameters !== null && parameters !== void 0 ? parameters : {}).filter(function (v) {
127
139
  return v !== undefined;
@@ -185,6 +197,8 @@ var PlainConfluenceSearchConfigModal = exports.PlainConfluenceSearchConfigModal
185
197
  var onSiteSelection = (0, _react.useCallback)(function (site) {
186
198
  userInteractionActions.current.add(_types.DatasourceAction.INSTANCE_UPDATED);
187
199
  setSearchString(undefined);
200
+ setLastModified(undefined);
201
+ setContributorAccountIds([]);
188
202
  setCloudId(site.cloudId);
189
203
  reset({
190
204
  shouldForceRequest: true
@@ -227,17 +241,17 @@ var PlainConfluenceSearchConfigModal = exports.PlainConfluenceSearchConfigModal
227
241
  setVisibleColumnKeys(newVisibleColumnKeys);
228
242
  }, [initialVisibleColumnKeys, defaultVisibleColumnKeys]);
229
243
  var siteSelectorLabel = availableSites && availableSites.length > 1 ? _messages.confluenceSearchModalMessages.insertIssuesTitleManySites : _messages.confluenceSearchModalMessages.insertIssuesTitle;
230
- var _useState11 = (0, _react.useState)(initialColumnCustomSizes),
231
- _useState12 = (0, _slicedToArray2.default)(_useState11, 2),
232
- columnCustomSizes = _useState12[0],
233
- setColumnCustomSizes = _useState12[1];
244
+ var _useState15 = (0, _react.useState)(initialColumnCustomSizes),
245
+ _useState16 = (0, _slicedToArray2.default)(_useState15, 2),
246
+ columnCustomSizes = _useState16[0],
247
+ setColumnCustomSizes = _useState16[1];
234
248
  var onColumnResize = (0, _react.useCallback)(function (key, width) {
235
249
  setColumnCustomSizes(_objectSpread(_objectSpread({}, columnCustomSizes), {}, (0, _defineProperty2.default)({}, key, width)));
236
250
  }, [columnCustomSizes]);
237
- var _useState13 = (0, _react.useState)(initialWrappedColumnKeys),
238
- _useState14 = (0, _slicedToArray2.default)(_useState13, 2),
239
- wrappedColumnKeys = _useState14[0],
240
- setWrappedColumnKeys = _useState14[1];
251
+ var _useState17 = (0, _react.useState)(initialWrappedColumnKeys),
252
+ _useState18 = (0, _slicedToArray2.default)(_useState17, 2),
253
+ wrappedColumnKeys = _useState18[0],
254
+ setWrappedColumnKeys = _useState18[1];
241
255
  var onWrappedColumnChange = (0, _react.useCallback)(function (key, isWrapped) {
242
256
  var set = new Set(wrappedColumnKeys);
243
257
  if (isWrapped) {
@@ -416,9 +430,25 @@ var PlainConfluenceSearchConfigModal = exports.PlainConfluenceSearchConfigModal
416
430
  userInteractionActions.current.add(_types.DatasourceAction.DISPLAY_VIEW_CHANGED);
417
431
  setCurrentViewMode(selectedMode);
418
432
  };
419
- var onSearch = (0, _react.useCallback)(function (newSearchString) {
433
+ var onSearch = (0, _react.useCallback)(function (newSearchString, filters) {
420
434
  searchCount.current++;
421
435
  userInteractionActions.current.add(_types.DatasourceAction.QUERY_UPDATED);
436
+ if (filters) {
437
+ var editedOrCreatedBy = filters.editedOrCreatedBy,
438
+ _lastModified = filters.lastModified;
439
+ if (_lastModified) {
440
+ var lastModifiedValue = _lastModified.find(function (range) {
441
+ return range.value;
442
+ });
443
+ setLastModified(lastModifiedValue === null || lastModifiedValue === void 0 ? void 0 : lastModifiedValue.value);
444
+ }
445
+ if (editedOrCreatedBy) {
446
+ var accountIds = editedOrCreatedBy.map(function (user) {
447
+ return user.value;
448
+ });
449
+ setContributorAccountIds(accountIds);
450
+ }
451
+ }
422
452
  setSearchString(newSearchString);
423
453
  reset({
424
454
  shouldForceRequest: true
@@ -178,6 +178,7 @@ var DatasourceTableViewWithoutAnalytics = function DatasourceTableViewWithoutAna
178
178
  testId: "datasource-table-view-skeleton",
179
179
  isCompact: true
180
180
  }), (0, _react2.jsx)(_tableFooter.TableFooter, {
181
+ datasourceId: datasourceId,
181
182
  itemCount: isDataReady ? totalCount : undefined,
182
183
  onRefresh: onRefresh,
183
184
  isLoading: !isDataReady || status === 'loading',
@@ -14,9 +14,12 @@ var _reactIntlNext = require("react-intl-next");
14
14
  var _button = _interopRequireDefault(require("@atlaskit/button"));
15
15
  var _heading = _interopRequireDefault(require("@atlaskit/heading"));
16
16
  var _refresh = _interopRequireDefault(require("@atlaskit/icon/glyph/refresh"));
17
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
17
18
  var _linkUrl = _interopRequireDefault(require("@atlaskit/smart-card/link-url"));
18
19
  var _colors = require("@atlaskit/theme/colors");
20
+ var _assetsModal = require("../assets-modal");
19
21
  var _messages = require("./messages");
22
+ var _poweredByJsmAssets = require("./powered-by-jsm-assets");
20
23
  var _syncInfo = require("./sync-info");
21
24
  /** @jsx jsx */
22
25
 
@@ -49,7 +52,8 @@ var SyncTextWrapper = _styled.default.div({
49
52
  fontSize: '12px'
50
53
  });
51
54
  var TableFooter = exports.TableFooter = function TableFooter(_ref) {
52
- var itemCount = _ref.itemCount,
55
+ var datasourceId = _ref.datasourceId,
56
+ itemCount = _ref.itemCount,
53
57
  onRefresh = _ref.onRefresh,
54
58
  isLoading = _ref.isLoading,
55
59
  url = _ref.url;
@@ -88,7 +92,9 @@ var TableFooter = exports.TableFooter = function TableFooter(_ref) {
88
92
  values: {
89
93
  itemCount: itemCount
90
94
  }
91
- }))))), (0, _react2.jsx)(SyncWrapper, null, onRefresh && (0, _react2.jsx)(_react.Fragment, null, (0, _react2.jsx)(SyncTextWrapper, {
95
+ }))))), (0, _platformFeatureFlags.getBooleanFF)('platform.linking-platform.datasource-assets_objects_add_jsm_promotional_tag') && datasourceId === _assetsModal.ASSETS_LIST_OF_LINKS_DATASOURCE_ID ? (0, _react2.jsx)(_poweredByJsmAssets.PoweredByJSMAssets, {
96
+ text: intl.formatMessage(_messages.footerMessages.powerByJSM)
97
+ }) : null, (0, _react2.jsx)(SyncWrapper, null, onRefresh && (0, _react2.jsx)(_react.Fragment, null, (0, _react2.jsx)(SyncTextWrapper, {
92
98
  "data-testid": "sync-text"
93
99
  }, isLoading ? (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _messages.footerMessages.loadingText) : (0, _react2.jsx)(_syncInfo.SyncInfo, {
94
100
  lastSyncTime: lastSyncTime
@@ -20,5 +20,10 @@ var footerMessages = exports.footerMessages = (0, _reactIntlNext.defineMessages)
20
20
  id: 'linkDataSource.table-footer.refresh',
21
21
  description: 'Label for refresh icon',
22
22
  defaultMessage: 'Refresh'
23
+ },
24
+ powerByJSM: {
25
+ id: 'linkDataSource.table-footer.power-by-jsm',
26
+ description: 'Displayed on the issue like table footer to increase JSM Assets visibility',
27
+ defaultMessage: 'Powered by Assets in Jira Service Management'
23
28
  }
24
29
  });
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.PoweredByJSMAssets = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _logo = require("@atlaskit/logo");
10
+ var _primitives = require("@atlaskit/primitives");
11
+ var _analytics = require("../../../analytics");
12
+ var jsmTextStyles = (0, _primitives.xcss)({
13
+ fontSize: 'small',
14
+ color: 'color.text.subtle',
15
+ marginLeft: "var(--ds-space-075, 6px)",
16
+ ':hover': {
17
+ color: 'color.link.pressed'
18
+ }
19
+ });
20
+ var jsmContainerStyles = (0, _primitives.xcss)({
21
+ display: 'flex',
22
+ flexDirection: 'row-reverse'
23
+ });
24
+ var PoweredByJSMAssets = exports.PoweredByJSMAssets = function PoweredByJSMAssets(props) {
25
+ var ASSETS_LINK = '/jira/servicedesk/assets';
26
+ var _useDatasourceAnalyti = (0, _analytics.useDatasourceAnalyticsEvents)(),
27
+ fireEvent = _useDatasourceAnalyti.fireEvent;
28
+ return /*#__PURE__*/_react.default.createElement(_primitives.Box, {
29
+ xcss: jsmContainerStyles,
30
+ padding: "space.150"
31
+ }, /*#__PURE__*/_react.default.createElement("a", {
32
+ "data-testid": 'powered-by-jsm-assets-link',
33
+ onClick: function onClick() {
34
+ return fireEvent('ui.link.clicked.poweredBy', {
35
+ componentHierarchy: 'datasourceTable',
36
+ extensionKey: 'jsm-cmdb-gateway'
37
+ });
38
+ },
39
+ href: ASSETS_LINK,
40
+ rel: "noreferrer",
41
+ target: "_blank",
42
+ style: {
43
+ display: 'inline-flex',
44
+ alignItems: 'center'
45
+ }
46
+ }, /*#__PURE__*/_react.default.createElement(_logo.JiraServiceManagementIcon, {
47
+ size: "xsmall",
48
+ appearance: "brand",
49
+ label: props.text
50
+ }), /*#__PURE__*/_react.default.createElement(_primitives.Box, {
51
+ xcss: jsmTextStyles
52
+ }, props.text)));
53
+ };
@@ -125,4 +125,155 @@ export const mockFieldValuesResponse = {
125
125
  }
126
126
  }
127
127
  }
128
+ };
129
+ export const mockUserRecommendationsResponse = {
130
+ recommendedUsers: [{
131
+ entityType: 'USER',
132
+ id: '5ffe1efc34847e0069446bf8',
133
+ name: 'Atlassian Assist (staging)',
134
+ avatarUrl: '',
135
+ nickname: 'Atlassian Assist (staging)',
136
+ matchPositions: {},
137
+ accessLevel: 'CONTAINER',
138
+ accountStatus: 'ACTIVE',
139
+ notMentionable: false,
140
+ userType: 'APP',
141
+ attributes: {
142
+ isConfluenceExternalCollaborator: false
143
+ }
144
+ }, {
145
+ entityType: 'USER',
146
+ id: '62df272c3aaeedcae755c533',
147
+ name: 'Atlas for Jira (staging)',
148
+ avatarUrl: '',
149
+ nickname: 'Atlas for Jira (staging)',
150
+ matchPositions: {},
151
+ accessLevel: 'CONTAINER',
152
+ accountStatus: 'ACTIVE',
153
+ notMentionable: false,
154
+ userType: 'APP',
155
+ attributes: {
156
+ isConfluenceExternalCollaborator: false
157
+ }
158
+ }, {
159
+ entityType: 'USER',
160
+ id: '6232be743eacc50071fe13ba',
161
+ name: 'Stephen',
162
+ email: 'sdemontfort+10@atlassian.com',
163
+ avatarUrl: '',
164
+ nickname: 'Stephen',
165
+ matchPositions: {},
166
+ accessLevel: 'CONTAINER',
167
+ accountStatus: 'ACTIVE',
168
+ notMentionable: false,
169
+ locale: 'en-GB',
170
+ userType: 'DEFAULT',
171
+ attributes: {
172
+ isConfluenceExternalCollaborator: false
173
+ }
174
+ }, {
175
+ entityType: 'USER',
176
+ id: '608b253e2911000071b6e6d6',
177
+ name: 'Pranay Test 1773',
178
+ email: 'pmarella+1773@atlassian.com',
179
+ avatarUrl: '',
180
+ nickname: 'Pranay Test 1773',
181
+ matchPositions: {},
182
+ accessLevel: 'CONTAINER',
183
+ accountStatus: 'ACTIVE',
184
+ notMentionable: false,
185
+ locale: 'en-US',
186
+ userType: 'DEFAULT',
187
+ attributes: {
188
+ isConfluenceExternalCollaborator: false
189
+ }
190
+ }, {
191
+ entityType: 'USER',
192
+ id: '6202a8cfc4e2c9006ae620b1',
193
+ name: 'Jacob Test3',
194
+ email: 'jbrunson+test3@atlassian.com',
195
+ avatarUrl: '',
196
+ nickname: 'Jacob Test3',
197
+ matchPositions: {},
198
+ accessLevel: 'CONTAINER',
199
+ accountStatus: 'ACTIVE',
200
+ notMentionable: false,
201
+ locale: 'en-US',
202
+ userType: 'DEFAULT',
203
+ attributes: {
204
+ isConfluenceExternalCollaborator: false
205
+ }
206
+ }, {
207
+ entityType: 'USER',
208
+ id: '61428180ff23ba00717b7d78',
209
+ name: 'Test Themes',
210
+ avatarUrl: '',
211
+ nickname: 'Test Themes',
212
+ matchPositions: {},
213
+ accessLevel: 'CONTAINER',
214
+ accountStatus: 'ACTIVE',
215
+ notMentionable: false,
216
+ userType: 'APP',
217
+ attributes: {
218
+ isConfluenceExternalCollaborator: false
219
+ }
220
+ }, {
221
+ entityType: 'USER',
222
+ id: '5d9e2c300d44fc0dca5428bb',
223
+ name: 'Confluence Connect Test - AP methods',
224
+ avatarUrl: '',
225
+ nickname: 'Confluence Connect Test - AP methods',
226
+ matchPositions: {},
227
+ accessLevel: 'CONTAINER',
228
+ accountStatus: 'ACTIVE',
229
+ notMentionable: false,
230
+ userType: 'APP',
231
+ attributes: {
232
+ isConfluenceExternalCollaborator: false
233
+ }
234
+ }, {
235
+ entityType: 'USER',
236
+ id: '655363:1276a696-f0d0-4f3a-a022-636723eb5148',
237
+ name: 'Confluence Google Drive',
238
+ avatarUrl: '',
239
+ nickname: 'Confluence Google Drive',
240
+ matchPositions: {},
241
+ accessLevel: 'CONTAINER',
242
+ accountStatus: 'ACTIVE',
243
+ notMentionable: false,
244
+ userType: 'APP',
245
+ attributes: {
246
+ isConfluenceExternalCollaborator: false
247
+ }
248
+ }, {
249
+ entityType: 'USER',
250
+ id: '712020:413e43c0-7202-4016-a318-a004892e7f8c',
251
+ name: 'arthur chen nth user',
252
+ avatarUrl: '',
253
+ nickname: 'arthur chen nth user',
254
+ matchPositions: {},
255
+ accessLevel: 'CONTAINER',
256
+ accountStatus: 'ACTIVE',
257
+ notMentionable: false,
258
+ locale: 'en-US',
259
+ userType: 'DEFAULT',
260
+ attributes: {
261
+ isConfluenceExternalCollaborator: false
262
+ }
263
+ }, {
264
+ entityType: 'USER',
265
+ id: '712020:9219bf5f-0358-4782-99dc-bc73258b2ddc',
266
+ name: 'jeff mellis',
267
+ avatarUrl: '',
268
+ nickname: 'jeff mellis',
269
+ matchPositions: {},
270
+ accessLevel: 'CONTAINER',
271
+ accountStatus: 'ACTIVE',
272
+ notMentionable: false,
273
+ locale: 'en-US',
274
+ userType: 'DEFAULT',
275
+ attributes: {
276
+ isConfluenceExternalCollaborator: false
277
+ }
278
+ }]
128
279
  };
@@ -1,6 +1,6 @@
1
1
  import { useCallback, useMemo } from 'react';
2
2
  import { request } from '@atlaskit/linking-common';
3
- import { fieldValuesQuery, hydrateJQLQuery } from './utils';
3
+ import { fieldValuesQuery, hydrateJQLQuery, userQuery } from './utils';
4
4
  const AGG_BASE_URL = '/gateway/api/graphql';
5
5
  export const useBasicFilterAGG = () => {
6
6
  const requestCall = useCallback(async body => request('post', AGG_BASE_URL, body, {
@@ -32,8 +32,13 @@ export const useBasicFilterAGG = () => {
32
32
  operationName: 'fieldValues',
33
33
  query: fieldValuesQuery
34
34
  }), [requestCall]);
35
+ const getCurrentUserInfo = useCallback(() => requestCall({
36
+ operationName: 'userQuery',
37
+ query: userQuery
38
+ }), [requestCall]);
35
39
  return useMemo(() => ({
36
40
  getHydratedJQL,
37
- getFieldValues
38
- }), [getHydratedJQL, getFieldValues]);
41
+ getFieldValues,
42
+ getCurrentUserInfo
43
+ }), [getHydratedJQL, getFieldValues, getCurrentUserInfo]);
39
44
  };