@atlaskit/teams-public 0.50.3 → 0.51.0

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 (55) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/cjs/controllers/product-permission/utils.js +2 -2
  3. package/dist/cjs/ui/team-containers/add-container-card/add-container-card-with-create/index.compiled.css +18 -0
  4. package/dist/cjs/ui/team-containers/add-container-card/add-container-card-with-create/index.js +155 -0
  5. package/dist/cjs/ui/team-containers/add-container-card/add-container-card-with-create/utils.js +91 -0
  6. package/dist/cjs/ui/team-containers/add-container-card/index.js +26 -1
  7. package/dist/cjs/ui/team-containers/main.js +136 -30
  8. package/dist/cjs/ui/team-containers/utils.js +81 -0
  9. package/dist/es2019/controllers/product-permission/utils.js +2 -2
  10. package/dist/es2019/ui/team-containers/add-container-card/add-container-card-with-create/index.compiled.css +18 -0
  11. package/dist/es2019/ui/team-containers/add-container-card/add-container-card-with-create/index.js +140 -0
  12. package/dist/es2019/ui/team-containers/add-container-card/add-container-card-with-create/utils.js +85 -0
  13. package/dist/es2019/ui/team-containers/add-container-card/index.js +18 -0
  14. package/dist/es2019/ui/team-containers/main.js +118 -24
  15. package/dist/es2019/ui/team-containers/utils.js +71 -0
  16. package/dist/esm/controllers/product-permission/utils.js +2 -2
  17. package/dist/esm/ui/team-containers/add-container-card/add-container-card-with-create/index.compiled.css +18 -0
  18. package/dist/esm/ui/team-containers/add-container-card/add-container-card-with-create/index.js +146 -0
  19. package/dist/esm/ui/team-containers/add-container-card/add-container-card-with-create/utils.js +84 -0
  20. package/dist/esm/ui/team-containers/add-container-card/index.js +25 -0
  21. package/dist/esm/ui/team-containers/main.js +137 -29
  22. package/dist/esm/ui/team-containers/utils.js +74 -0
  23. package/dist/types/controllers/product-permission/utils.d.ts +1 -1
  24. package/dist/types/ui/team-containers/add-container-card/add-container-card-with-create/index.d.ts +36 -0
  25. package/dist/types/ui/team-containers/add-container-card/add-container-card-with-create/utils.d.ts +54 -0
  26. package/dist/types/ui/team-containers/add-container-card/index.d.ts +9 -0
  27. package/dist/types/ui/team-containers/index.d.ts +1 -1
  28. package/dist/types/ui/team-containers/main.d.ts +1 -1
  29. package/dist/types/ui/team-containers/types.d.ts +19 -1
  30. package/dist/types/ui/team-containers/utils.d.ts +24 -0
  31. package/dist/types-ts4.5/controllers/product-permission/utils.d.ts +1 -1
  32. package/dist/types-ts4.5/ui/team-containers/add-container-card/add-container-card-with-create/index.d.ts +36 -0
  33. package/dist/types-ts4.5/ui/team-containers/add-container-card/add-container-card-with-create/utils.d.ts +54 -0
  34. package/dist/types-ts4.5/ui/team-containers/add-container-card/index.d.ts +9 -0
  35. package/dist/types-ts4.5/ui/team-containers/index.d.ts +1 -1
  36. package/dist/types-ts4.5/ui/team-containers/main.d.ts +1 -1
  37. package/dist/types-ts4.5/ui/team-containers/types.d.ts +19 -1
  38. package/dist/types-ts4.5/ui/team-containers/utils.d.ts +24 -0
  39. package/package.json +4 -3
  40. /package/dist/cjs/{ui/team-containers → common/ui}/team-containers-skeleton/index.compiled.css +0 -0
  41. /package/dist/cjs/{ui/team-containers → common/ui}/team-containers-skeleton/index.js +0 -0
  42. /package/dist/cjs/{ui/team-containers → common/ui}/team-containers-skeleton/linked-container-card-skeleton/index.compiled.css +0 -0
  43. /package/dist/cjs/{ui/team-containers → common/ui}/team-containers-skeleton/linked-container-card-skeleton/index.js +0 -0
  44. /package/dist/es2019/{ui/team-containers → common/ui}/team-containers-skeleton/index.compiled.css +0 -0
  45. /package/dist/es2019/{ui/team-containers → common/ui}/team-containers-skeleton/index.js +0 -0
  46. /package/dist/es2019/{ui/team-containers → common/ui}/team-containers-skeleton/linked-container-card-skeleton/index.compiled.css +0 -0
  47. /package/dist/es2019/{ui/team-containers → common/ui}/team-containers-skeleton/linked-container-card-skeleton/index.js +0 -0
  48. /package/dist/esm/{ui/team-containers → common/ui}/team-containers-skeleton/index.compiled.css +0 -0
  49. /package/dist/esm/{ui/team-containers → common/ui}/team-containers-skeleton/index.js +0 -0
  50. /package/dist/esm/{ui/team-containers → common/ui}/team-containers-skeleton/linked-container-card-skeleton/index.compiled.css +0 -0
  51. /package/dist/esm/{ui/team-containers → common/ui}/team-containers-skeleton/linked-container-card-skeleton/index.js +0 -0
  52. /package/dist/types/{ui/team-containers → common/ui}/team-containers-skeleton/index.d.ts +0 -0
  53. /package/dist/types/{ui/team-containers → common/ui}/team-containers-skeleton/linked-container-card-skeleton/index.d.ts +0 -0
  54. /package/dist/types-ts4.5/{ui/team-containers → common/ui}/team-containers-skeleton/index.d.ts +0 -0
  55. /package/dist/types-ts4.5/{ui/team-containers → common/ui}/team-containers-skeleton/linked-container-card-skeleton/index.d.ts +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # @atlaskit/teams-public
