@atlaskit/smart-card 19.1.19 → 19.1.22
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 +20 -0
- package/dist/cjs/state/analytics/useSmartLinkAnalytics.js +7 -3
- package/dist/cjs/state/helpers.js +26 -4
- package/dist/cjs/utils/analytics/analytics.js +3 -2
- package/dist/cjs/version.json +1 -1
- package/dist/cjs/view/CardWithUrl/component.js +4 -2
- package/dist/cjs/view/FlexibleCard/components/blocks/element-group/index.js +19 -2
- package/dist/cjs/view/FlexibleCard/components/blocks/footer-block/index.js +19 -0
- package/dist/cjs/view/FlexibleCard/components/blocks/metadata-block/index.js +6 -25
- package/dist/cjs/view/FlexibleCard/components/blocks/utils.js +1 -1
- package/dist/cjs/view/FlexibleCard/components/elements/avatar-group/index.js +5 -3
- package/dist/cjs/view/FlexibleCard/components/elements/badge/index.js +4 -4
- package/dist/cjs/view/FlexibleCard/components/elements/lozenge/index.js +1 -1
- package/dist/cjs/view/FlexibleCard/components/elements/media/index.js +1 -1
- package/dist/cjs/view/FlexibleCard/components/utils.js +19 -2
- package/dist/cjs/view/HoverCard/components/hover-card-content.js +2 -1
- package/dist/cjs/view/HoverCard/utils.js +6 -3
- package/dist/es2019/state/analytics/useSmartLinkAnalytics.js +6 -3
- package/dist/es2019/state/helpers.js +25 -3
- package/dist/es2019/utils/analytics/analytics.js +3 -2
- package/dist/es2019/version.json +1 -1
- package/dist/es2019/view/CardWithUrl/component.js +5 -3
- package/dist/es2019/view/FlexibleCard/components/blocks/element-group/index.js +48 -1
- package/dist/es2019/view/FlexibleCard/components/blocks/footer-block/index.js +16 -1
- package/dist/es2019/view/FlexibleCard/components/blocks/metadata-block/index.js +6 -33
- package/dist/es2019/view/FlexibleCard/components/blocks/utils.js +1 -0
- package/dist/es2019/view/FlexibleCard/components/elements/avatar-group/index.js +6 -1
- package/dist/es2019/view/FlexibleCard/components/elements/badge/index.js +7 -2
- package/dist/es2019/view/FlexibleCard/components/elements/lozenge/index.js +1 -0
- package/dist/es2019/view/FlexibleCard/components/elements/media/index.js +2 -1
- package/dist/es2019/view/FlexibleCard/components/utils.js +17 -1
- package/dist/es2019/view/HoverCard/components/hover-card-content.js +2 -1
- package/dist/es2019/view/HoverCard/utils.js +4 -3
- package/dist/esm/state/analytics/useSmartLinkAnalytics.js +8 -4
- package/dist/esm/state/helpers.js +19 -3
- package/dist/esm/utils/analytics/analytics.js +3 -2
- package/dist/esm/version.json +1 -1
- package/dist/esm/view/CardWithUrl/component.js +5 -3
- package/dist/esm/view/FlexibleCard/components/blocks/element-group/index.js +19 -3
- package/dist/esm/view/FlexibleCard/components/blocks/footer-block/index.js +19 -1
- package/dist/esm/view/FlexibleCard/components/blocks/metadata-block/index.js +6 -26
- package/dist/esm/view/FlexibleCard/components/blocks/utils.js +1 -1
- package/dist/esm/view/FlexibleCard/components/elements/avatar-group/index.js +5 -3
- package/dist/esm/view/FlexibleCard/components/elements/badge/index.js +4 -4
- package/dist/esm/view/FlexibleCard/components/elements/lozenge/index.js +1 -1
- package/dist/esm/view/FlexibleCard/components/elements/media/index.js +1 -1
- package/dist/esm/view/FlexibleCard/components/utils.js +15 -1
- package/dist/esm/view/HoverCard/components/hover-card-content.js +2 -1
- package/dist/esm/view/HoverCard/utils.js +4 -3
- package/dist/types/state/analytics/useSmartLinkAnalytics.d.ts +3 -1
- package/dist/types/state/helpers.d.ts +3 -0
- package/dist/types/state/hooks/useSmartLink.d.ts +1 -1
- package/dist/types/utils/analytics/analytics.d.ts +1 -1
- package/dist/types/utils/analytics/types.d.ts +1 -0
- package/dist/types/view/FlexibleCard/components/utils.d.ts +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# @atlaskit/smart-card
|
|
2
2
|
|
|
3
|
+
## 19.1.22
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`c6978e3a40c`](https://bitbucket.org/atlassian/atlassian-frontend/commits/c6978e3a40c) - This update adds Destination product and subproduct (core, servicedesk, software, etc.) analytics now available in the Smart Link ui card clicked event. At the time of writing, only Jira links have this functionality.
|
|
8
|
+
|
|
9
|
+
## 19.1.21
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [`b39f43e68c3`](https://bitbucket.org/atlassian/atlassian-frontend/commits/b39f43e68c3) - [ux] Hover Preview: Add CreatedBy to 3P link metadata
|
|
14
|
+
|
|
15
|
+
[ux] Flexible UI: Text based elements now wrap and truncate within metadata group.
|
|
16
|
+
|
|
17
|
+
## 19.1.20
|
|
18
|
+
|
|
19
|
+
### Patch Changes
|
|
20
|
+
|
|
21
|
+
- [`0b7abdcf058`](https://bitbucket.org/atlassian/atlassian-frontend/commits/0b7abdcf058) - Flexible UI: Fix PreviewBlock not showing image loading skeleton
|
|
22
|
+
|
|
3
23
|
## 19.1.19
|
|
4
24
|
|
|
5
25
|
### Patch Changes
|
|
@@ -36,6 +36,8 @@ var useSmartLinkAnalytics = function useSmartLinkAnalytics(url, dispatchAnalytic
|
|
|
36
36
|
var extractedDefinitionId = (0, _helpers.getDefinitionId)(state.details);
|
|
37
37
|
var extractedExtensionKey = (0, _helpers.getExtensionKey)(state.details);
|
|
38
38
|
var extractedResourceType = (0, _helpers.getResourceType)(state.details);
|
|
39
|
+
var extractedSubproduct = (0, _helpers.getSubproduct)(state.details);
|
|
40
|
+
var extractedProduct = (0, _helpers.getProduct)(state.details);
|
|
39
41
|
/** Contains all ui analytics events */
|
|
40
42
|
|
|
41
43
|
var ui = (0, _react.useMemo)(function () {
|
|
@@ -72,6 +74,7 @@ var useSmartLinkAnalytics = function useSmartLinkAnalytics(url, dispatchAnalytic
|
|
|
72
74
|
* This fires an event that represents when a user clicks on a Smart Link.
|
|
73
75
|
* @param id The unique ID for this Smart Link.
|
|
74
76
|
* @param display Whether the card was an Inline, Block, Embed or Flexible UI.
|
|
77
|
+
* @param status What status the Smart Link is currently in (e.g. resolved, unresolved)
|
|
75
78
|
* @param definitionId The definitionId of the Smart Link resolver invoked.
|
|
76
79
|
* @param extensionKey The extensionKey of the Smart Link resovler invoked.
|
|
77
80
|
* @param isModifierKeyPressed Whether a modifier key was pressed when clicking the Smart Link.
|
|
@@ -87,8 +90,9 @@ var useSmartLinkAnalytics = function useSmartLinkAnalytics(url, dispatchAnalytic
|
|
|
87
90
|
var extensionKey = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : extractedExtensionKey;
|
|
88
91
|
var isModifierKeyPressed = arguments.length > 5 ? arguments[5] : undefined;
|
|
89
92
|
var location = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : defaultLocation;
|
|
90
|
-
var destinationProduct = arguments.length > 7 ? arguments[7] :
|
|
91
|
-
|
|
93
|
+
var destinationProduct = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : extractedProduct;
|
|
94
|
+
var destinationSubproduct = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : extractedSubproduct;
|
|
95
|
+
return dispatchAnalytics((0, _analytics.uiCardClickedEvent)(id, display, status, definitionId, extensionKey, isModifierKeyPressed, location, destinationProduct, destinationSubproduct));
|
|
92
96
|
},
|
|
93
97
|
|
|
94
98
|
/**
|
|
@@ -198,7 +202,7 @@ var useSmartLinkAnalytics = function useSmartLinkAnalytics(url, dispatchAnalytic
|
|
|
198
202
|
return dispatchAnalytics((0, _analytics.uiHoverCardDismissedEvent)(id, previewDisplay, hoverTime, definitionId, extensionKey, previewInvokeMethod));
|
|
199
203
|
}
|
|
200
204
|
};
|
|
201
|
-
}, [defaultId, defaultLocation,
|
|
205
|
+
}, [extractedDefinitionId, extractedExtensionKey, dispatchAnalytics, defaultId, defaultLocation, extractedProduct, extractedSubproduct]);
|
|
202
206
|
/** Contains all operational analytics events */
|
|
203
207
|
|
|
204
208
|
var operational = (0, _react.useMemo)(function () {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.isVisible = exports.isFinalState = exports.isAccessible = exports.hasResolved = exports.getStatus = exports.getServices = exports.getResourceType = exports.getExtensionKey = exports.getDefinitionId = exports.getClickUrl = exports.getByDefinitionId = void 0;
|
|
6
|
+
exports.isVisible = exports.isFinalState = exports.isAccessible = exports.hasResolved = exports.getSubproduct = exports.getStatus = exports.getServices = exports.getResourceType = exports.getProduct = exports.getExtensionKey = exports.getDefinitionId = exports.getClickUrl = exports.getByDefinitionId = void 0;
|
|
7
7
|
|
|
8
8
|
var _extractVisitUrl = require("../extractors/common/primitives/extractVisitUrl");
|
|
9
9
|
|
|
@@ -32,23 +32,45 @@ var getClickUrl = function getClickUrl(url, jsonLd) {
|
|
|
32
32
|
exports.getClickUrl = getClickUrl;
|
|
33
33
|
|
|
34
34
|
var getDefinitionId = function getDefinitionId(details) {
|
|
35
|
-
|
|
35
|
+
var _details$meta;
|
|
36
|
+
|
|
37
|
+
return details === null || details === void 0 ? void 0 : (_details$meta = details.meta) === null || _details$meta === void 0 ? void 0 : _details$meta.definitionId;
|
|
36
38
|
};
|
|
37
39
|
|
|
38
40
|
exports.getDefinitionId = getDefinitionId;
|
|
39
41
|
|
|
40
42
|
var getExtensionKey = function getExtensionKey(details) {
|
|
41
|
-
|
|
43
|
+
var _details$meta2;
|
|
44
|
+
|
|
45
|
+
return details === null || details === void 0 ? void 0 : (_details$meta2 = details.meta) === null || _details$meta2 === void 0 ? void 0 : _details$meta2.key;
|
|
42
46
|
};
|
|
43
47
|
|
|
44
48
|
exports.getExtensionKey = getExtensionKey;
|
|
45
49
|
|
|
46
50
|
var getResourceType = function getResourceType(details) {
|
|
47
|
-
|
|
51
|
+
var _details$meta3;
|
|
52
|
+
|
|
53
|
+
return details === null || details === void 0 ? void 0 : (_details$meta3 = details.meta) === null || _details$meta3 === void 0 ? void 0 : _details$meta3.resourceType;
|
|
48
54
|
};
|
|
49
55
|
|
|
50
56
|
exports.getResourceType = getResourceType;
|
|
51
57
|
|
|
58
|
+
var getProduct = function getProduct(details) {
|
|
59
|
+
var _details$meta4;
|
|
60
|
+
|
|
61
|
+
return details === null || details === void 0 ? void 0 : (_details$meta4 = details.meta) === null || _details$meta4 === void 0 ? void 0 : _details$meta4.product;
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
exports.getProduct = getProduct;
|
|
65
|
+
|
|
66
|
+
var getSubproduct = function getSubproduct(details) {
|
|
67
|
+
var _details$meta5;
|
|
68
|
+
|
|
69
|
+
return details === null || details === void 0 ? void 0 : (_details$meta5 = details.meta) === null || _details$meta5 === void 0 ? void 0 : _details$meta5.subproduct;
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
exports.getSubproduct = getSubproduct;
|
|
73
|
+
|
|
52
74
|
var getServices = function getServices(details) {
|
|
53
75
|
return details && details.meta.auth || [];
|
|
54
76
|
};
|
|
@@ -235,7 +235,7 @@ var uiAuthAlternateAccountEvent = function uiAuthAlternateAccountEvent(display,
|
|
|
235
235
|
|
|
236
236
|
exports.uiAuthAlternateAccountEvent = uiAuthAlternateAccountEvent;
|
|
237
237
|
|
|
238
|
-
var uiCardClickedEvent = function uiCardClickedEvent(id, display, status, definitionId, extensionKey, isModifierKeyPressed, location, destinationProduct) {
|
|
238
|
+
var uiCardClickedEvent = function uiCardClickedEvent(id, display, status, definitionId, extensionKey, isModifierKeyPressed, location, destinationProduct, destinationSubproduct) {
|
|
239
239
|
return {
|
|
240
240
|
action: 'clicked',
|
|
241
241
|
actionSubject: 'smartLink',
|
|
@@ -249,7 +249,8 @@ var uiCardClickedEvent = function uiCardClickedEvent(id, display, status, defini
|
|
|
249
249
|
display: display,
|
|
250
250
|
isModifierKeyPressed: isModifierKeyPressed,
|
|
251
251
|
location: location,
|
|
252
|
-
destinationProduct: destinationProduct
|
|
252
|
+
destinationProduct: destinationProduct,
|
|
253
|
+
destinationSubproduct: destinationSubproduct
|
|
253
254
|
})
|
|
254
255
|
};
|
|
255
256
|
};
|
package/dist/cjs/version.json
CHANGED
|
@@ -68,6 +68,8 @@ function CardWithUrlContent(_ref) {
|
|
|
68
68
|
var definitionId = (0, _helpers.getDefinitionId)(state.details);
|
|
69
69
|
var extensionKey = (0, _helpers.getExtensionKey)(state.details);
|
|
70
70
|
var resourceType = (0, _helpers.getResourceType)(state.details);
|
|
71
|
+
var product = (0, _helpers.getProduct)(state.details);
|
|
72
|
+
var subproduct = (0, _helpers.getSubproduct)(state.details);
|
|
71
73
|
var services = (0, _helpers.getServices)(state.details);
|
|
72
74
|
var isFlexibleUi = (0, _react.useMemo)(function () {
|
|
73
75
|
return (0, _flexible.isFlexibleUiCard)(children);
|
|
@@ -79,14 +81,14 @@ function CardWithUrlContent(_ref) {
|
|
|
79
81
|
}, [state.details, url]);
|
|
80
82
|
var handleClickWrapper = (0, _react.useCallback)(function (event) {
|
|
81
83
|
var isModifierKeyPressed = (0, _utils.isSpecialEvent)(event);
|
|
82
|
-
analytics.ui.cardClickedEvent(id, isFlexibleUi ? 'flexible' : appearance, state.status, definitionId, extensionKey, isModifierKeyPressed);
|
|
84
|
+
analytics.ui.cardClickedEvent(id, isFlexibleUi ? 'flexible' : appearance, state.status, definitionId, extensionKey, isModifierKeyPressed, undefined, product, subproduct);
|
|
83
85
|
|
|
84
86
|
if (onClick) {
|
|
85
87
|
onClick(event);
|
|
86
88
|
} else if (!isFlexibleUi) {
|
|
87
89
|
handleClick(event);
|
|
88
90
|
}
|
|
89
|
-
}, [id, state.status, analytics.ui, appearance, definitionId, extensionKey, onClick, handleClick, isFlexibleUi]);
|
|
91
|
+
}, [id, state.status, analytics.ui, appearance, definitionId, extensionKey, onClick, handleClick, isFlexibleUi, product, subproduct]);
|
|
90
92
|
var handleAuthorize = (0, _react.useCallback)(function () {
|
|
91
93
|
return actions.authorize(appearance);
|
|
92
94
|
}, [actions, appearance]);
|
|
@@ -17,7 +17,9 @@ var _constants = require("../../../../../constants");
|
|
|
17
17
|
|
|
18
18
|
var _utils = require("../utils");
|
|
19
19
|
|
|
20
|
-
var
|
|
20
|
+
var _utils2 = require("../../utils");
|
|
21
|
+
|
|
22
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
|
|
21
23
|
|
|
22
24
|
var getAlignmentStyles = function getAlignmentStyles(align) {
|
|
23
25
|
switch (align) {
|
|
@@ -30,8 +32,23 @@ var getAlignmentStyles = function getAlignmentStyles(align) {
|
|
|
30
32
|
}
|
|
31
33
|
};
|
|
32
34
|
|
|
35
|
+
var getGapStyles = function getGapStyles(size, align) {
|
|
36
|
+
var gap = (0, _utils.getGapSize)(size);
|
|
37
|
+
|
|
38
|
+
if (align === _constants.SmartLinkAlignment.Right) {
|
|
39
|
+
return (0, _core.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\n > span {\n margin-left: ", "rem;\n &:first-child {\n margin-left: initial;\n }\n }\n "])), gap);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
return (0, _core.css)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["\n > span {\n margin-right: ", "rem;\n &:last-child {\n margin-right: initial;\n }\n }\n "])), gap);
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
var getHorizontalDirectionStyles = function getHorizontalDirectionStyles(size, align) {
|
|
46
|
+
var lineHeight = (0, _utils2.getMaxLineHeight)(size);
|
|
47
|
+
return (0, _core.css)(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["\n display: block;\n vertical-align: middle;\n ", "\n\n > span, > div {\n vertical-align: middle;\n\n &[data-smart-element-date-time],\n &[data-smart-element-text] {\n // Show all/wrapped/truncated\n display: inline;\n }\n }\n\n ", "\n "])), (0, _utils2.getTruncateStyles)(1, lineHeight + 'rem'), getGapStyles(size, align));
|
|
48
|
+
};
|
|
49
|
+
|
|
33
50
|
var getElementGroupStyles = function getElementGroupStyles(direction, size, align, width) {
|
|
34
|
-
return (0, _core.css)(
|
|
51
|
+
return (0, _core.css)(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2.default)(["\n ", "\n ", "\n min-width: 10%;\n ", "\n ", "\n"])), (0, _utils.getBaseStyles)(direction, size), getAlignmentStyles(align), width === _constants.SmartLinkWidth.Flexible ? "flex: 1 3;" : '', direction === _constants.SmartLinkDirection.Horizontal ? getHorizontalDirectionStyles(size, align) : '');
|
|
35
52
|
};
|
|
36
53
|
/**
|
|
37
54
|
* Creates a group of Action components. Accepts an array of Actions, in addition to some styling
|
|
@@ -9,8 +9,12 @@ exports.default = void 0;
|
|
|
9
9
|
|
|
10
10
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
11
|
|
|
12
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
13
|
+
|
|
12
14
|
var _react = _interopRequireDefault(require("react"));
|
|
13
15
|
|
|
16
|
+
var _core = require("@emotion/core");
|
|
17
|
+
|
|
14
18
|
var _constants = require("../../../../../constants");
|
|
15
19
|
|
|
16
20
|
var _block = _interopRequireDefault(require("../block"));
|
|
@@ -21,6 +25,16 @@ var _elements = require("../../elements");
|
|
|
21
25
|
|
|
22
26
|
var _actionGroup = _interopRequireDefault(require("../action-group"));
|
|
23
27
|
|
|
28
|
+
var _templateObject;
|
|
29
|
+
|
|
30
|
+
var getActionGroupStyles = function getActionGroupStyles(size) {
|
|
31
|
+
if (size === _constants.SmartLinkSize.XLarge) {
|
|
32
|
+
// The biggest height of the action button exceeds the max line-height
|
|
33
|
+
// of the elements causing the action on the block with x-large size to
|
|
34
|
+
// get cut at the bottom.
|
|
35
|
+
return (0, _core.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n max-height: 2rem;\n "])));
|
|
36
|
+
}
|
|
37
|
+
};
|
|
24
38
|
/**
|
|
25
39
|
* Represents a FooterBlock, designed to contain elements and actions that should appear
|
|
26
40
|
* at the bottom of a link card.
|
|
@@ -28,9 +42,13 @@ var _actionGroup = _interopRequireDefault(require("../action-group"));
|
|
|
28
42
|
* @param {FooterBlockProps} FooterBlockProps
|
|
29
43
|
* @see Block
|
|
30
44
|
*/
|
|
45
|
+
|
|
46
|
+
|
|
31
47
|
var FooterBlock = function FooterBlock(props) {
|
|
32
48
|
var status = props.status,
|
|
33
49
|
actions = props.actions,
|
|
50
|
+
_props$size = props.size,
|
|
51
|
+
size = _props$size === void 0 ? _constants.SmartLinkSize.Medium : _props$size,
|
|
34
52
|
_props$testId = props.testId,
|
|
35
53
|
testId = _props$testId === void 0 ? 'smart-footer-block' : _props$testId;
|
|
36
54
|
|
|
@@ -46,6 +64,7 @@ var FooterBlock = function FooterBlock(props) {
|
|
|
46
64
|
testId: "smart-element-group-actions",
|
|
47
65
|
align: _constants.SmartLinkAlignment.Right,
|
|
48
66
|
direction: _constants.SmartLinkDirection.Horizontal,
|
|
67
|
+
overrideCss: getActionGroupStyles(size),
|
|
49
68
|
width: _constants.SmartLinkWidth.Flexible
|
|
50
69
|
}, /*#__PURE__*/_react.default.createElement(_actionGroup.default, {
|
|
51
70
|
items: actions,
|
|
@@ -25,6 +25,8 @@ var _block = _interopRequireDefault(require("../block"));
|
|
|
25
25
|
|
|
26
26
|
var _elementGroup = _interopRequireDefault(require("../element-group"));
|
|
27
27
|
|
|
28
|
+
var _utils2 = require("../../utils");
|
|
29
|
+
|
|
28
30
|
var _excluded = ["maxLines", "status", "testId", "primary", "secondary"];
|
|
29
31
|
|
|
30
32
|
var _templateObject;
|
|
@@ -36,31 +38,10 @@ var MINIMUM_MAX_LINES = 1;
|
|
|
36
38
|
var getElementGroupStyles = function getElementGroupStyles(size, maxLines) {
|
|
37
39
|
// MetadataBlock allows metadata elements to be displayed in
|
|
38
40
|
// multiple lines, with maximum of 2 lines.
|
|
39
|
-
//
|
|
40
|
-
//
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
// overflown will not be visible.
|
|
44
|
-
var lineHeight = getLineHeight(size);
|
|
45
|
-
var gap = (0, _utils.getGapSize)(size);
|
|
46
|
-
var gapHeight = gap * (maxLines - 1);
|
|
47
|
-
var height = lineHeight * maxLines + gapHeight;
|
|
48
|
-
return (0, _core.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n flex-wrap: wrap;\n line-height: ", "rem;\n max-height: ", "rem;\n > span,\n > div {\n min-height: ", "rem;\n max-height: ", "rem;\n line-height: ", "rem;\n }\n "])), lineHeight, height, lineHeight, lineHeight, lineHeight);
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
var getLineHeight = function getLineHeight(size) {
|
|
52
|
-
// The maximum height of all elements in specific size.
|
|
53
|
-
// These heights belongs to AvatarGroup.
|
|
54
|
-
switch (size) {
|
|
55
|
-
case _constants.SmartLinkSize.XLarge:
|
|
56
|
-
case _constants.SmartLinkSize.Large:
|
|
57
|
-
return 1.75;
|
|
58
|
-
|
|
59
|
-
case _constants.SmartLinkSize.Medium:
|
|
60
|
-
case _constants.SmartLinkSize.Small:
|
|
61
|
-
default:
|
|
62
|
-
return 1.5;
|
|
63
|
-
}
|
|
41
|
+
// We need the height of the line to be equal on both left and right
|
|
42
|
+
// sides so they line up nicely.
|
|
43
|
+
var lineHeight = (0, _utils2.getMaxLineHeight)(size);
|
|
44
|
+
return (0, _core.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n line-height: ", "rem;\n ", "\n "])), lineHeight, (0, _utils2.getTruncateStyles)(maxLines, lineHeight + 'rem'));
|
|
64
45
|
};
|
|
65
46
|
|
|
66
47
|
var getMaxLines = function getMaxLines(maxLines) {
|
|
@@ -82,7 +82,7 @@ var getGapSize = function getGapSize(size) {
|
|
|
82
82
|
exports.getGapSize = getGapSize;
|
|
83
83
|
|
|
84
84
|
var getBaseStyles = function getBaseStyles(direction, size) {
|
|
85
|
-
return (0, _core.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\n display: flex;\n gap: ", "rem;\n line-height: 1rem;\n min-width: 0;\n overflow: hidden;\n ", ";\n &:empty {\n display: none;\n }\n & > * {\n min-width: 0;\n }\n & > [data-fit-to-content] {\n min-width: fit-content;\n }\n"])), getGapSize(size), getDirectionStyles(direction));
|
|
85
|
+
return (0, _core.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\n align-items: center;\n display: flex;\n gap: ", "rem;\n line-height: 1rem;\n min-width: 0;\n overflow: hidden;\n ", ";\n &:empty {\n display: none;\n }\n & > * {\n min-width: 0;\n }\n & > [data-fit-to-content] {\n min-width: fit-content;\n }\n"])), getGapSize(size), getDirectionStyles(direction));
|
|
86
86
|
};
|
|
87
87
|
|
|
88
88
|
exports.getBaseStyles = getBaseStyles;
|
|
@@ -17,21 +17,23 @@ var _avatarGroup = _interopRequireDefault(require("@atlaskit/avatar-group"));
|
|
|
17
17
|
|
|
18
18
|
var _constants = require("../../../../../constants");
|
|
19
19
|
|
|
20
|
-
var _templateObject;
|
|
20
|
+
var _templateObject, _templateObject2;
|
|
21
21
|
|
|
22
22
|
var MAX_COUNT = 4;
|
|
23
23
|
|
|
24
24
|
var getStyles = function getStyles(size) {
|
|
25
|
+
var styles = (0, _core.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n display: inline-flex;\n "])));
|
|
26
|
+
|
|
25
27
|
switch (size) {
|
|
26
28
|
case _constants.SmartLinkSize.XLarge:
|
|
27
29
|
case _constants.SmartLinkSize.Large:
|
|
28
30
|
// Default AK small size
|
|
29
|
-
return;
|
|
31
|
+
return styles;
|
|
30
32
|
|
|
31
33
|
case _constants.SmartLinkSize.Medium:
|
|
32
34
|
case _constants.SmartLinkSize.Small:
|
|
33
35
|
default:
|
|
34
|
-
return (0, _core.css)(
|
|
36
|
+
return (0, _core.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n ", "\n li {\n span,\n svg {\n max-height: 1.25rem;\n max-width: 1.25rem;\n }\n }\n "])), styles);
|
|
35
37
|
}
|
|
36
38
|
};
|
|
37
39
|
/**
|
|
@@ -29,9 +29,9 @@ var _atlaskitIcon = _interopRequireDefault(require("../../common/atlaskit-icon")
|
|
|
29
29
|
|
|
30
30
|
var _templateObject, _templateObject2, _templateObject3, _messageMapper;
|
|
31
31
|
|
|
32
|
-
var badgeStyles = (0, _core.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n align-items: center;\n display: flex;\n min-width: fit-content;\n"])));
|
|
33
|
-
var iconStyles = (0, _core.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n color: ", ";\n ", "\n span,\n svg {\n line-height: 0;\n }\n"])), _token.tokens.badgeIcon, (0, _utils.getIconSizeStyles)('1rem'));
|
|
34
|
-
var labelStyles = (0, _core.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\n color: ", ";\n font-size: 0.75rem;\n line-height: 1rem;\n padding-left: 0.125rem;\n"])), _token.tokens.badgeText);
|
|
32
|
+
var badgeStyles = (0, _core.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n align-items: center;\n display: inline-flex;\n min-width: fit-content;\n"])));
|
|
33
|
+
var iconStyles = (0, _core.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n color: ", ";\n line-height: 0;\n vertical-align: middle;\n ", "\n img,\n span,\n svg {\n line-height: 0;\n vertical-align: middle;\n }\n"])), _token.tokens.badgeIcon, (0, _utils.getIconSizeStyles)('1rem'));
|
|
34
|
+
var labelStyles = (0, _core.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\n color: ", ";\n font-size: 0.75rem;\n line-height: 1rem;\n padding-left: 0.125rem;\n vertical-align: middle;\n"])), _token.tokens.badgeText);
|
|
35
35
|
var messageMapper = (_messageMapper = {}, (0, _defineProperty2.default)(_messageMapper, _constants.IconType.PriorityBlocker, _messages.messages.priority_blocker), (0, _defineProperty2.default)(_messageMapper, _constants.IconType.PriorityCritical, _messages.messages.priority_critical), (0, _defineProperty2.default)(_messageMapper, _constants.IconType.PriorityHigh, _messages.messages.priority_high), (0, _defineProperty2.default)(_messageMapper, _constants.IconType.PriorityHighest, _messages.messages.priority_highest), (0, _defineProperty2.default)(_messageMapper, _constants.IconType.PriorityLow, _messages.messages.priority_low), (0, _defineProperty2.default)(_messageMapper, _constants.IconType.PriorityLowest, _messages.messages.priority_lowest), (0, _defineProperty2.default)(_messageMapper, _constants.IconType.PriorityMajor, _messages.messages.priority_major), (0, _defineProperty2.default)(_messageMapper, _constants.IconType.PriorityMedium, _messages.messages.priority_medium), (0, _defineProperty2.default)(_messageMapper, _constants.IconType.PriorityMinor, _messages.messages.priority_minor), (0, _defineProperty2.default)(_messageMapper, _constants.IconType.PriorityTrivial, _messages.messages.priority_trivial), (0, _defineProperty2.default)(_messageMapper, _constants.IconType.PriorityUndefined, _messages.messages.priority_undefined), _messageMapper);
|
|
36
36
|
|
|
37
37
|
var getFormattedMessageFromIcon = function getFormattedMessageFromIcon(icon) {
|
|
@@ -93,7 +93,7 @@ var Badge = function Badge(_ref) {
|
|
|
93
93
|
return null;
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
-
return (0, _core.jsx)("
|
|
96
|
+
return (0, _core.jsx)("span", {
|
|
97
97
|
css: [badgeStyles, overrideCss],
|
|
98
98
|
"data-fit-to-content": true,
|
|
99
99
|
"data-smart-element-badge": true,
|
|
@@ -17,7 +17,7 @@ var _lozenge = _interopRequireDefault(require("@atlaskit/lozenge"));
|
|
|
17
17
|
|
|
18
18
|
var _templateObject;
|
|
19
19
|
|
|
20
|
-
var styles = (0, _core.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n line-height: inherit;\n"])));
|
|
20
|
+
var styles = (0, _core.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n display: inline-flex;\n line-height: inherit;\n"])));
|
|
21
21
|
/**
|
|
22
22
|
* A base element that displays a Lozenge.
|
|
23
23
|
* @internal
|
|
@@ -27,7 +27,7 @@ var _templateObject;
|
|
|
27
27
|
* [object-position] Center alignment of the selected replaced element's
|
|
28
28
|
* contents within the element's box.
|
|
29
29
|
*/
|
|
30
|
-
var styles = (0, _core.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n aspect-ratio: 16 / 9;\n display: flex;\n width: 100%;\n height: fit-content; // Fix Safari height not respecting aspect-ratio\n\n // fallback\n @supports not (aspect-ratio: auto) {\n padding-top: 56.25%; // 16:9 ratio (9 / 16 = 0.5625)\n height: 0;\n position: relative;\n overflow: hidden;\n }\n\n > img {\n min-height: 100%;\n min-width: 100%;\n max-height: 100%;\n max-width: 100%;\n object-fit: cover;\n object-position: center center;\n\n // fallback\n @supports not (aspect-ratio: auto) {\n position: absolute;\n transform: translate(-50%, -50%);\n left: 50%;\n top: 50%;\n width: auto;\n height: auto;\n }\n }\n"])));
|
|
30
|
+
var styles = (0, _core.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n aspect-ratio: 16 / 9;\n display: flex;\n width: 100%;\n height: fit-content; // Fix Safari height not respecting aspect-ratio\n\n // fallback\n @supports not (aspect-ratio: auto) {\n padding-top: 56.25%; // 16:9 ratio (9 / 16 = 0.5625)\n height: 0;\n position: relative;\n overflow: hidden;\n }\n\n > img,\n > span {\n min-height: 100%;\n min-width: 100%;\n max-height: 100%;\n max-width: 100%;\n object-fit: cover;\n object-position: center center;\n\n // fallback\n @supports not (aspect-ratio: auto) {\n position: absolute;\n transform: translate(-50%, -50%);\n left: 50%;\n top: 50%;\n width: auto;\n height: auto;\n }\n }\n"])));
|
|
31
31
|
/**
|
|
32
32
|
* A base element that displays a Media.
|
|
33
33
|
* @internal
|
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.hasWhiteSpace = exports.getTruncateStyles = exports.getMaxLines = exports.getLinkSizeStyles = exports.getLinkLineHeight = exports.getIconWidth = exports.getIconSizeStyles = exports.getFormattedMessage = void 0;
|
|
8
|
+
exports.hasWhiteSpace = exports.getTruncateStyles = exports.getMaxLines = exports.getMaxLineHeight = exports.getLinkSizeStyles = exports.getLinkLineHeight = exports.getIconWidth = exports.getIconSizeStyles = exports.getFormattedMessage = void 0;
|
|
9
9
|
|
|
10
10
|
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
11
11
|
|
|
@@ -95,6 +95,23 @@ var getLinkSizeStyles = function getLinkSizeStyles(size) {
|
|
|
95
95
|
|
|
96
96
|
exports.getLinkSizeStyles = getLinkSizeStyles;
|
|
97
97
|
|
|
98
|
+
var getMaxLineHeight = function getMaxLineHeight(size) {
|
|
99
|
+
// The maximum line height based on all elements in specific size.
|
|
100
|
+
// These heights belongs to AvatarGroup.
|
|
101
|
+
switch (size) {
|
|
102
|
+
case _constants.SmartLinkSize.XLarge:
|
|
103
|
+
case _constants.SmartLinkSize.Large:
|
|
104
|
+
return 1.75;
|
|
105
|
+
|
|
106
|
+
case _constants.SmartLinkSize.Medium:
|
|
107
|
+
case _constants.SmartLinkSize.Small:
|
|
108
|
+
default:
|
|
109
|
+
return 1.5;
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
exports.getMaxLineHeight = getMaxLineHeight;
|
|
114
|
+
|
|
98
115
|
var getMaxLines = function getMaxLines(value, defaultValue, max, min) {
|
|
99
116
|
if (value > max) {
|
|
100
117
|
return defaultValue;
|
|
@@ -112,7 +129,7 @@ exports.getMaxLines = getMaxLines;
|
|
|
112
129
|
var getTruncateStyles = function getTruncateStyles(maxLines) {
|
|
113
130
|
var lineHeight = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '1rem';
|
|
114
131
|
var wordBreak = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'break-word';
|
|
115
|
-
return (0, _core.css)(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2.default)(["\n display: -webkit-box;\n overflow: hidden;\n text-overflow: ellipsis;\n word-break: ", ";\n -webkit-line-clamp: ", ";\n -webkit-box-orient: vertical;\n // Fallback options\n max-height: calc(", " * ", ");\n "])), wordBreak, maxLines, maxLines, lineHeight);
|
|
132
|
+
return (0, _core.css)(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2.default)(["\n display: -webkit-box;\n overflow: hidden;\n text-overflow: ellipsis;\n word-break: ", ";\n -webkit-line-clamp: ", ";\n -webkit-box-orient: vertical;\n // Fallback options\n @supports not (-webkit-line-clamp: 1) {\n max-height: calc(", " * ", ");\n }\n "])), wordBreak, maxLines, maxLines, lineHeight);
|
|
116
133
|
};
|
|
117
134
|
|
|
118
135
|
exports.getTruncateStyles = getTruncateStyles;
|
|
@@ -115,7 +115,8 @@ var HoverCardContent = function HoverCardContent(_ref) {
|
|
|
115
115
|
actions: titleActions
|
|
116
116
|
}), /*#__PURE__*/_react.default.createElement(_blocks.MetadataBlock, {
|
|
117
117
|
primary: primary,
|
|
118
|
-
secondary: secondary
|
|
118
|
+
secondary: secondary,
|
|
119
|
+
size: _constants.SmartLinkSize.Small
|
|
119
120
|
}), body, /*#__PURE__*/_react.default.createElement(_blocks.FooterBlock, {
|
|
120
121
|
actions: footerActions
|
|
121
122
|
}));
|
|
@@ -4,6 +4,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.getSimulatedMetadata = exports.HOVER_CARD_ANALYTICS_DISPLAY = void 0;
|
|
7
|
+
|
|
8
|
+
var _constants = require("../../constants");
|
|
9
|
+
|
|
7
10
|
var HOVER_CARD_ANALYTICS_DISPLAY = 'flexible';
|
|
8
11
|
exports.HOVER_CARD_ANALYTICS_DISPLAY = HOVER_CARD_ANALYTICS_DISPLAY;
|
|
9
12
|
|
|
@@ -14,7 +17,7 @@ var getSimulatedMetadata = function getSimulatedMetadata() {
|
|
|
14
17
|
case 'confluence-object-provider':
|
|
15
18
|
return {
|
|
16
19
|
metadata: {
|
|
17
|
-
primary: [
|
|
20
|
+
primary: [_constants.ElementName.AuthorGroup, _constants.ElementName.CreatedBy, _constants.ElementName.CommentCount, _constants.ElementName.ReactCount],
|
|
18
21
|
secondary: []
|
|
19
22
|
}
|
|
20
23
|
};
|
|
@@ -22,7 +25,7 @@ var getSimulatedMetadata = function getSimulatedMetadata() {
|
|
|
22
25
|
case 'jira-object-provider':
|
|
23
26
|
return {
|
|
24
27
|
metadata: {
|
|
25
|
-
primary: [
|
|
28
|
+
primary: [_constants.ElementName.AuthorGroup, _constants.ElementName.State, _constants.ElementName.Priority],
|
|
26
29
|
secondary: []
|
|
27
30
|
}
|
|
28
31
|
};
|
|
@@ -30,7 +33,7 @@ var getSimulatedMetadata = function getSimulatedMetadata() {
|
|
|
30
33
|
default:
|
|
31
34
|
return {
|
|
32
35
|
metadata: {
|
|
33
|
-
primary: [
|
|
36
|
+
primary: [_constants.ElementName.ModifiedOn, _constants.ElementName.CreatedBy],
|
|
34
37
|
secondary: []
|
|
35
38
|
}
|
|
36
39
|
};
|
|
@@ -2,7 +2,7 @@ import { useMemo } from 'react';
|
|
|
2
2
|
import { getUrl } from '@atlaskit/linking-common';
|
|
3
3
|
import { uiAuthEvent, uiAuthAlternateAccountEvent, uiCardClickedEvent, uiActionClickedEvent, uiClosedAuthEvent, uiRenderSuccessEvent, uiHoverCardViewedEvent, uiHoverCardDismissedEvent, uiHoverCardOpenLinkClickedEvent, invokeSucceededEvent, invokeFailedEvent, connectSucceededEvent, connectFailedEvent, trackAppAccountConnected, screenAuthPopupEvent, instrumentEvent } from '../../utils/analytics';
|
|
4
4
|
import { failUfoExperience, startUfoExperience, succeedUfoExperience } from './ufoExperiences';
|
|
5
|
-
import { getDefinitionId, getExtensionKey, getResourceType } from '../helpers';
|
|
5
|
+
import { getDefinitionId, getExtensionKey, getResourceType, getSubproduct, getProduct } from '../helpers';
|
|
6
6
|
import { useSmartLinkContext } from '@atlaskit/link-provider';
|
|
7
7
|
/**
|
|
8
8
|
* This hook provides usage of Smart Link analytics outside of the Card component.
|
|
@@ -24,6 +24,8 @@ export const useSmartLinkAnalytics = (url, dispatchAnalytics, id, defaultLocatio
|
|
|
24
24
|
const extractedDefinitionId = getDefinitionId(state.details);
|
|
25
25
|
const extractedExtensionKey = getExtensionKey(state.details);
|
|
26
26
|
const extractedResourceType = getResourceType(state.details);
|
|
27
|
+
const extractedSubproduct = getSubproduct(state.details);
|
|
28
|
+
const extractedProduct = getProduct(state.details);
|
|
27
29
|
/** Contains all ui analytics events */
|
|
28
30
|
|
|
29
31
|
const ui = useMemo(() => ({
|
|
@@ -51,6 +53,7 @@ export const useSmartLinkAnalytics = (url, dispatchAnalytics, id, defaultLocatio
|
|
|
51
53
|
* This fires an event that represents when a user clicks on a Smart Link.
|
|
52
54
|
* @param id The unique ID for this Smart Link.
|
|
53
55
|
* @param display Whether the card was an Inline, Block, Embed or Flexible UI.
|
|
56
|
+
* @param status What status the Smart Link is currently in (e.g. resolved, unresolved)
|
|
54
57
|
* @param definitionId The definitionId of the Smart Link resolver invoked.
|
|
55
58
|
* @param extensionKey The extensionKey of the Smart Link resovler invoked.
|
|
56
59
|
* @param isModifierKeyPressed Whether a modifier key was pressed when clicking the Smart Link.
|
|
@@ -58,7 +61,7 @@ export const useSmartLinkAnalytics = (url, dispatchAnalytics, id, defaultLocatio
|
|
|
58
61
|
* @param destinationProduct The product the Smart Link is linked to.
|
|
59
62
|
* @returns
|
|
60
63
|
*/
|
|
61
|
-
cardClickedEvent: (id = defaultId, display, status, definitionId = extractedDefinitionId, extensionKey = extractedExtensionKey, isModifierKeyPressed, location = defaultLocation, destinationProduct) => dispatchAnalytics(uiCardClickedEvent(id, display, status, definitionId, extensionKey, isModifierKeyPressed, location, destinationProduct)),
|
|
64
|
+
cardClickedEvent: (id = defaultId, display, status, definitionId = extractedDefinitionId, extensionKey = extractedExtensionKey, isModifierKeyPressed, location = defaultLocation, destinationProduct = extractedProduct, destinationSubproduct = extractedSubproduct) => dispatchAnalytics(uiCardClickedEvent(id, display, status, definitionId, extensionKey, isModifierKeyPressed, location, destinationProduct, destinationSubproduct)),
|
|
62
65
|
|
|
63
66
|
/**
|
|
64
67
|
* This fires an event that represents when a user clicks on a Smart Link action.
|
|
@@ -141,7 +144,7 @@ export const useSmartLinkAnalytics = (url, dispatchAnalytics, id, defaultLocatio
|
|
|
141
144
|
* @returns
|
|
142
145
|
*/
|
|
143
146
|
hoverCardDismissedEvent: (previewDisplay, hoverTime, previewInvokeMethod, id = defaultId, definitionId = extractedDefinitionId, extensionKey = extractedExtensionKey) => dispatchAnalytics(uiHoverCardDismissedEvent(id, previewDisplay, hoverTime, definitionId, extensionKey, previewInvokeMethod))
|
|
144
|
-
}), [defaultId, defaultLocation,
|
|
147
|
+
}), [extractedDefinitionId, extractedExtensionKey, dispatchAnalytics, defaultId, defaultLocation, extractedProduct, extractedSubproduct]);
|
|
145
148
|
/** Contains all operational analytics events */
|
|
146
149
|
|
|
147
150
|
const operational = useMemo(() => ({
|
|
@@ -19,9 +19,31 @@ export const getClickUrl = (url, jsonLd) => {
|
|
|
19
19
|
|
|
20
20
|
return url;
|
|
21
21
|
};
|
|
22
|
-
export const getDefinitionId = details =>
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
export const getDefinitionId = details => {
|
|
23
|
+
var _details$meta;
|
|
24
|
+
|
|
25
|
+
return details === null || details === void 0 ? void 0 : (_details$meta = details.meta) === null || _details$meta === void 0 ? void 0 : _details$meta.definitionId;
|
|
26
|
+
};
|
|
27
|
+
export const getExtensionKey = details => {
|
|
28
|
+
var _details$meta2;
|
|
29
|
+
|
|
30
|
+
return details === null || details === void 0 ? void 0 : (_details$meta2 = details.meta) === null || _details$meta2 === void 0 ? void 0 : _details$meta2.key;
|
|
31
|
+
};
|
|
32
|
+
export const getResourceType = details => {
|
|
33
|
+
var _details$meta3;
|
|
34
|
+
|
|
35
|
+
return details === null || details === void 0 ? void 0 : (_details$meta3 = details.meta) === null || _details$meta3 === void 0 ? void 0 : _details$meta3.resourceType;
|
|
36
|
+
};
|
|
37
|
+
export const getProduct = details => {
|
|
38
|
+
var _details$meta4;
|
|
39
|
+
|
|
40
|
+
return details === null || details === void 0 ? void 0 : (_details$meta4 = details.meta) === null || _details$meta4 === void 0 ? void 0 : _details$meta4.product;
|
|
41
|
+
};
|
|
42
|
+
export const getSubproduct = details => {
|
|
43
|
+
var _details$meta5;
|
|
44
|
+
|
|
45
|
+
return details === null || details === void 0 ? void 0 : (_details$meta5 = details.meta) === null || _details$meta5 === void 0 ? void 0 : _details$meta5.subproduct;
|
|
46
|
+
};
|
|
25
47
|
export const getServices = details => details && details.meta.auth || [];
|
|
26
48
|
export const hasResolved = details => details && isAccessible(details) && isVisible(details);
|
|
27
49
|
export const isAccessible = ({
|
|
@@ -174,7 +174,7 @@ export const uiAuthAlternateAccountEvent = (display, definitionId, extensionKey)
|
|
|
174
174
|
display
|
|
175
175
|
}
|
|
176
176
|
});
|
|
177
|
-
export const uiCardClickedEvent = (id, display, status, definitionId, extensionKey, isModifierKeyPressed, location, destinationProduct) => ({
|
|
177
|
+
export const uiCardClickedEvent = (id, display, status, definitionId, extensionKey, isModifierKeyPressed, location, destinationProduct, destinationSubproduct) => ({
|
|
178
178
|
action: 'clicked',
|
|
179
179
|
actionSubject: 'smartLink',
|
|
180
180
|
actionSubjectId: 'titleGoToLink',
|
|
@@ -187,7 +187,8 @@ export const uiCardClickedEvent = (id, display, status, definitionId, extensionK
|
|
|
187
187
|
display,
|
|
188
188
|
isModifierKeyPressed,
|
|
189
189
|
location,
|
|
190
|
-
destinationProduct
|
|
190
|
+
destinationProduct,
|
|
191
|
+
destinationSubproduct
|
|
191
192
|
}
|
|
192
193
|
});
|
|
193
194
|
export const uiActionClickedEvent = (id, actionType, extensionKey, display) => ({
|
package/dist/es2019/version.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { useEffect, useCallback, useMemo } from 'react';
|
|
2
2
|
import { isSpecialEvent } from '../../utils';
|
|
3
3
|
import * as measure from '../../utils/performance';
|
|
4
|
-
import { getDefinitionId, getServices, isFinalState, getClickUrl, getResourceType, getExtensionKey } from '../../state/helpers';
|
|
4
|
+
import { getDefinitionId, getServices, isFinalState, getClickUrl, getResourceType, getExtensionKey, getSubproduct, getProduct } from '../../state/helpers';
|
|
5
5
|
import { useSmartLink } from '../../state';
|
|
6
6
|
import { BlockCard } from '../BlockCard';
|
|
7
7
|
import { InlineCard } from '../InlineCard';
|
|
@@ -42,6 +42,8 @@ export function CardWithUrlContent({
|
|
|
42
42
|
const definitionId = getDefinitionId(state.details);
|
|
43
43
|
const extensionKey = getExtensionKey(state.details);
|
|
44
44
|
const resourceType = getResourceType(state.details);
|
|
45
|
+
const product = getProduct(state.details);
|
|
46
|
+
const subproduct = getSubproduct(state.details);
|
|
45
47
|
const services = getServices(state.details);
|
|
46
48
|
let isFlexibleUi = useMemo(() => isFlexibleUiCard(children), [children]); // Setup UI handlers.
|
|
47
49
|
|
|
@@ -51,14 +53,14 @@ export function CardWithUrlContent({
|
|
|
51
53
|
}, [state.details, url]);
|
|
52
54
|
const handleClickWrapper = useCallback(event => {
|
|
53
55
|
const isModifierKeyPressed = isSpecialEvent(event);
|
|
54
|
-
analytics.ui.cardClickedEvent(id, isFlexibleUi ? 'flexible' : appearance, state.status, definitionId, extensionKey, isModifierKeyPressed);
|
|
56
|
+
analytics.ui.cardClickedEvent(id, isFlexibleUi ? 'flexible' : appearance, state.status, definitionId, extensionKey, isModifierKeyPressed, undefined, product, subproduct);
|
|
55
57
|
|
|
56
58
|
if (onClick) {
|
|
57
59
|
onClick(event);
|
|
58
60
|
} else if (!isFlexibleUi) {
|
|
59
61
|
handleClick(event);
|
|
60
62
|
}
|
|
61
|
-
}, [id, state.status, analytics.ui, appearance, definitionId, extensionKey, onClick, handleClick, isFlexibleUi]);
|
|
63
|
+
}, [id, state.status, analytics.ui, appearance, definitionId, extensionKey, onClick, handleClick, isFlexibleUi, product, subproduct]);
|
|
62
64
|
const handleAuthorize = useCallback(() => actions.authorize(appearance), [actions, appearance]);
|
|
63
65
|
const handleRetry = useCallback(() => {
|
|
64
66
|
actions.reload();
|