@atlaskit/help 6.0.7 → 7.0.2

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 (32) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/cjs/components/Article/HelpArticle/index.js +6 -8
  3. package/dist/cjs/components/Article/index.js +2 -2
  4. package/dist/cjs/components/Help.js +3 -1
  5. package/dist/cjs/components/Search/SearchResults/index.js +8 -11
  6. package/dist/cjs/components/WhatsNew/WhatsNewButton/index.js +6 -8
  7. package/dist/cjs/components/WhatsNew/WhatsNewResults/WhatsNewResultsList/WhatsNewResultsList.js +1 -1
  8. package/dist/cjs/components/WhatsNew/WhatsNewResults/WhatsNewResultsList/index.js +6 -8
  9. package/dist/cjs/components/WhatsNew/WhatsNewResults/index.js +33 -6
  10. package/dist/cjs/components/contexts/navigationContext.js +111 -50
  11. package/dist/cjs/version.json +1 -1
  12. package/dist/es2019/components/Article/HelpArticle/index.js +6 -8
  13. package/dist/es2019/components/Search/SearchResults/index.js +6 -9
  14. package/dist/es2019/components/WhatsNew/WhatsNewButton/index.js +6 -8
  15. package/dist/es2019/components/WhatsNew/WhatsNewResults/WhatsNewResultsList/WhatsNewResultsList.js +1 -1
  16. package/dist/es2019/components/WhatsNew/WhatsNewResults/WhatsNewResultsList/index.js +6 -8
  17. package/dist/es2019/components/WhatsNew/WhatsNewResults/index.js +31 -5
  18. package/dist/es2019/components/contexts/navigationContext.js +99 -39
  19. package/dist/es2019/version.json +1 -1
  20. package/dist/esm/components/Article/HelpArticle/index.js +6 -8
  21. package/dist/esm/components/Article/index.js +2 -2
  22. package/dist/esm/components/Help.js +2 -1
  23. package/dist/esm/components/Search/SearchResults/index.js +8 -11
  24. package/dist/esm/components/WhatsNew/WhatsNewButton/index.js +6 -8
  25. package/dist/esm/components/WhatsNew/WhatsNewResults/WhatsNewResultsList/WhatsNewResultsList.js +1 -1
  26. package/dist/esm/components/WhatsNew/WhatsNewResults/WhatsNewResultsList/index.js +6 -8
  27. package/dist/esm/components/WhatsNew/WhatsNewResults/index.js +33 -7
  28. package/dist/esm/components/contexts/navigationContext.js +108 -50
  29. package/dist/esm/version.json +1 -1
  30. package/dist/types/components/contexts/navigationContext.d.ts +12 -7
  31. package/dist/types/model/Help.d.ts +8 -4
  32. package/package.json +5 -5
package/CHANGELOG.md CHANGED
@@ -1,5 +1,29 @@
1
1
  # @atlaskit/help
2
2
 