2
2
 
3
+ ## 0.51.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`3c3c951f9cd92`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/3c3c951f9cd92) -
8
+ [ux] Add create container feature to team profile
9
+
10
+ ### Patch Changes
11
+
12
+ - Updated dependencies
13
+
3
14
  ## 0.50.3
4
15
 
5
16
  ### Patch Changes
@@ -48,7 +48,7 @@ var hasProductPermission = exports.hasProductPermission = function hasProductPer
48
48
  });
49
49
  }
50
50
  return permissionIds === null || permissionIds === void 0 ? void 0 : permissionIds.some(function (permissionId) {
51
- var _permissions$product;
52
- return (_permissions$product = permissions[product]) === null || _permissions$product === void 0 ? void 0 : _permissions$product[permissionId];
51
+ var productPermissions = permissions[product];
52
+ return productPermissions === null || productPermissions === void 0 ? void 0 : productPermissions[permissionId];
53
53
  });
54
54
  };
@@ -0,0 +1,18 @@
1
+
2
+ ._2rkoiti9{border-radius:var(--ds-border-radius-100,4px)}
3
+ ._2rkoop52{border-radius:var(--ds-border-radius-100,8px)}
4
+ ._2rkopd34{border-radius:var(--ds-border-radius-200,8px)}._12jimuej{outline-color:var(--ds-border,#091e4224)}
5
+ ._18u01wug{margin-left:auto}
6
+ ._19bvutpp{padding-left:var(--ds-space-150,9pt)}
7
+ ._1bah1h6o{justify-content:center}
8
+ ._1bahesu3{justify-content:flex-end}
9
+ ._1bsb1osq{width:100%}
10
+ ._1bsb1u1b{width:34px}
11
+ ._1e0c1txw{display:flex}
12
+ ._1qu2nqa1{outline-style:solid}
13
+ ._4cvr1h6o{align-items:center}
14
+ ._4t3i1u1b{height:34px}
15
+ ._ca0qutpp{padding-top:var(--ds-space-150,9pt)}
16
+ ._n3tdutpp{padding-bottom:var(--ds-space-150,9pt)}
17
+ ._u5f3utpp{padding-right:var(--ds-space-150,9pt)}
18
+ ._d0altlke:hover{cursor:pointer}
@@ -0,0 +1,155 @@
1
+ /* index.tsx generated by @compiled/babel-plugin v0.36.1 */
2
+ "use strict";
3
+
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+ Object.defineProperty(exports, "__esModule", {
7
+ value: true
8
+ });
9
+ exports.messages = exports.getAddContainerCardsWithCreate = exports.AddContainerCardWithCreate = void 0;
10
+ require("./index.compiled.css");
11
+ var _runtime = require("@compiled/react/runtime");
12
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
14
+ var _react = _interopRequireWildcard(require("react"));
15
+ var _reactIntlNext = require("react-intl-next");
16
+ var _new = _interopRequireWildcard(require("@atlaskit/button/new"));
17
+ var _add = _interopRequireDefault(require("@atlaskit/icon/core/add"));
18
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
19
+ var _compiled = require("@atlaskit/primitives/compiled");
20
+ var _linkedContainerCardSkeleton = require("../../../../common/ui/team-containers-skeleton/linked-container-card-skeleton");
21
+ var _utils = require("./utils");
22
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
23
+ var styles = {
24
+ card: "_4cvr1h6o _1bsb1osq",
25
+ container: "_2rkoop52 _ca0qutpp _u5f3utpp _n3tdutpp _19bvutpp _d0altlke",
26
+ createButtonWrapper: "_2rkoiti9 _1e0c1txw _4cvr1h6o _1bahesu3 _18u01wug _12jimuej _1qu2nqa1",
27
+ iconWrapper: "_2rkopd34 _1bsb1u1b _4t3i1u1b _1e0c1txw _4cvr1h6o _1bah1h6o _12jimuej _1qu2nqa1"
28
+ };
29
+ var AddContainerCardWrapper = function AddContainerCardWrapper(_ref) {
30
+ var children = _ref.children,
31
+ onClick = _ref.onClick;
32
+ var _useState = (0, _react.useState)(false),
33
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
34
+ hovered = _useState2[0],
35
+ setHovered = _useState2[1];
36
+ var handleMouseEnter = function handleMouseEnter() {
37
+ return setHovered(true);
38
+ };
39
+ var handleMouseLeave = function handleMouseLeave() {
40
+ return setHovered(false);
41
+ };
42
+ return /*#__PURE__*/_react.default.createElement(_compiled.Box, {
43
+ backgroundColor: hovered ? 'elevation.surface.hovered' : 'elevation.surface.sunken',
44
+ xcss: styles.container,
45
+ onMouseEnter: handleMouseEnter,
46
+ onMouseLeave: handleMouseLeave,
47
+ onClick: onClick
48
+ }, children);
49
+ };
50
+ var AddContainerCardWithCreate = exports.AddContainerCardWithCreate = function AddContainerCardWithCreate(_ref2) {
51
+ var containerType = _ref2.containerType,
52
+ onCreateContainerClick = _ref2.onCreateContainerClick,
53
+ isLoading = _ref2.isLoading;
54
+ var _getContainerProperti = (0, _utils.getContainerProperties)({
55
+ containerType: containerType
56
+ }),
57
+ description = _getContainerProperti.description,
58
+ icon = _getContainerProperti.icon,
59
+ title = _getContainerProperti.title;
60
+ if (isLoading) {
61
+ return /*#__PURE__*/_react.default.createElement(_linkedContainerCardSkeleton.LinkedContainerCardSkeleton, null);
62
+ }
63
+ return /*#__PURE__*/_react.default.createElement(AddContainerCardWrapper, {
64
+ onClick: onCreateContainerClick
65
+ }, /*#__PURE__*/_react.default.createElement(_compiled.Inline, {
66
+ space: "space.100",
67
+ xcss: styles.card
68
+ }, /*#__PURE__*/_react.default.createElement(_compiled.Box, {
69
+ xcss: styles.iconWrapper
70
+ }, icon), /*#__PURE__*/_react.default.createElement(_compiled.Stack, (0, _platformFeatureFlags.fg)('enable_medium_size_icons_for_team_link_cards') ? {
71
+ space: 'space.025'
72
+ } : {}, /*#__PURE__*/_react.default.createElement(_compiled.Text, {
73
+ maxLines: 1,
74
+ weight: "medium",
75
+ color: "color.text"
76
+ }, title), /*#__PURE__*/_react.default.createElement(_compiled.Flex, {
77
+ gap: "space.050",
78
+ alignItems: "center"
79
+ }, /*#__PURE__*/_react.default.createElement(_compiled.Text, {
80
+ size: "small",
81
+ color: "color.text.subtle"
82
+ }, description))), /*#__PURE__*/_react.default.createElement(_compiled.Box, {
83
+ xcss: styles.createButtonWrapper
84
+ }, /*#__PURE__*/_react.default.createElement(_new.default, {
85
+ appearance: "subtle",
86
+ testId: "add-create-icon",
87
+ onClick: function onClick(e) {
88
+ onCreateContainerClick(e);
89
+ e.stopPropagation();
90
+ }
91
+ }, /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, messages.createLinkButtonText)))));
92
+ };
93
+ var getAddContainerCardsWithCreate = exports.getAddContainerCardsWithCreate = function getAddContainerCardsWithCreate(_ref3) {
94
+ var showAddContainer = _ref3.showAddContainer,
95
+ _onCreateContainerClick = _ref3.onCreateContainerClick,
96
+ onAddAContainerClick = _ref3.onAddAContainerClick,
97
+ containersLoading = _ref3.containersLoading;
98
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, showAddContainer.Jira && /*#__PURE__*/_react.default.createElement(AddContainerCardWithCreate, {
99
+ onCreateContainerClick: function onCreateContainerClick(e) {
100
+ _onCreateContainerClick(e, 'Jira');
101
+ },
102
+ containerType: "JiraProject",
103
+ isLoading: containersLoading.jira
104
+ }), showAddContainer.Confluence && /*#__PURE__*/_react.default.createElement(AddContainerCardWithCreate, {
105
+ onCreateContainerClick: function onCreateContainerClick(e) {
106
+ _onCreateContainerClick(e, 'Confluence');
107
+ },
108
+ containerType: "ConfluenceSpace",
109
+ isLoading: containersLoading.confluence
110
+ }), showAddContainer.Loom && /*#__PURE__*/_react.default.createElement(AddContainerCardWithCreate, {
111
+ onCreateContainerClick: function onCreateContainerClick(e) {
112
+ _onCreateContainerClick(e, 'Loom');
113
+ },
114
+ containerType: "LoomSpace",
115
+ isLoading: containersLoading.loom
116
+ }), (showAddContainer.Loom || showAddContainer.Jira || showAddContainer.Confluence) && /*#__PURE__*/_react.default.createElement(AddContainerCardWrapper, {
117
+ onClick: onAddAContainerClick
118
+ }, /*#__PURE__*/_react.default.createElement(_compiled.Inline, {
119
+ space: "space.100",
120
+ xcss: styles.card
121
+ }, /*#__PURE__*/_react.default.createElement(_compiled.Box, {
122
+ xcss: styles.iconWrapper
123
+ }, /*#__PURE__*/_react.default.createElement(_new.IconButton, {
124
+ label: "Add a container",
125
+ appearance: "subtle",
126
+ icon: function icon(iconProps) {
127
+ return /*#__PURE__*/_react.default.createElement(_add.default, (0, _extends2.default)({}, iconProps, {
128
+ size: "small"
129
+ }));
130
+ },
131
+ testId: "add-icon",
132
+ onClick: function onClick(e) {
133
+ onAddAContainerClick(e);
134
+ e.stopPropagation();
135
+ }
136
+ })), /*#__PURE__*/_react.default.createElement(_compiled.Stack, {
137
+ space: 'space.025'
138
+ }, /*#__PURE__*/_react.default.createElement(_compiled.Text, {
139
+ maxLines: 1,
140
+ weight: "medium",
141
+ color: "color.text"
142
+ }, /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, messages.addExistingLinkTitle))))));
143
+ };
144
+ var messages = exports.messages = (0, _reactIntlNext.defineMessages)({
145
+ createLinkButtonText: {
146
+ id: 'ptc-directory.team-profile-page.team-containers.add-confluence-space-title',
147
+ defaultMessage: 'Create',
148
+ description: 'Title of the card to add a Confluence space to a team'
149
+ },
150
+ addExistingLinkTitle: {
151
+ id: 'ptc-directory.team-profile-page.team-containers.add-confluence-space-title',
152
+ defaultMessage: 'Add an existing space',
153
+ description: 'Title of the card to add a Confluence space to a team'
154
+ }
155
+ });
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.messages = exports.getContainerProperties = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _reactIntlNext = require("react-intl-next");
10
+ var _spaces = _interopRequireDefault(require("@atlaskit/icon-lab/core/spaces"));
11
+ var _project = _interopRequireDefault(require("@atlaskit/icon/core/project"));
12
+ var getContainerProperties = exports.getContainerProperties = function getContainerProperties(_ref) {
13
+ var containerType = _ref.containerType;
14
+ switch (containerType) {
15
+ case 'ConfluenceSpace':
16
+ return {
17
+ description: /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, messages.confluenceContainerDescription),
18
+ icon: /*#__PURE__*/_react.default.createElement(_spaces.default, {
19
+ label: 'confluence space',
20
+ spacing: 'spacious'
21
+ }),
22
+ title: /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, messages.addConfluenceContainerTitle)
23
+ };
24
+ case 'LoomSpace':
25
+ return {
26
+ description: /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, messages.loomSpaceDescription),
27
+ icon: /*#__PURE__*/_react.default.createElement(_spaces.default, {
28
+ label: 'loom space',
29
+ spacing: 'spacious'
30
+ }),
31
+ title: /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, messages.addLoomContainerTitle)
32
+ };
33
+ case 'JiraProject':
34
+ return {
35
+ description: /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, messages.jiraProjectDescription),
36
+ icon: /*#__PURE__*/_react.default.createElement(_project.default, {
37
+ label: 'jira project',
38
+ spacing: 'spacious'
39
+ }),
40
+ title: /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, messages.addJiraProjectTitle)
41
+ };
42
+ default:
43
+ return {
44
+ description: null,
45
+ icon: null,
46
+ title: null
47
+ };
48
+ }
49
+ };
50
+ var messages = exports.messages = (0, _reactIntlNext.defineMessages)({
51
+ addConfluenceContainerTitle: {
52
+ id: 'ptc-directory.team-profile-page.team-containers.add-confluence-space-title',
53
+ defaultMessage: 'Confluence space',
54
+ description: 'Title of the card to add a Confluence space to a team'
55
+ },
56
+ confluenceContainerDescription: {
57
+ id: 'ptc-directory.team-profile-page.team-containers.add-confluence-space-description',
58
+ defaultMessage: 'Create a knowledge bank',
59
+ description: 'Description of the card to add a Confluence space to a team'
60
+ },
61
+ addLoomContainerTitle: {
62
+ id: 'ptc-directory.team-profile-page.team-containers.add-loom-space-title',
63
+ defaultMessage: 'Loom space',
64
+ description: 'Title of the card to add a Loom space to a team'
65
+ },
66
+ loomSpaceDescription: {
67
+ id: 'ptc-directory.team-profile-page.team-containers.add-loom-space-description',
68
+ defaultMessage: 'Share async updates',
69
+ description: 'Description of the card to add a Loom space to a team'
70
+ },
71
+ addJiraProjectTitle: {
72
+ id: 'ptc-directory.team-profile-page.team-containers.add-jira-project-title',
73
+ defaultMessage: 'Jira project',
74
+ description: 'Title of the card to add a Jira project to a team'
75
+ },
76
+ jiraProjectDescription: {
77
+ id: 'ptc-directory.team-profile-page.team-containers.add-jira-project-description',
78
+ defaultMessage: 'Plan out project tasks',
79
+ description: 'Description of the card to add a Jira project to a team'
80
+ },
81
+ emptyWebLinkContainerDescription: {
82
+ id: 'platform.teams.containers.empty-web-link-description',
83
+ defaultMessage: 'Add any web link',
84
+ description: 'Description displayed on the empty card for adding a web link to a team'
85
+ },
86
+ webLinkContainerDescription: {
87
+ id: 'platform.teams.containers.web-link-title-description',
88
+ defaultMessage: 'Web link',
89
+ description: 'Description displayed for web link containers in team profile'
90
+ }
91
+ });
@@ -6,7 +6,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
6
6
  Object.defineProperty(exports, "__esModule", {
7
7
  value: true
8
8
  });
