@atlaskit/link-datasource 1.0.2 → 1.0.3

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @atlaskit/link-datasource
2
2
 
3
+ ## 1.0.3
4
+
5
+ ### Patch Changes
6
+
7
+ - [`513a4e98543`](https://bitbucket.org/atlassian/atlassian-frontend/commits/513a4e98543) - [ux] links will now fallback to rendering as an anchor if smart-card fails to resolve
8
+
3
9
  ## 1.0.2
4
10
 
5
11
  ### Patch Changes
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.fallbackRenderType = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
8
9
  var _react = _interopRequireDefault(require("react"));
9
10
  var _boolean = _interopRequireDefault(require("./boolean"));
10
11
  var _dateTime = _interopRequireDefault(require("./date-time"));
@@ -17,7 +18,7 @@ var _tag = _interopRequireDefault(require("./tag"));
17
18
  var _text = _interopRequireDefault(require("./text"));
18
19
  var _user = _interopRequireDefault(require("./user"));
19
20
  var fallbackRenderType = function fallbackRenderType(item) {
20
- var _item$value, _item$value2;
21
+ var _item$value, _item$value2, _item$value3;
21
22
  switch (item.type) {
22
23
  case 'boolean':
23
24
  return /*#__PURE__*/_react.default.createElement(_boolean.default, {
@@ -36,7 +37,9 @@ var fallbackRenderType = function fallbackRenderType(item) {
36
37
  case 'icon':
37
38
  return /*#__PURE__*/_react.default.createElement(_icon.default, item.value);
38
39
  case 'link':
39
- return /*#__PURE__*/_react.default.createElement(_link.default, item.value);
40
+ return /*#__PURE__*/_react.default.createElement(_link.default, (0, _extends2.default)({
41
+ key: (_item$value = item.value) === null || _item$value === void 0 ? void 0 : _item$value.url
42
+ }, item.value));
40
43
  case 'number':
41
44
  return /*#__PURE__*/_react.default.createElement(_number.default, {
42
45
  number: item.value
@@ -49,7 +52,7 @@ var fallbackRenderType = function fallbackRenderType(item) {
49
52
  });
50
53
  case 'tag':
51
54
  return /*#__PURE__*/_react.default.createElement(_tag.default, {
52
- key: ((_item$value = item.value) === null || _item$value === void 0 ? void 0 : _item$value.id) || ((_item$value2 = item.value) === null || _item$value2 === void 0 ? void 0 : _item$value2.text),
55
+ key: ((_item$value2 = item.value) === null || _item$value2 === void 0 ? void 0 : _item$value2.id) || ((_item$value3 = item.value) === null || _item$value3 === void 0 ? void 0 : _item$value3.text),
53
56
  tag: item.value
54
57
  });
55
58
  case 'time':
@@ -8,7 +8,6 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.default = exports.LINK_TYPE_TEST_ID = void 0;
9
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
10
  var _react = _interopRequireWildcard(require("react"));
11
- var _reactErrorBoundary = require("react-error-boundary");
12
11
  var _smartCard = require("@atlaskit/smart-card");
13
12
  var _linkUrl = _interopRequireDefault(require("@atlaskit/smart-card/link-url"));
14
13
  var _colors = require("@atlaskit/theme/colors");
@@ -44,14 +43,20 @@ var LinkRenderType = function LinkRenderType(_ref) {
44
43
  }, text || url);
45
44
  }, [linkStyle, url, text, testId]);
46
45
  var SmartCard = function SmartCard() {
47
- return /*#__PURE__*/_react.default.createElement(_reactErrorBoundary.ErrorBoundary, {
48
- fallback: anchor
49
- }, /*#__PURE__*/_react.default.createElement(_smartCard.Card, {
46
+ return /*#__PURE__*/_react.default.createElement(_smartCard.Card, {
50
47
  appearance: "inline",
51
48
  url: url,
52
- testId: testId
53
- }));
49
+ testId: testId,
50
+ fallbackComponent: function fallbackComponent() {
51
+ return anchor;
52
+ }
53
+ });
54
54
  };
55
+
56
+ // url can be undefined before data is fetched whilst adding new link column to display
57
+ if (!url) {
58
+ return null;
59
+ }
55
60
  return text ? anchor : /*#__PURE__*/_react.default.createElement(SmartCard, null);
56
61
  };
57
62
  var _default = /*#__PURE__*/_react.default.memo(LinkRenderType);
@@ -344,7 +344,7 @@ var analyticsContextAttributes = {
344
344
  };
345
345
  var analyticsContextData = {
346
346
  packageName: "@atlaskit/link-datasource",
347
- packageVersion: "1.0.2",
347
+ packageVersion: "1.0.3",
348
348
  source: 'datasourceConfigModal'
349
349
  };
350
350
  var contextData = _objectSpread(_objectSpread({}, analyticsContextData), {}, {
@@ -1,3 +1,4 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
1
2
  import React from 'react';
2
3
  import BooleanRenderType from './boolean';
3
4
  import DateTimeRenderType from './date-time';
@@ -10,7 +11,7 @@ import TagRenderType from './tag';
10
11
  import StringRenderType from './text';
11
12
  import UserRenderType from './user';
12
13
  export const fallbackRenderType = item => {
13
- var _item$value, _item$value2;
14
+ var _item$value, _item$value2, _item$value3;
14
15
  switch (item.type) {
15
16
  case 'boolean':
16
17
  return /*#__PURE__*/React.createElement(BooleanRenderType, {
@@ -29,7 +30,9 @@ export const fallbackRenderType = item => {
29
30
  case 'icon':
30
31
  return /*#__PURE__*/React.createElement(IconRenderType, item.value);
31
32
  case 'link':
32
- return /*#__PURE__*/React.createElement(LinkRenderType, item.value);
33
+ return /*#__PURE__*/React.createElement(LinkRenderType, _extends({
34
+ key: (_item$value = item.value) === null || _item$value === void 0 ? void 0 : _item$value.url
35
+ }, item.value));
33
36
  case 'number':
34
37
  return /*#__PURE__*/React.createElement(NumberRenderType, {
35
38
  number: item.value
@@ -42,7 +45,7 @@ export const fallbackRenderType = item => {
42
45
  });
43
46
  case 'tag':
44
47
  return /*#__PURE__*/React.createElement(TagRenderType, {
45
- key: ((_item$value = item.value) === null || _item$value === void 0 ? void 0 : _item$value.id) || ((_item$value2 = item.value) === null || _item$value2 === void 0 ? void 0 : _item$value2.text),
48
+ key: ((_item$value2 = item.value) === null || _item$value2 === void 0 ? void 0 : _item$value2.id) || ((_item$value3 = item.value) === null || _item$value3 === void 0 ? void 0 : _item$value3.text),
46
49
  tag: item.value
47
50
  });
48
51
  case 'time':
@@ -1,5 +1,4 @@
1
1
  import React, { useMemo } from 'react';
2
- import { ErrorBoundary } from 'react-error-boundary';
3
2
  import { Card } from '@atlaskit/smart-card';
4
3
  import LinkUrl from '@atlaskit/smart-card/link-url';
5
4
  import { N300 } from '@atlaskit/theme/colors';
@@ -28,13 +27,17 @@ const LinkRenderType = ({
28
27
  "data-testid": testId,
29
28
  target: "_blank"
30
29
  }, text || url), [linkStyle, url, text, testId]);
31
- const SmartCard = () => /*#__PURE__*/React.createElement(ErrorBoundary, {
32
- fallback: anchor
33
- }, /*#__PURE__*/React.createElement(Card, {
30
+ const SmartCard = () => /*#__PURE__*/React.createElement(Card, {
34
31
  appearance: "inline",
35
32
  url: url,
36
- testId: testId
37
- }));
33
+ testId: testId,
34
+ fallbackComponent: () => anchor
35
+ });
36
+
37
+ // url can be undefined before data is fetched whilst adding new link column to display
38
+ if (!url) {
39
+ return null;
40
+ }
38
41
  return text ? anchor : /*#__PURE__*/React.createElement(SmartCard, null);
39
42
  };
40
43
  export default /*#__PURE__*/React.memo(LinkRenderType);
@@ -290,7 +290,7 @@ const analyticsContextAttributes = {
290
290
  };
291
291
  const analyticsContextData = {
292
292
  packageName: "@atlaskit/link-datasource",
293
- packageVersion: "1.0.2",
293
+ packageVersion: "1.0.3",
294
294
  source: 'datasourceConfigModal'
295
295
  };
296
296
  const contextData = {
@@ -1,3 +1,4 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
1
2
  import React from 'react';
2
3
  import BooleanRenderType from './boolean';
3
4
  import DateTimeRenderType from './date-time';
@@ -10,7 +11,7 @@ import TagRenderType from './tag';
10
11
  import StringRenderType from './text';
11
12
  import UserRenderType from './user';
12
13
  export var fallbackRenderType = function fallbackRenderType(item) {
13
- var _item$value, _item$value2;
14
+ var _item$value, _item$value2, _item$value3;
14
15
  switch (item.type) {
15
16
  case 'boolean':
16
17
  return /*#__PURE__*/React.createElement(BooleanRenderType, {
@@ -29,7 +30,9 @@ export var fallbackRenderType = function fallbackRenderType(item) {
29
30
  case 'icon':
30
31
  return /*#__PURE__*/React.createElement(IconRenderType, item.value);
31
32
  case 'link':
32
- return /*#__PURE__*/React.createElement(LinkRenderType, item.value);
33
+ return /*#__PURE__*/React.createElement(LinkRenderType, _extends({
34
+ key: (_item$value = item.value) === null || _item$value === void 0 ? void 0 : _item$value.url
35
+ }, item.value));
33
36
  case 'number':
34
37
  return /*#__PURE__*/React.createElement(NumberRenderType, {
35
38
  number: item.value
@@ -42,7 +45,7 @@ export var fallbackRenderType = function fallbackRenderType(item) {
42
45
  });
43
46
  case 'tag':
44
47
  return /*#__PURE__*/React.createElement(TagRenderType, {
45
- key: ((_item$value = item.value) === null || _item$value === void 0 ? void 0 : _item$value.id) || ((_item$value2 = item.value) === null || _item$value2 === void 0 ? void 0 : _item$value2.text),
48
+ key: ((_item$value2 = item.value) === null || _item$value2 === void 0 ? void 0 : _item$value2.id) || ((_item$value3 = item.value) === null || _item$value3 === void 0 ? void 0 : _item$value3.text),
46
49
  tag: item.value
47
50
  });
48
51
  case 'time':
@@ -2,7 +2,6 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  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; }
3
3
  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) { _defineProperty(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; }
4
4
  import React, { useMemo } from 'react';
5
- import { ErrorBoundary } from 'react-error-boundary';
6
5
  import { Card } from '@atlaskit/smart-card';
7
6
  import LinkUrl from '@atlaskit/smart-card/link-url';
8
7
  import { N300 } from '@atlaskit/theme/colors';
@@ -33,14 +32,20 @@ var LinkRenderType = function LinkRenderType(_ref) {
33
32
  }, text || url);
34
33
  }, [linkStyle, url, text, testId]);
35
34
  var SmartCard = function SmartCard() {
36
- return /*#__PURE__*/React.createElement(ErrorBoundary, {
37
- fallback: anchor
38
- }, /*#__PURE__*/React.createElement(Card, {
35
+ return /*#__PURE__*/React.createElement(Card, {
39
36
  appearance: "inline",
40
37
  url: url,
41
- testId: testId
42
- }));
38
+ testId: testId,
39
+ fallbackComponent: function fallbackComponent() {
40
+ return anchor;
41
+ }
42
+ });
43
43
  };
44
+
45
+ // url can be undefined before data is fetched whilst adding new link column to display
46
+ if (!url) {
47
+ return null;
48
+ }
44
49
  return text ? anchor : /*#__PURE__*/React.createElement(SmartCard, null);
45
50
  };
46
51
  export default /*#__PURE__*/React.memo(LinkRenderType);
@@ -334,7 +334,7 @@ var analyticsContextAttributes = {
334
334
  };
335
335
  var analyticsContextData = {
336
336
  packageName: "@atlaskit/link-datasource",
337
- packageVersion: "1.0.2",
337
+ packageVersion: "1.0.3",
338
338
  source: 'datasourceConfigModal'
339
339
  };
340
340
  var contextData = _objectSpread(_objectSpread({}, analyticsContextData), {}, {
@@ -4,5 +4,5 @@ interface LinkProps extends Link {
4
4
  testId?: string;
5
5
  }
6
6
  export declare const LINK_TYPE_TEST_ID = "link-datasource-render-type--link";
7
- declare const _default: React.MemoExoticComponent<({ style, url, text, testId, }: LinkProps) => JSX.Element>;
7
+ declare const _default: React.MemoExoticComponent<({ style, url, text, testId, }: LinkProps) => JSX.Element | null>;
8
8
  export default _default;
@@ -4,5 +4,5 @@ interface LinkProps extends Link {
4
4
  testId?: string;
5
5
  }
6
6
  export declare const LINK_TYPE_TEST_ID = "link-datasource-render-type--link";
7
- declare const _default: React.MemoExoticComponent<({ style, url, text, testId, }: LinkProps) => JSX.Element>;
7
+ declare const _default: React.MemoExoticComponent<({ style, url, text, testId, }: LinkProps) => JSX.Element | null>;
8
8
  export default _default;
@@ -1,6 +1,7 @@
1
1
  import { JsonLd } from 'json-ld-types';
2
2
 
3
3
  import { CardClient } from '@atlaskit/link-provider';
4
+ import { APIError } from '@atlaskit/linking-common';
4
5
 
5
6
  import { mockJqlSmartLinkData } from './mockJqlSmartLinkData';
6
7
  import { mocks } from './mockSmartLinkData';
@@ -15,6 +16,13 @@ class SmartLinkClient extends CardClient {
15
16
  return Promise.resolve(mocks.resolved);
16
17
  case 'https://link-that-does-not-resolve.com':
17
18
  return Promise.reject(`Can't resolve from ${url}`);
19
+ case 'https://link-that-is-unsupported.com':
20
+ throw new APIError(
21
+ 'fatal',
22
+ new URL(url).hostname,
23
+ 'received unsupported error',
24
+ 'ResolveUnsupportedError',
25
+ );
18
26
  case jqlUrlRegExp.test(url) ? url : undefined:
19
27
  return Promise.resolve(mockJqlSmartLinkData.resolved);
20
28
  default:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/link-datasource",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "UI Components to support linking platform dataset feature",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -66,7 +66,6 @@
66
66
  "@emotion/styled": "^11.0.0",
67
67
  "debounce-promise": "^3.1.2",
68
68
  "react-dom": "^16.8.0",
69
- "react-error-boundary": "^3.1.3",
70
69
  "tiny-invariant": "^1.2.0"
71
70
  },
72
71
  "peerDependencies": {