3
+ ## 7.0.2
4
+
5
+ ### Patch Changes
6
+
7
+ - [`d4bd99015e9`](https://bitbucket.org/atlassian/atlassian-frontend/commits/d4bd99015e9) - [ux] Fix history initialization
8
+
9
+ ## 7.0.1
10
+
11
+ ### Patch Changes
12
+
13
+ - [`4ef57768666`](https://bitbucket.org/atlassian/atlassian-frontend/commits/4ef57768666) - [ux] Improve navigation in the "What's new" section
14
+
15
+ ## 7.0.0
16
+
17
+ ### Major Changes
18
+
19
+ - [`396fbf5fc2d`](https://bitbucket.org/atlassian/atlassian-frontend/commits/396fbf5fc2d) - [ux] Update the way we set the articleId and the history in the component
20
+
21
+ ## 6.0.8
22
+
23
+ ### Patch Changes
24
+
25
+ - [`222834915fa`](https://bitbucket.org/atlassian/atlassian-frontend/commits/222834915fa) - [ux] Fix date formatting in What's New
26
+
3
27
  ## 6.0.7
4
28
 
5
29
  ### Patch Changes
@@ -38,7 +38,7 @@ var HelpArticle = function HelpArticle(_ref) {
38
38
  isLoading = _ref.isLoading;
39
39
 
40
40
  var _useNavigationContext = (0, _navigationContext.useNavigationContext)(),
41
- setArticleId = _useNavigationContext.setArticleId,
41
+ openArticle = _useNavigationContext.openArticle,
42
42
  getCurrentArticleItemData = _useNavigationContext.getCurrentArticleItemData;
43
43
 
44
44
  var _useHelpArticleContex = (0, _helpArticleContext.useHelpArticleContext)(),
@@ -80,13 +80,11 @@ var HelpArticle = function HelpArticle(_ref) {
80
80
  onRelatedArticlesListItemClick(event, analyticsEvent, articleData);
81
81
  }
82
82
 
83
- if (setArticleId) {
84
- setArticleId({
85
- id: articleData.id,
86
- type: _Help.ARTICLE_TYPE.HELP_ARTICLE
87
- });
88
- }
89
- }, [setArticleId, onRelatedArticlesListItemClick]);
83
+ openArticle({
84
+ id: articleData.id,
85
+ type: _Help.ARTICLE_TYPE.HELP_ARTICLE
86
+ });
87
+ }, [openArticle, onRelatedArticlesListItemClick]);
90
88
  var handleOnRelatedArticlesShowMoreClick = (0, _react.useCallback)(function (event, analyticsEvent, isCollapsed) {
91
89
  analyticsEvent.payload.attributes = {
92
90
  componentName: 'Article',
@@ -31,9 +31,9 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
31
31
 
32
32
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
33
33
 
34
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
34
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
35
35
 
36
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
36
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
37
37
 
38
38
  // Animation
39
39
  var defaultStyle = {
@@ -45,6 +45,8 @@ var _MessagesIntlProvider = _interopRequireDefault(require("./MessagesIntlProvid
45
45
 
46
46
  var _HelpContent = _interopRequireDefault(require("./HelpContent"));
47
47
 
48
+ var _excluded = ["children", "footer"];
49
+
48
50
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
49
51
 
50
52
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
@@ -65,7 +67,7 @@ var Help = /*#__PURE__*/function (_React$PureComponent) {
65
67
  var _this$props = this.props,
66
68
  children = _this$props.children,
67
69
  footer = _this$props.footer,
68
- rest = (0, _objectWithoutProperties2.default)(_this$props, ["children", "footer"]);
70
+ rest = (0, _objectWithoutProperties2.default)(_this$props, _excluded);
69
71
  return /*#__PURE__*/_react.default.createElement(_headerContext.HeaderContextProvider, rest.header, /*#__PURE__*/_react.default.createElement(_homeContext.HomeContextProvider, (0, _extends2.default)({}, rest.home, {
70
72
  homeContent: children
71
73
  }), /*#__PURE__*/_react.default.createElement(_helpArticleContext.HelpArticleContextProvider, rest.helpArticle, /*#__PURE__*/_react.default.createElement(_relatedArticlesContext.RelatedArticlesContextProvider, rest.relatedArticles, /*#__PURE__*/_react.default.createElement(_searchContext.SearchContextProvider, rest.search, /*#__PURE__*/_react.default.createElement(_whatsNewArticleContext.WhatsNewArticleProvider, rest.whatsNew, /*#__PURE__*/_react.default.createElement(_navigationContext.NavigationContextProvider, rest.navigation, /*#__PURE__*/_react.default.createElement(_MessagesIntlProvider.default, null, /*#__PURE__*/_react.default.createElement(_HelpContent.default, {
@@ -39,9 +39,9 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
39
39
 
40
40
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
41
41
 
42
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
42
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
43
43
 
44
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
44
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
45
45
 
46
46
  var defaultStyle = {
47
47
  transition: "opacity ".concat(_constants.FADEIN_OVERLAY_TRANSITION_DURATION_MS, "ms"),
@@ -78,19 +78,16 @@ var SearchResults = function SearchResults() {
78
78
  onSearchExternalUrlClick = _useSearchContext.onSearchExternalUrlClick;
79
79
 
80
80
  var _useNavigationContext = (0, _navigationContext.useNavigationContext)(),
81
- setArticleId = _useNavigationContext.setArticleId,
81
+ openArticle = _useNavigationContext.openArticle,
82
82
  view = _useNavigationContext.view;
83
83
 
84
84
  var handleOnSearchResultItemClick = (0, _react.useCallback)(function (event, analyticsEvent, articleData) {
85
- if (setArticleId) {
86
- setArticleId({
87
- id: articleData.id,
88
- type: _Help.ARTICLE_TYPE.HELP_ARTICLE
89
- });
90
- }
91
-
85
+ openArticle({
86
+ id: articleData.id,
87
+ type: _Help.ARTICLE_TYPE.HELP_ARTICLE
88
+ });
92
89
  onSearchResultItemClick(event, analyticsEvent, articleData);
93
- }, [onSearchResultItemClick, setArticleId]);
90
+ }, [onSearchResultItemClick, openArticle]);
94
91
  return /*#__PURE__*/_react.default.createElement(_reactTransitionGroup.Transition, {
95
92
  in: view === _constants.VIEW.SEARCH && isSearchResultVisible,
96
93
  timeout: _constants.FADEIN_OVERLAY_TRANSITION_DURATION_MS
@@ -50,20 +50,18 @@ var WhatsNewButton = function WhatsNewButton(_ref) {
50
50
  whatsNewGetNotificationProvider = _useWhatsNewArticleCo.whatsNewGetNotificationProvider;
51
51
 
52
52
  var _useNavigationContext = (0, _navigationContext.useNavigationContext)(),
53
- setArticleId = _useNavigationContext.setArticleId;
53
+ openArticle = _useNavigationContext.openArticle;
54
54
 
55
55
  var handleOnButtonClick = (0, _react.useCallback)(function (id, analytics, event) {
56
56
  if (onWhatsNewButtonClick) {
57
57
  onWhatsNewButtonClick(event, analytics);
58
58
  }
59
59
 
60
- if (setArticleId) {
61
- setArticleId({
62
- id: '',
63
- type: _Help.ARTICLE_TYPE.WHATS_NEW
64
- });
65
- }
66
- }, [onWhatsNewButtonClick, setArticleId]);
60
+ openArticle({
61
+ id: '',
62
+ type: _Help.ARTICLE_TYPE.WHATS_NEW
63
+ });
64
+ }, [onWhatsNewButtonClick, openArticle]);
67
65
  return /*#__PURE__*/_react.default.createElement(_HelpContentButton.default, {
68
66
  id: "whats-new",
69
67
  key: "whats-new",
@@ -51,7 +51,7 @@ var WhatsNewResultsList = function WhatsNewResultsList(_ref) {
51
51
  var featureRolloutDateString = whatsNewArticle === null || whatsNewArticle === void 0 ? void 0 : whatsNewArticle.featureRolloutDate;
52
52
 
53
53
  if (featureRolloutDateString) {
54
- var featureRolloutDateArray = featureRolloutDateString.replace('-', '/');
54
+ var featureRolloutDateArray = featureRolloutDateString.replace('/-/g', '/');
55
55
  var featureRolloutDate = (0, _toDate.default)(new Date(featureRolloutDateArray));
56
56
 
57
57
  if (whatsNewArticlesGroupedByDateTemp[featureRolloutDateString]) {
@@ -57,7 +57,7 @@ var WhatsNewResultsList = function WhatsNewResultsList(_ref) {
57
57
  onShowMoreButtonClick = _ref.onShowMoreButtonClick;
58
58
 
59
59
  var _useNavigationContext = (0, _navigationContext.useNavigationContext)(),
60
- setArticleId = _useNavigationContext.setArticleId;
60
+ openArticle = _useNavigationContext.openArticle;
61
61
 
62
62
  var handleShowMoreButtonClick = function handleShowMoreButtonClick(event, analyticsEvent) {
63
63
  if (onShowMoreButtonClick) {
@@ -66,17 +66,15 @@ var WhatsNewResultsList = function WhatsNewResultsList(_ref) {
66
66
  };
67
67
 
68
68
  var handleOnWhatsNewResultItemClick = (0, _react.useCallback)(function (event, analyticsEvent, articleData) {
69
- if (setArticleId) {
70
- setArticleId({
71
- id: articleData.id,
72
- type: _Help.ARTICLE_TYPE.WHATS_NEW
73
- });
74
- }
69
+ openArticle({
70
+ id: articleData.id,
71
+ type: _Help.ARTICLE_TYPE.WHATS_NEW
72
+ });
75
73
 
76
74
  if (onWhatsNewResultItemClick) {
77
75
  onWhatsNewResultItemClick(event, analyticsEvent, articleData);
78
76
  }
79
- }, [onWhatsNewResultItemClick, setArticleId]);
77
+ }, [onWhatsNewResultItemClick, openArticle]);
80
78
  return whatsNewArticles && whatsNewArticles.length > 0 ? /*#__PURE__*/_react.default.createElement(_styled.WhatsNewResultsListContainer, null, /*#__PURE__*/_react.default.createElement(_styledComponents.ThemeProvider, {
81
79
  theme: (0, _defineProperty2.default)({}, _item.itemThemeNamespace, ITEM_THEME)
82
80
  }, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_WhatsNewResultsList.default, {
@@ -17,6 +17,8 @@ var _react = _interopRequireWildcard(require("react"));
17
17
 
18
18
  var _reactTransitionGroup = require("react-transition-group");
19
19
 
20
+ var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
21
+
20
22
  var _select = _interopRequireDefault(require("@atlaskit/select"));
21
23
 
22
24
  var _reactIntlNext = require("react-intl-next");
@@ -47,9 +49,9 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
47
49
 
48
50
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
49
51
 
50
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
52
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
51
53
 
52
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
54
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
53
55
 
54
56
  var defaultStyle = {
55
57
  transition: "opacity ".concat(_constants.FADEIN_OVERLAY_TRANSITION_DURATION_MS, "ms"),
@@ -87,12 +89,18 @@ var WhatsNewResults = function WhatsNewResults(_ref) {
87
89
  searchWhatsNewArticlesState = _useWhatsNewArticleCo.searchWhatsNewArticlesState,
88
90
  onWhatsNewResultItemClick = _useWhatsNewArticleCo.onWhatsNewResultItemClick;
89
91
 
92
+ var containerRef = (0, _react.useRef)(null);
93
+ var containerScrollPosition = (0, _react.useRef)(0);
90
94
  var SELECT_DEFAULT_VALUE = {
91
95
  value: '',
92
96
  label: formatMessage(_messages.messages.help_whats_new_filter_select_option_all)
93
97
  };
98
+ var SELECT_EMPTY_VALUE = {
99
+ value: undefined,
100
+ label: ''
101
+ };
94
102
 
95
- var _useState = (0, _react.useState)(SELECT_DEFAULT_VALUE),
103
+ var _useState = (0, _react.useState)(SELECT_EMPTY_VALUE),
96
104
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
97
105
  selectedOption = _useState2[0],
98
106
  setSelectedOption = _useState2[1];
@@ -109,8 +117,25 @@ var WhatsNewResults = function WhatsNewResults(_ref) {
109
117
  }, [onSearchWhatsNewArticles, searchWhatsNewArticlesResult, selectedOption]);
110
118
 
111
119
  var handleOnEnter = function handleOnEnter() {
112
- setSelectedOption(SELECT_DEFAULT_VALUE);
113
- onSearchWhatsNewArticles && onSearchWhatsNewArticles();
120
+ setTimeout(function () {
121
+ if (containerRef.current) {
122
+ containerRef.current.scrollTop = containerScrollPosition.current;
123
+ }
124
+ }, 0);
125
+
126
+ if ((0, _isEqual.default)(selectedOption, SELECT_EMPTY_VALUE)) {
127
+ setSelectedOption(SELECT_DEFAULT_VALUE);
128
+ onSearchWhatsNewArticles && onSearchWhatsNewArticles();
129
+ }
130
+ };
131
+
132
+ var handleOnExit = function handleOnExit() {
133
+ if (helpContextView === _constants.VIEW.DEFAULT_CONTENT) {
134
+ setSelectedOption(SELECT_EMPTY_VALUE);
135
+ containerScrollPosition.current = 0;
136
+ } else {
137
+ containerScrollPosition.current = containerRef.current ? containerRef.current.scrollTop : 0;
138
+ }
114
139
  };
115
140
 
116
141
  var handleOnClearFilter = function handleOnClearFilter() {
@@ -126,9 +151,11 @@ var WhatsNewResults = function WhatsNewResults(_ref) {
126
151
  return /*#__PURE__*/_react.default.createElement(_reactTransitionGroup.Transition, {
127
152
  in: helpContextView === _constants.VIEW.WHATS_NEW,
128
153
  timeout: _constants.FADEIN_OVERLAY_TRANSITION_DURATION_MS,
129
- onEnter: handleOnEnter
154
+ onEnter: handleOnEnter,
155
+ onExit: handleOnExit
130
156
  }, function (state) {
131
157
  return /*#__PURE__*/_react.default.createElement(_styled.WhatsNewResultsContainer, {
158
+ ref: containerRef,
132
159
  style: _objectSpread(_objectSpread({}, defaultStyle), transitionStyles[state])
133
160
  }, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, searchWhatsNewArticlesState === _Requests.REQUEST_STATE.loading && searchWhatsNewArticlesResult === null && state !== 'exited' && /*#__PURE__*/_react.default.createElement(_WhatsNewResultsLoading.default, null), (searchWhatsNewArticlesState === _Requests.REQUEST_STATE.done || searchWhatsNewArticlesState === _Requests.REQUEST_STATE.loading) && searchWhatsNewArticlesResult !== null && state !== 'exited' && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_styled.SelectContainer, null, /*#__PURE__*/_react.default.createElement(_select.default, {
134
161
  defaultValue: selectedOption,
@@ -23,6 +23,8 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
23
23
 
24
24
  var _react = _interopRequireWildcard(require("react"));
25
25
 
26
+ var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
27
+
26
28
  var _Requests = require("../../model/Requests");
27
29
 
28
30
  var _Help = require("../../model/Help");
@@ -41,13 +43,21 @@ var _searchContext = require("./searchContext");
41
43
 
42
44
  var _headerContext = require("./headerContext");
43
45
 
46
+ var _excluded = ["body", "relatedArticles"],
47
+ _excluded2 = ["description"];
48
+
44
49
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
45
50
 
46
51
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
47
52
 
48
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
53
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
49
54
 
50
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
55
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
56
+
57
+ var DEFAULT_ARTICLE_ID = {
58
+ id: '',
59
+ type: _Help.ARTICLE_TYPE.HELP_ARTICLE
60
+ };
51
61
 
52
62
  var _createCtx = (0, _ctx.createCtx)(),
53
63
  _createCtx2 = (0, _slicedToArray2.default)(_createCtx, 2),
@@ -86,6 +96,21 @@ var getSimpleHistory = function getSimpleHistory(history) {
86
96
  };
87
97
  });
88
98
  };
99
+ /**
100
+ * Get history data (list of IDs and UID)
101
+ */
102
+
103
+
104
+ var getHistoryData = function getHistoryData(history) {
105
+ return history.map(function (historyItem) {
106
+ var id = historyItem.id,
107
+ uid = historyItem.uid;
108
+ return {
109
+ id: id,
110
+ uid: uid
111
+ };
112
+ });
113
+ };
89
114
  /**
90
115
  * Get the last article in the history
91
116
  */
@@ -109,13 +134,13 @@ var getCurrentArticleItemSlim = function getCurrentArticleItemSlim(history) {
109
134
  var _ref = article,
110
135
  body = _ref.body,
111
136
  relatedArticles = _ref.relatedArticles,
112
- articleItemData = (0, _objectWithoutProperties2.default)(_ref, ["body", "relatedArticles"]);
137
+ articleItemData = (0, _objectWithoutProperties2.default)(_ref, _excluded);
113
138
  var currentArticleSlimData = articleItemData;
114
139
  return currentArticleSlimData;
115
140
  } else if (type === _Help.ARTICLE_TYPE.WHATS_NEW) {
116
141
  var _ref2 = article,
117
142
  description = _ref2.description,
118
- whatsNewArticleItemData = (0, _objectWithoutProperties2.default)(_ref2, ["description"]);
143
+ whatsNewArticleItemData = (0, _objectWithoutProperties2.default)(_ref2, _excluded2);
119
144
  var currentWhatsNewArticleSlimData = whatsNewArticleItemData;
120
145
  return currentWhatsNewArticleSlimData;
121
146
  }
@@ -154,10 +179,26 @@ var navigationReducer = function navigationReducer(_ref3, action) {
154
179
 
155
180
  if (action.type === 'newArticle' && action.payload) {
156
181
  var newArticleId = action.payload;
182
+
183
+ if ((0, _isEqual.default)(newArticleId, DEFAULT_ARTICLE_ID)) {
184
+ newState = {
185
+ articleId: newArticleId,
186
+ history: [],
187
+ view: _constants.VIEW.DEFAULT_CONTENT
188
+ };
189
+ } else {
190
+ newState = {
191
+ articleId: newArticleId,
192
+ history: [].concat((0, _toConsumableArray2.default)(currentHistory), [getNewHistoryItem(newArticleId.id, newArticleId.type)]),
193
+ view: getViewForArticleId(newArticleId)
194
+ };
195
+ }
196
+ } else if (action.type === 'addNewHistoryItem' && action.payload) {
197
+ var _newArticleId = action.payload;
157
198
  newState = {
158
- articleId: newArticleId,
159
- history: [].concat((0, _toConsumableArray2.default)(currentHistory), [getNewHistoryItem(newArticleId.id, newArticleId.type)]),
160
- view: getViewForArticleId(newArticleId)
199
+ articleId: currentArticleId,
200
+ history: [].concat((0, _toConsumableArray2.default)(currentHistory), [getNewHistoryItem(_newArticleId.id, _newArticleId.type)]),
201
+ view: getViewForArticleId(currentArticleId)
161
202
  };
162
203
  } else if (action.type === 'updateHistoryItem' && action.payload) {
163
204
  var HistoryItemUpdate = action.payload;
@@ -194,11 +235,11 @@ var navigationReducer = function navigationReducer(_ref3, action) {
194
235
  view: _constants.VIEW.DEFAULT_CONTENT
195
236
  };
196
237
  } else if (action.type === 'updateArticleId' && action.payload) {
197
- var _newArticleId = action.payload;
238
+ var _newArticleId2 = action.payload;
198
239
  newState = {
199
- articleId: _newArticleId,
240
+ articleId: _newArticleId2,
200
241
  history: currentHistory,
201
- view: getViewForArticleId(_newArticleId)
242
+ view: getViewForArticleId(_newArticleId2)
202
243
  };
203
244
  } else if (action.type === 'updateView' && action.payload) {
204
245
  var newView = action.payload;
@@ -213,15 +254,12 @@ var navigationReducer = function navigationReducer(_ref3, action) {
213
254
  };
214
255
 
215
256
  var NavigationContextProvider = function NavigationContextProvider(_ref4) {
216
- var _ref4$articleId = _ref4.articleId,
217
- propsArticleId = _ref4$articleId === void 0 ? {
218
- id: '',
219
- type: _Help.ARTICLE_TYPE.HELP_ARTICLE
220
- } : _ref4$articleId,
221
- articleIdSetter = _ref4.articleIdSetter,
222
- _ref4$history = _ref4.history,
223
- propsHistory = _ref4$history === void 0 ? [] : _ref4$history,
224
- historySetter = _ref4.historySetter,
257
+ var _ref4$navigationData = _ref4.navigationData,
258
+ navigationData = _ref4$navigationData === void 0 ? {
259
+ articleId: DEFAULT_ARTICLE_ID,
260
+ history: []
261
+ } : _ref4$navigationData,
262
+ setNavigationData = _ref4.setNavigationData,
225
263
  children = _ref4.children;
226
264
 
227
265
  var _useHelpArticleContex = (0, _helpArticleContext.useHelpArticleContext)(),
@@ -242,9 +280,12 @@ var NavigationContextProvider = function NavigationContextProvider(_ref4) {
242
280
  var _useHeaderContext = (0, _headerContext.useHeaderContext)(),
243
281
  onCloseButtonClick = _useHeaderContext.onCloseButtonClick;
244
282
 
283
+ var propsArticleId = navigationData.articleId,
284
+ propsHistory = navigationData.history;
285
+
245
286
  var _useReducer = (0, _react.useReducer)(navigationReducer, {
246
287
  articleId: propsArticleId,
247
- history: propsHistory,
288
+ history: !(0, _isEqual.default)(propsArticleId, DEFAULT_ARTICLE_ID) && propsHistory.length === 0 ? [getNewHistoryItem(propsArticleId.id, propsArticleId.type)] : propsHistory,
248
289
  view: _constants.VIEW.DEFAULT_CONTENT
249
290
  }),
250
291
  _useReducer2 = (0, _slicedToArray2.default)(_useReducer, 2),
@@ -264,8 +305,6 @@ var NavigationContextProvider = function NavigationContextProvider(_ref4) {
264
305
  /**
265
306
  * - If default content isn't defined and the history only has one article,
266
307
  * we should not display the back button
267
- * - If the prop.article.setArticleId is not defined, we should also hide the back
268
- * button because we are not able to navigate though the history without it
269
308
  */
270
309
  if (currentHistory.length === 1 && !isDefaultContentDefined || currentView === _constants.VIEW.WHATS_NEW && !isDefaultContentDefined) {
271
310
  return false;
@@ -453,6 +492,12 @@ var NavigationContextProvider = function NavigationContextProvider(_ref4) {
453
492
  onCloseButtonClick(event, analyticsEvent);
454
493
  }
455
494
  }, [onCloseButtonClick]);
495
+ var onOpenArticle = (0, _react.useCallback)(function (newArticleId) {
496
+ dispatchNavigationAction({
497
+ type: 'addNewHistoryItem',
498
+ payload: newArticleId
499
+ });
500
+ }, []);
456
501
  (0, _react.useEffect)(function () {
457
502
  if (isSearchResultVisible) {
458
503
  dispatchNavigationAction({
@@ -462,43 +507,59 @@ var NavigationContextProvider = function NavigationContextProvider(_ref4) {
462
507
  }
463
508
  }, [isSearchResultVisible]);
464
509
  (0, _react.useEffect)(function () {
465
- var simpleHistory = getSimpleHistory(currentHistory);
466
- historySetter && historySetter(simpleHistory);
467
- }, [historySetter, currentHistory]);
468
- (0, _react.useEffect)(function () {
510
+ var lastHistoryItem = currentHistory.length > 0 ? _getCurrentArticle2(currentHistory) : getNewHistoryItem(DEFAULT_ARTICLE_ID.id, DEFAULT_ARTICLE_ID.type);
469
511
  /**
470
512
  * If the propsArticleId.id (host articleId) is different from currentArticleId.id (internal articleId)
471
- * it means the host updated propsArticleId and we need to use this new value to load a new article.
472
513
  * */
473
- if ((propsArticleId === null || propsArticleId === void 0 ? void 0 : propsArticleId.id) !== currentArticleId.id || (propsArticleId === null || propsArticleId === void 0 ? void 0 : propsArticleId.type) !== currentArticleId.type) {
474
- dispatchNavigationAction({
475
- type: 'newArticle',
476
- payload: propsArticleId
477
- });
478
- } else {
514
+
515
+ if (!(0, _isEqual.default)(propsArticleId, currentArticleId)) {
479
516
  /**
480
- * If the propsArticleId.id (host articleId) is equal to currentArticleId.id (internal articleId)
481
- * and the id from the last history item is different from currentArticleId.id, it means the history
482
- * changed and we need to update the host articleId (propsArticleId) using 'articleIdSetter' and the local
483
- * history using the dispatchNavigationAction reducer
484
- * */
485
- var lastHistoryItem = currentHistory.length > 0 ? _getCurrentArticle2(currentHistory) : getNewHistoryItem('', _Help.ARTICLE_TYPE.HELP_ARTICLE);
486
-
487
- if (articleIdSetter && lastHistoryItem && (currentArticleId.id !== lastHistoryItem.id || currentArticleId.type !== lastHistoryItem.type)) {
517
+ * If propsArticleId and lastHistoryItem are the same, we just need to update the articleId
518
+ * because is out of sync
519
+ */
520
+ if (propsArticleId.id === lastHistoryItem.id && propsArticleId.type === lastHistoryItem.type) {
488
521
  dispatchNavigationAction({
489
522
  type: 'updateArticleId',
490
- payload: {
491
- id: lastHistoryItem.id,
492
- type: lastHistoryItem.type
493
- }
523
+ payload: propsArticleId
494
524
  });
495
- articleIdSetter({
496
- id: lastHistoryItem.id,
497
- type: lastHistoryItem.type
525
+ } else {
526
+ /**
527
+ * Otherwise we need to add a new article
528
+ */
529
+ dispatchNavigationAction({
530
+ type: 'newArticle',
531
+ payload: propsArticleId
498
532
  });
499
533
  }
534
+ } else {
535
+ // console.log('same articleId');
536
+ if (setNavigationData) {
537
+ var simpleHistory = getSimpleHistory(currentHistory);
538
+
539
+ if (currentArticleId.id !== lastHistoryItem.id || currentArticleId.type !== lastHistoryItem.type) {
540
+ /**
541
+ * If the propsArticleId.id (host articleId) is equal to currentArticleId.id (internal articleId)
542
+ * and the id from the last history item is different from currentArticleId.id, it means the history
543
+ * changed
544
+ * */
545
+ if (setNavigationData) {
546
+ setNavigationData({
547
+ articleId: {
548
+ id: lastHistoryItem.id,
549
+ type: lastHistoryItem.type
550
+ },
551
+ history: simpleHistory
552
+ });
553
+ }
554
+ } else if (!(0, _isEqual.default)(getHistoryData(propsHistory), getHistoryData(currentHistory))) {
555
+ setNavigationData({
556
+ articleId: propsArticleId,
557
+ history: simpleHistory
558
+ });
559
+ }
560
+ }
500
561
  }
501
- }, [currentArticleId, propsArticleId, currentHistory, articleIdSetter]);
562
+ }, [currentArticleId, propsArticleId, currentHistory, setNavigationData, propsHistory]);
502
563
  (0, _react.useEffect)(function () {
503
564
  var requestNewArticle = /*#__PURE__*/function () {
504
565
  var _ref8 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(historyItem) {
@@ -544,7 +605,7 @@ var NavigationContextProvider = function NavigationContextProvider(_ref4) {
544
605
  value: {
545
606
  view: currentView,
546
607
  articleId: currentArticleId,
547
- setArticleId: articleIdSetter,
608
+ openArticle: onOpenArticle,
548
609
  history: currentHistory,
549
610
  getCurrentArticle: function getCurrentArticle() {
550
611
  return _getCurrentArticle2(currentHistory);
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/help",
3
- "version": "6.0.7",
3
+ "version": "7.0.2",
4
4
  "sideEffects": false
5
5
  }
@@ -14,7 +14,7 @@ export const HelpArticle = ({
14
14
  isLoading
15
15
  }) => {
16
16
  const {
17
- setArticleId,
17
+ openArticle,
18
18
  getCurrentArticleItemData
19
19
  } = useNavigationContext();
20
20
  const {
@@ -56,13 +56,11 @@ export const HelpArticle = ({
56
56
  onRelatedArticlesListItemClick(event, analyticsEvent, articleData);
57
57
  }
58
58
 
59
- if (setArticleId) {
60
- setArticleId({
61
- id: articleData.id,
62
- type: ARTICLE_TYPE.HELP_ARTICLE
63
- });
64
- }
65
- }, [setArticleId, onRelatedArticlesListItemClick]);
59
+ openArticle({
60
+ id: articleData.id,
61
+ type: ARTICLE_TYPE.HELP_ARTICLE
62
+ });
63
+ }, [openArticle, onRelatedArticlesListItemClick]);
66
64
  const handleOnRelatedArticlesShowMoreClick = useCallback((event, analyticsEvent, isCollapsed) => {
67
65
  analyticsEvent.payload.attributes = {
68
66
  componentName: 'Article',
@@ -44,19 +44,16 @@ export const SearchResults = () => {
44
44
  onSearchExternalUrlClick
45
45
  } = useSearchContext();
46
46
  const {
47
- setArticleId,
47
+ openArticle,
48
48
  view
49
49
  } = useNavigationContext();
50
50
  const handleOnSearchResultItemClick = useCallback((event, analyticsEvent, articleData) => {
51
- if (setArticleId) {
52
- setArticleId({
53
- id: articleData.id,
54
- type: ARTICLE_TYPE.HELP_ARTICLE
55
- });
56
- }
57
-
51
+ openArticle({
52
+ id: articleData.id,
53
+ type: ARTICLE_TYPE.HELP_ARTICLE
54
+ });
58
55
  onSearchResultItemClick(event, analyticsEvent, articleData);
59
- }, [onSearchResultItemClick, setArticleId]);
56
+ }, [onSearchResultItemClick, openArticle]);
60
57
  return /*#__PURE__*/React.createElement(Transition, {
61
58
  in: view === VIEW.SEARCH && isSearchResultVisible,
62
59
  timeout: FADEIN_OVERLAY_TRANSITION_DURATION_MS