9
- exports.AddContainerCard = void 0;
9
+ exports.getAddContainerCards = exports.AddContainerCard = void 0;
10
10
  require("./index.compiled.css");
11
11
  var _runtime = require("@compiled/react/runtime");
12
12
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
@@ -88,4 +88,29 @@ var AddContainerCard = exports.AddContainerCard = function AddContainerCard(_ref
88
88
  size: "small",
89
89
  color: "color.text.subtle"
90
90
  }, description)))));
91
+ };
92
+ var getAddContainerCards = exports.getAddContainerCards = function getAddContainerCards(_ref3) {
93
+ var showAddContainer = _ref3.showAddContainer,
94
+ _onAddAContainerClick = _ref3.onAddAContainerClick;
95
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, showAddContainer.Jira && /*#__PURE__*/_react.default.createElement(AddContainerCard, {
96
+ onAddAContainerClick: function onAddAContainerClick(e) {
97
+ return _onAddAContainerClick(e, 'Jira');
98
+ },
99
+ containerType: "JiraProject"
100
+ }), showAddContainer.Confluence && /*#__PURE__*/_react.default.createElement(AddContainerCard, {
101
+ onAddAContainerClick: function onAddAContainerClick(e) {
102
+ return _onAddAContainerClick(e, 'Confluence');
103
+ },
104
+ containerType: "ConfluenceSpace"
105
+ }), showAddContainer.Loom && (0, _platformFeatureFlags.fg)('loom_tab_in_container_linker_team_profile_page') && /*#__PURE__*/_react.default.createElement(AddContainerCard, {
106
+ onAddAContainerClick: function onAddAContainerClick(e) {
107
+ return _onAddAContainerClick(e, 'Loom');
108
+ },
109
+ containerType: "LoomSpace"
110
+ }), showAddContainer.WebLink && /*#__PURE__*/_react.default.createElement(AddContainerCard, {
111
+ onAddAContainerClick: function onAddAContainerClick(e) {
112
+ return _onAddAContainerClick(e, 'WebLink');
113
+ },
114
+ containerType: "WebLink"
115
+ }));
91
116
  };
@@ -7,17 +7,23 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.TeamContainers = exports.MAX_NUMBER_OF_CONTAINERS_TO_SHOW = exports.ICON_COLOR = exports.ICON_BACKGROUND = void 0;
9
9
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
11
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
12
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
13
  var _react = _interopRequireWildcard(require("react"));
13
14
  var _reactIntlNext = require("react-intl-next");
14
15
  var _analyticsNext = require("@atlaskit/analytics-next");
15
16
  var _new = _interopRequireDefault(require("@atlaskit/button/new"));
17
+ var _featureGateJsClient = _interopRequireDefault(require("@atlaskit/feature-gate-js-client"));
16
18
  var _modalTransition = _interopRequireDefault(require("@atlaskit/modal-dialog/modal-transition"));
17
19
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
18
20
  var _primitives = require("@atlaskit/primitives");
19
21
  var _teamsAppInternalProductPermissions = require("@atlaskit/teams-app-internal-product-permissions");
22
+ var _teamsClient = require("@atlaskit/teams-client");
23
+ var _types = require("@atlaskit/teams-client/types");
20
24
  var _colors = require("@atlaskit/theme/colors");
25
+ var _teamContainersSkeleton = require("../../common/ui/team-containers-skeleton");
26
+ var _linkedContainerCardSkeleton = require("../../common/ui/team-containers-skeleton/linked-container-card-skeleton");
21
27
  var _analytics = require("../../common/utils/analytics");
22
28
  var _controllers = require("../../controllers");
23
29
  var _useProductPermission3 = require("../../controllers/hooks/use-product-permission");
@@ -25,17 +31,27 @@ var _useRequestedContainer = require("../../controllers/hooks/use-requested-cont
25
31
  var _useTeamContainers2 = require("../../controllers/hooks/use-team-containers");
26
32
  var _useTeamLinksAndContainers = require("../../controllers/hooks/use-team-links-and-containers");
27
33
  var _addContainerCard = require("./add-container-card");
34
+ var _addContainerCardWithCreate = require("./add-container-card/add-container-card-with-create");
28
35
  var _async = require("./disconnect-dialog/async");
29
36
  var _noProductAccessEmptyState = require("./no-product-access-empty-state");
30
- var _teamContainersSkeleton = require("./team-containers-skeleton");
31
- var _linkedContainerCardSkeleton = require("./team-containers-skeleton/linked-container-card-skeleton");
32
37
  var _teamLinkCard = require("./team-link-card");
38
+ var _utils = require("./utils");
33
39
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
34
- // eslint-disable-next-line @atlaskit/design-system/no-emotion-primitives -- to be migrated to @atlaskit/primitives/compiled go/akcss
35
-
40
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
41
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } // eslint-disable-next-line @atlaskit/design-system/no-emotion-primitives -- to be migrated to @atlaskit/primitives/compiled – go/akcss
36
42
  var ICON_BACKGROUND = exports.ICON_BACKGROUND = "var(--ds-icon-inverse, ".concat(_colors.N0, ")");
37
43
  var ICON_COLOR = exports.ICON_COLOR = "var(--ds-icon-subtle, ".concat(_colors.N90, ")");
38
44
  var MAX_NUMBER_OF_CONTAINERS_TO_SHOW = exports.MAX_NUMBER_OF_CONTAINERS_TO_SHOW = 4;
45
+ var containerTypeMap = {
46
+ Confluence: _types.ContainerType.CONFLUENCE_SPACE,
47
+ Jira: _types.ContainerType.JIRA_PROJECT,
48
+ Loom: _types.ContainerType.LOOM_SPACE
49
+ };
50
+ var containerTypeToTextMap = {
51
+ Confluence: 'Confluence space',
52
+ Jira: 'Jira project',
53
+ Loom: 'Loom space'
54
+ };
39
55
  var TeamContainers = exports.TeamContainers = function TeamContainers(_ref) {
40
56
  var teamId = _ref.teamId,
41
57
  _onAddAContainerClick = _ref.onAddAContainerClick,
@@ -48,11 +64,13 @@ var TeamContainers = exports.TeamContainers = function TeamContainers(_ref) {
48
64
  filterContainerId = _ref.filterContainerId,
49
65
  isDisplayedOnProfileCard = _ref.isDisplayedOnProfileCard,
50
66
  _ref$maxNumberOfConta = _ref.maxNumberOfContainersToShow,
51
- maxNumberOfContainersToShow = _ref$maxNumberOfConta === void 0 ? MAX_NUMBER_OF_CONTAINERS_TO_SHOW : _ref$maxNumberOfConta;
67
+ maxNumberOfContainersToShow = _ref$maxNumberOfConta === void 0 ? MAX_NUMBER_OF_CONTAINERS_TO_SHOW : _ref$maxNumberOfConta,
68
+ addFlag = _ref.addFlag;
52
69
  var _useAnalyticsEvents = (0, _analyticsNext.useAnalyticsEvents)(),
53
70
  createAnalyticsEvent = _useAnalyticsEvents.createAnalyticsEvent;
54
71
  var _useTeamContainers = (0, _useTeamContainers2.useTeamContainers)(teamId),
55
- unlinkError = _useTeamContainers.unlinkError;
72
+ unlinkError = _useTeamContainers.unlinkError,
73
+ refetchTeamContainers = _useTeamContainers.refetchTeamContainers;
56
74
  var _useTeamLinksAndConta = (0, _useTeamLinksAndContainers.useTeamLinksAndContainers)(teamId, true),
57
75
  teamLinks = _useTeamLinksAndConta.teamLinks,
58
76
  removeTeamLink = _useTeamLinksAndConta.removeTeamLink,
@@ -94,12 +112,25 @@ var TeamContainers = exports.TeamContainers = function TeamContainers(_ref) {
94
112
  _useState0 = (0, _slicedToArray2.default)(_useState9, 2),
95
113
  showAddContainer = _useState0[0],
96
114
  setShowAddContainer = _useState0[1];
115
+ var _useState1 = (0, _react.useState)({
116
+ jira: false,
117
+ confluence: false,
118
+ loom: false
119
+ }),
120
+ _useState10 = (0, _slicedToArray2.default)(_useState1, 2),
121
+ containersBeingCreated = _useState10[0],
122
+ setContainersBeingCreated = _useState10[1];
97
123
  var _usePeopleAndTeamAnal = (0, _analytics.usePeopleAndTeamAnalytics)(),
98
124
  fireOperationalEvent = _usePeopleAndTeamAnal.fireOperationalEvent,
99
125
  fireTrackEvent = _usePeopleAndTeamAnal.fireTrackEvent;
100
126
  var _useProductPermission = (0, _teamsAppInternalProductPermissions.useProductPermissions)({
101
127
  userId: userId,
102
128
  cloudId: cloudId,
129
+ permissionsToCheck: {
130
+ jira: ['CREATE_PROJECT', 'manage', 'write'],
131
+ loom: ['write', 'manage'],
132
+ confluence: ['write', 'manage']
133
+ },
103
134
  options: {
104
135
  enabled: (0, _platformFeatureFlags.fg)('migrate-product-permissions')
105
136
  }
@@ -114,6 +145,7 @@ var TeamContainers = exports.TeamContainers = function TeamContainers(_ref) {
114
145
  }),
115
146
  productPermissionsOld = _useProductPermission2.data,
116
147
  productPermissionIsLoadingOld = _useProductPermission2.loading;
148
+ var autoCreateExperimentValue = _featureGateJsClient.default.initializeCompleted() && _featureGateJsClient.default.getExperimentValue('teams_app_auto_container_creation', 'cohort', 'control') || '';
117
149
  (0, _react.useEffect)(function () {
118
150
  if (isDisplayedOnProfileCard && filterContainerId) {
119
151
  setFilteredTeamLinks(teamLinks.filter(function (container) {
@@ -141,23 +173,23 @@ var TeamContainers = exports.TeamContainers = function TeamContainers(_ref) {
141
173
  var containerRequested = function containerRequested(type) {
142
174
  return requestedContainers.includes(type);
143
175
  };
144
- var showContainer = function showContainer(containerExists, isRequesting, product) {
176
+ var showContainer = function showContainer(containerExists, isRequesting, product, permissionIds) {
145
177
  if (containerExists || isRequesting) {
146
178
  return false;
147
179
  }
148
180
  if ((0, _platformFeatureFlags.fg)('migrate-product-permissions')) {
149
- return productPermissions && (0, _teamsAppInternalProductPermissions.hasProductPermission)(productPermissions, product) || false;
181
+ return productPermissions && (0, _teamsAppInternalProductPermissions.hasProductPermission)(productPermissions, product, permissionIds) || false;
150
182
  }
151
- return productPermissionsOld && (0, _controllers.hasProductPermission)(productPermissionsOld, product) || false;
183
+ return productPermissionsOld && (0, _controllers.hasProductPermission)(productPermissionsOld, product, permissionIds) || false;
152
184
  };
153
185
  setShowAddContainer({
154
- Jira: showContainer(containerExists('JiraProject'), containerRequested('JiraProject'), 'jira'),
155
- Confluence: showContainer(containerExists('ConfluenceSpace'), containerRequested('ConfluenceSpace'), 'confluence'),
156
- Loom: showContainer(containerExists('LoomSpace'), containerRequested('LoomSpace'), 'loom'),
186
+ Jira: showContainer(containerExists('JiraProject'), containerRequested('JiraProject'), 'jira', autoCreateExperimentValue === 'profile_page' ? ['CREATE_PROJECT'] : []),
187
+ Confluence: showContainer(containerExists('ConfluenceSpace'), containerRequested('ConfluenceSpace'), 'confluence', autoCreateExperimentValue === 'profile_page' ? ['write'] : []),
188
+ Loom: showContainer(containerExists('LoomSpace'), containerRequested('LoomSpace'), 'loom', autoCreateExperimentValue === 'profile_page' ? ['write'] : []),
157
189
  WebLink: !containerExists('WebLink')
158
190
  });
159
191
  }
160
- }, [isDisplayedOnProfileCard, productPermissions, productPermissionsOld, filteredTeamLinks, maxNumberOfContainersToShow, requestedContainers]);
192
+ }, [isDisplayedOnProfileCard, productPermissions, productPermissionsOld, filteredTeamLinks, maxNumberOfContainersToShow, requestedContainers, autoCreateExperimentValue]);
161
193
  var handleShowMore = function handleShowMore() {
162
194
  setShowMore(!showMore);
163
195
  };
@@ -229,6 +261,86 @@ var TeamContainers = exports.TeamContainers = function TeamContainers(_ref) {
229
261
  return _ref2.apply(this, arguments);
230
262
  };
231
263
  }(), [actions, createAnalyticsEvent, fireOperationalEvent, filteredTeamLinks, removeTeamLink, teamId, unlinkError]);
264
+ var handleCreateContainer = (0, _react.useCallback)( /*#__PURE__*/function () {
265
+ var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(containerType) {
266
+ var result;
267
+ return _regenerator.default.wrap(function _callee2$(_context2) {
268
+ while (1) switch (_context2.prev = _context2.next) {
269
+ case 0:
270
+ setContainersBeingCreated(_objectSpread(_objectSpread({}, containersBeingCreated), {}, (0, _defineProperty2.default)({}, containerType.toLowerCase(), true)));
271
+ _context2.prev = 1;
272
+ _context2.next = 4;
273
+ return _teamsClient.teamsClient.createTeamContainers({
274
+ teamId: teamId,
275
+ containers: [{
276
+ type: containerTypeMap[containerType],
277
+ containerSiteId: cloudId
278
+ }]
279
+ });
280
+ case 4:
281
+ result = _context2.sent;
282
+ if (result.containersNotCreated.length === 0) {
283
+ fireOperationalEvent(createAnalyticsEvent, {
284
+ action: _analytics.AnalyticsAction.SUCCEEDED,
285
+ actionSubject: 'teamContainerCreate',
286
+ attributes: {
287
+ containerType: containerType,
288
+ teamId: teamId
289
+ }
290
+ });
291
+ refetchTeamContainers();
292
+ } else {
293
+ fireOperationalEvent(createAnalyticsEvent, {
294
+ action: _analytics.AnalyticsAction.FAILED,
295
+ actionSubject: 'teamContainerCreate',
296
+ attributes: {
297
+ containerType: containerType,
298
+ teamId: teamId
299
+ }
300
+ });
301
+ addFlag === null || addFlag === void 0 || addFlag((0, _utils.getCreateContainerTryAgainFlag)({
302
+ tryAgainAction: function tryAgainAction() {
303
+ handleCreateContainer(containerType);
304
+ },
305
+ containerType: containerTypeToTextMap[containerType]
306
+ }));
307
+ }
308
+ setContainersBeingCreated(_objectSpread(_objectSpread({}, containersBeingCreated), {}, (0, _defineProperty2.default)({}, containerType.toLowerCase(), false)));
309
+ _context2.next = 13;
310
+ break;
311
+ case 9:
312
+ _context2.prev = 9;
313
+ _context2.t0 = _context2["catch"](1);
314
+ fireOperationalEvent(createAnalyticsEvent, {
315
+ action: _analytics.AnalyticsAction.FAILED,
316
+ actionSubject: 'teamContainerCreate',
317
+ attributes: {
318
+ containerType: containerType,
319
+ teamId: teamId
320
+ }
321
+ });
322
+ if (_context2.t0 instanceof _teamsClient.HttpError) {
323
+ if (_context2.t0.status === 500) {
324
+ addFlag === null || addFlag === void 0 || addFlag((0, _utils.getCreateContainerTryAgainFlag)({
325
+ tryAgainAction: function tryAgainAction() {
326
+ handleCreateContainer(containerType);
327
+ },
328
+ containerType: containerTypeToTextMap[containerType]
329
+ }));
330
+ } else {
331
+ addFlag === null || addFlag === void 0 || addFlag((0, _utils.getCreateContainerContactSupportFlag)());
332
+ }
333
+ }
334
+ case 13:
335
+ case "end":
336
+ return _context2.stop();
337
+ }
338
+ }, _callee2, null, [[1, 9]]);
339
+ }));
340
+ return function (_x2) {
341
+ return _ref3.apply(this, arguments);
342
+ };
343
+ }(), [containersBeingCreated, teamId, cloudId, fireOperationalEvent, createAnalyticsEvent, refetchTeamContainers, addFlag]);
232
344
  var TeamContainersSkeletonComponent = (components === null || components === void 0 ? void 0 : components.TeamContainersSkeleton) || _teamContainersSkeleton.TeamContainersSkeleton;
233
345
  var hasNoPermissions = (0, _react.useMemo)(function () {
234
346
  if ((0, _platformFeatureFlags.fg)('migrate-product-permissions')) {
@@ -288,26 +400,20 @@ var TeamContainers = exports.TeamContainers = function TeamContainers(_ref) {
288
400
  return handleEditContainerClick(container);
289
401
  }
290
402
  });
291
- }), showAddContainer.Jira && /*#__PURE__*/_react.default.createElement(_addContainerCard.AddContainerCard, {
292
- onAddAContainerClick: function onAddAContainerClick(e) {
293
- return _onAddAContainerClick(e, 'Jira');
294
- },
295
- containerType: "JiraProject"
296
- }), showAddContainer.Confluence && /*#__PURE__*/_react.default.createElement(_addContainerCard.AddContainerCard, {
297
- onAddAContainerClick: function onAddAContainerClick(e) {
298
- return _onAddAContainerClick(e, 'Confluence');
299
- },
300
- containerType: "ConfluenceSpace"
301
- }), showAddContainer.Loom && (0, _platformFeatureFlags.fg)('loom_tab_in_container_linker_team_profile_page') && /*#__PURE__*/_react.default.createElement(_addContainerCard.AddContainerCard, {
302
- onAddAContainerClick: function onAddAContainerClick(e) {
303
- return _onAddAContainerClick(e, 'Loom');
403
+ }), autoCreateExperimentValue === 'profile_page' ? (0, _addContainerCardWithCreate.getAddContainerCardsWithCreate)({
404
+ showAddContainer: showAddContainer,
405
+ onCreateContainerClick: function onCreateContainerClick(e, containerType) {
406
+ if (containerType !== 'WebLink') {
407
+ handleCreateContainer(containerType);
408
+ }
304
409
  },
305
- containerType: "LoomSpace"
306
- }), showAddContainer.WebLink && /*#__PURE__*/_react.default.createElement(_addContainerCard.AddContainerCard, {
410
+ containersLoading: containersBeingCreated,
307
411
  onAddAContainerClick: function onAddAContainerClick(e) {
308
412
  return _onAddAContainerClick(e, 'WebLink');
309
- },
310
- containerType: "WebLink"
413
+ }
414
+ }) : (0, _addContainerCard.getAddContainerCards)({
415
+ showAddContainer: showAddContainer,
416
+ onAddAContainerClick: _onAddAContainerClick
311
417
  }), showMore && filteredTeamLinks.slice(maxNumberOfContainersToShow).map(function (container) {
312
418
  return /*#__PURE__*/_react.default.createElement(LinkedContainerCardComponent, {
313
419
  key: container.id,