@atlaskit/share 1.0.2 → 3.0.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 (84) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/clients/package.json +7 -0
  3. package/dist/cjs/clients/ShareServiceClient.js +1 -7
  4. package/dist/cjs/clients/index.js +13 -0
  5. package/dist/cjs/components/CopyLinkButton.js +15 -11
  6. package/dist/cjs/components/IntegrationForm.js +5 -2
  7. package/dist/cjs/components/LazyShareForm/LazyShareForm.js +105 -0
  8. package/dist/cjs/components/LazyShareForm/index.js +15 -0
  9. package/dist/cjs/components/LazyShareForm/lazy.js +53 -0
  10. package/dist/cjs/components/LazyShareForm/styled.js +28 -0
  11. package/dist/cjs/components/ShareDialogContainer.js +1 -1
  12. package/dist/cjs/components/ShareDialogWithTrigger.js +26 -38
  13. package/dist/cjs/components/ShareForm.js +33 -14
  14. package/dist/cjs/components/ShareFormWrapper/ShareFormWrapper.js +29 -0
  15. package/dist/cjs/components/ShareFormWrapper/index.js +15 -0
  16. package/dist/cjs/components/ShareFormWrapper/styled.js +31 -0
  17. package/dist/cjs/components/styles.js +1 -20
  18. package/dist/cjs/i18n.js +10 -10
  19. package/dist/cjs/index.js +0 -8
  20. package/dist/cjs/types/ShareDialogContainer.js +5 -0
  21. package/dist/cjs/types/ShareForm.js +5 -0
  22. package/dist/cjs/version.json +1 -1
  23. package/dist/es2019/clients/ShareServiceClient.js +1 -7
  24. package/dist/es2019/clients/index.js +1 -0
  25. package/dist/es2019/components/CopyLinkButton.js +12 -4
  26. package/dist/es2019/components/IntegrationForm.js +2 -2
  27. package/dist/es2019/components/LazyShareForm/LazyShareForm.js +92 -0
  28. package/dist/es2019/components/LazyShareForm/index.js +1 -0
  29. package/dist/es2019/components/LazyShareForm/lazy.js +26 -0
  30. package/dist/es2019/components/LazyShareForm/styled.js +16 -0
  31. package/dist/es2019/components/ShareDialogContainer.js +1 -1
  32. package/dist/es2019/components/ShareDialogWithTrigger.js +27 -39
  33. package/dist/es2019/components/ShareForm.js +23 -4
  34. package/dist/es2019/components/ShareFormWrapper/ShareFormWrapper.js +14 -0
  35. package/dist/es2019/components/ShareFormWrapper/index.js +1 -0
  36. package/dist/es2019/components/ShareFormWrapper/styled.js +15 -0
  37. package/dist/es2019/components/styles.js +1 -15
  38. package/dist/es2019/i18n.js +10 -10
  39. package/dist/es2019/index.js +0 -1
  40. package/dist/es2019/types/ShareDialogContainer.js +1 -0
  41. package/dist/es2019/types/ShareForm.js +1 -0
  42. package/dist/es2019/version.json +1 -1
  43. package/dist/esm/clients/ShareServiceClient.js +1 -7
  44. package/dist/esm/clients/index.js +1 -0
  45. package/dist/esm/components/CopyLinkButton.js +12 -4
  46. package/dist/esm/components/IntegrationForm.js +5 -2
  47. package/dist/esm/components/LazyShareForm/LazyShareForm.js +87 -0
  48. package/dist/esm/components/LazyShareForm/index.js +1 -0
  49. package/dist/esm/components/LazyShareForm/lazy.js +31 -0
  50. package/dist/esm/components/LazyShareForm/styled.js +9 -0
  51. package/dist/esm/components/ShareDialogContainer.js +1 -1
  52. package/dist/esm/components/ShareDialogWithTrigger.js +28 -35
  53. package/dist/esm/components/ShareForm.js +33 -13
  54. package/dist/esm/components/ShareFormWrapper/ShareFormWrapper.js +17 -0
  55. package/dist/esm/components/ShareFormWrapper/index.js +1 -0
  56. package/dist/esm/components/ShareFormWrapper/styled.js +15 -0
  57. package/dist/esm/components/styles.js +1 -16
  58. package/dist/esm/i18n.js +10 -10
  59. package/dist/esm/index.js +0 -1
  60. package/dist/esm/types/ShareDialogContainer.js +1 -0
  61. package/dist/esm/types/ShareForm.js +1 -0
  62. package/dist/esm/version.json +1 -1
  63. package/dist/types/clients/ShareServiceClient.d.ts +2 -2
  64. package/dist/types/clients/index.d.ts +2 -0
  65. package/dist/types/components/IntegrationForm.d.ts +4 -5
  66. package/dist/types/components/LazyShareForm/LazyShareForm.d.ts +19 -0
  67. package/dist/types/components/LazyShareForm/index.d.ts +1 -0
  68. package/dist/types/components/LazyShareForm/lazy.d.ts +4 -0
  69. package/dist/types/components/LazyShareForm/styled.d.ts +4 -0
  70. package/dist/types/components/ShareDialogContainer.d.ts +10 -148
  71. package/dist/types/components/ShareDialogWithTrigger.d.ts +10 -71
  72. package/dist/types/components/ShareForm.d.ts +3 -44
  73. package/dist/types/components/ShareFormWrapper/ShareFormWrapper.d.ts +9 -0
  74. package/dist/types/components/ShareFormWrapper/index.d.ts +1 -0
  75. package/dist/types/components/ShareFormWrapper/styled.d.ts +9 -0
  76. package/dist/types/components/styles.d.ts +0 -7
  77. package/dist/types/i18n.d.ts +10 -10
  78. package/dist/types/index.d.ts +1 -4
  79. package/dist/types/types/ShareContentState.d.ts +2 -2
  80. package/dist/types/types/ShareDialogContainer.d.ts +142 -0
  81. package/dist/types/types/ShareDialogWithTrigger.d.ts +30 -3
  82. package/dist/types/types/ShareForm.d.ts +31 -0
  83. package/dist/types/types/index.d.ts +4 -2
  84. package/package.json +6 -2
@@ -100,11 +100,6 @@ export const messages = defineMessages({
100
100
  defaultMessage: 'Invite',
101
101
  description: 'Button label for when the sharee action is set to "edit".'
102
102
  },
103
- copyLinkButtonIconLabel: {
104
- id: 'fabric.elements.share.copylink.button.icon.label',
105
- defaultMessage: 'Copy link icon',
106
- description: 'Default text for the aria-label of the copy Link icon'
107
- },
108
103
  copyLinkButtonText: {
109
104
  id: 'fabric.elements.share.copylink.button.text',
110
105
  defaultMessage: 'Copy link',
@@ -115,11 +110,6 @@ export const messages = defineMessages({
115
110
  defaultMessage: 'Copy public link',
116
111
  description: 'Default text for the Copy Link button when the link is public'
117
112
  },
118
- copiedToClipboardIconLabel: {
119
- id: 'fabric.elements.share.copied.to.clipboard.icon.label',
120
- defaultMessage: 'Copy link success icon',
121
- description: 'Default text for the aria-label of the copied link icon'
122
- },
123
113
  copiedToClipboardMessage: {
124
114
  id: 'fabric.elements.share.copied.to.clipboard.message',
125
115
  defaultMessage: 'Link copied to clipboard',
@@ -160,5 +150,15 @@ export const messages = defineMessages({
160
150
  id: 'fabric.elements.share.in.integration.button',
161
151
  defaultMessage: 'Share in {integrationName}',
162
152
  description: 'Text for the button that allows the user to share the currently viewed item through a 3rd party app like Slack'
153
+ },
154
+ shareMainTabTextJira: {
155
+ id: 'fabric.elements.share.main.tab.text.jira',
156
+ defaultMessage: 'Share issue',
157
+ description: 'Text for the main share tab for jira'
158
+ },
159
+ shareMainTabTextConfluence: {
160
+ id: 'fabric.elements.share.main.tab.text.confluence',
161
+ defaultMessage: 'Share page',
162
+ description: 'Text for the main share tab for confluence'
163
163
  }
164
164
  });
@@ -1,4 +1,3 @@
1
- export { ShareServiceClient } from './clients/ShareServiceClient';
2
1
  export { ShareDialogContainer } from './components/ShareDialogContainer';
3
2
  export { // Constants
4
3
  ADMIN_NOTIFIED, OBJECT_SHARED } from './types';
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "name": "@atlaskit/share",
3
- "version": "1.0.2"
3
+ "version": "3.0.0"
4
4
  }
@@ -21,13 +21,7 @@ export var ShareServiceClient = /*#__PURE__*/function () {
21
21
 
22
22
  _createClass(ShareServiceClient, [{
23
23
  key: "getConfig",
24
- value: function getConfig(cloudId, enableEmailPermissionCheck) {
25
- if (!enableEmailPermissionCheck) {
26
- return Promise.resolve({
27
- disableSharingToEmails: false
28
- });
29
- }
30
-
24
+ value: function getConfig(cloudId) {
31
25
  var options = {
32
26
  path: SHARE_CONFIG_PATH,
33
27
  queryParams: {
@@ -0,0 +1 @@
1
+ export { ShareServiceClient } from './ShareServiceClient';
@@ -22,9 +22,11 @@ import { layers } from '@atlaskit/theme/constants';
22
22
  import Tooltip from '@atlaskit/tooltip';
23
23
  import React from 'react';
24
24
  import { FormattedMessage, injectIntl } from 'react-intl-next';
25
+ import { isSafari } from 'react-device-detect';
25
26
  import styled from 'styled-components';
26
- import Button, { InlineDialogContentWrapper } from './styles';
27
+ import Button from './styles';
27
28
  import { messages } from '../i18n';
29
+ import { InlineDialogContentWrapper } from './ShareFormWrapper/styled';
28
30
  var Z_INDEX = layers.modal();
29
31
  var AUTO_DISMISS_SECONDS = 8;
30
32
  export var AUTO_DISMISS_MS = AUTO_DISMISS_SECONDS * 1000;
@@ -37,6 +39,8 @@ function (props, ref) {
37
39
  position: 'absolute',
38
40
  left: '-9999px'
39
41
  },
42
+ tabIndex: -1,
43
+ "aria-hidden": true,
40
44
  ref: ref,
41
45
  value: props.text,
42
46
  readOnly: true
@@ -107,10 +111,11 @@ export var CopyLinkButton = /*#__PURE__*/function (_React$Component) {
107
111
  isDisabled = _this$props.isDisabled,
108
112
  isPublicLink = _this$props.isPublicLink;
109
113
  return /*#__PURE__*/React.createElement(Button, _extends({
114
+ "aria-label": formatMessage(isPublicLink ? messages.copyPublicLinkButtonText : messages.copyLinkButtonText),
110
115
  isDisabled: isDisabled,
111
116
  appearance: "subtle-link",
112
117
  iconBefore: /*#__PURE__*/React.createElement(LinkFilledIcon, {
113
- label: formatMessage(messages.copyLinkButtonIconLabel),
118
+ label: "",
114
119
  size: "medium"
115
120
  }),
116
121
  onClick: _this.handleClick
@@ -134,14 +139,17 @@ export var CopyLinkButton = /*#__PURE__*/function (_React$Component) {
134
139
  var _this$props2 = this.props,
135
140
  formatMessage = _this$props2.intl.formatMessage,
136
141
  copyTooltipText = _this$props2.copyTooltipText;
137
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(HiddenInput, {
142
+ return /*#__PURE__*/React.createElement(React.Fragment, null, isSafari && /*#__PURE__*/React.createElement("div", {
143
+ className: "assistive",
144
+ "aria-live": "assertive"
145
+ }, shouldShowCopiedMessage && formatMessage(messages.copiedToClipboardMessage)), /*#__PURE__*/React.createElement(HiddenInput, {
138
146
  ref: this.inputRef,
139
147
  text: this.props.link
140
148
  }), /*#__PURE__*/React.createElement(Popup, {
141
149
  zIndex: Z_INDEX,
142
150
  content: function content() {
143
151
  return /*#__PURE__*/React.createElement(InlineDialogContentWrapper, null, /*#__PURE__*/React.createElement(MessageContainer, null, /*#__PURE__*/React.createElement(CheckCircleIcon, {
144
- label: formatMessage(messages.copiedToClipboardIconLabel),
152
+ label: "",
145
153
  primaryColor: G300
146
154
  }), /*#__PURE__*/React.createElement(MessageSpan, null, /*#__PURE__*/React.createElement(FormattedMessage, messages.copiedToClipboardMessage))));
147
155
  },
@@ -8,8 +8,11 @@ import { h500 } from '@atlaskit/theme/typography';
8
8
  export var FormWrapper = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n [class^='FormHeader__FormHeaderWrapper'] {\n h1:first-child {\n ", "\n\n > span {\n /* jira has a class override font settings on h1 > span in gh-custom-field-pickers.css */\n font-size: inherit !important;\n line-height: inherit !important;\n letter-spacing: inherit !important;\n }\n }\n }\n\n [class^='FormSection__FormSectionWrapper'] {\n margin-top: 0px;\n }\n\n [class^='FormFooter__FormFooterWrapper'] {\n justify-content: space-between;\n margin-top: 12px;\n margin-bottom: 24px;\n }\n\n [class^='Field__FieldWrapper']:not(:first-child) {\n margin-top: 12px;\n }\n"])), h500());
9
9
  export var IntegrationForm = function IntegrationForm(_ref) {
10
10
  var Content = _ref.Content,
11
- onIntegrationClose = _ref.onIntegrationClose;
12
- return /*#__PURE__*/React.createElement(FormWrapper, null, /*#__PURE__*/React.createElement(Content, {
11
+ _ref$onIntegrationClo = _ref.onIntegrationClose,
12
+ onIntegrationClose = _ref$onIntegrationClo === void 0 ? function () {
13
+ return undefined;
14
+ } : _ref$onIntegrationClo;
15
+ return /*#__PURE__*/React.createElement(FormWrapper, null, Content && /*#__PURE__*/React.createElement(Content, {
13
16
  onClose: onIntegrationClose
14
17
  }));
15
18
  };
@@ -0,0 +1,87 @@
1
+ import React from 'react';
2
+ import { AnalyticsContext } from '@atlaskit/analytics-next';
3
+ import { ShareForm } from '../ShareForm';
4
+ import { ANALYTICS_SOURCE } from '../analytics';
5
+ import { IntegrationForm } from '../IntegrationForm';
6
+ import { BottomMessageWrapper, CustomFooterWrapper } from './styled';
7
+ import { ShareFormWrapper } from '../ShareFormWrapper';
8
+
9
+ /**
10
+ * A Share form content which is lazy-loaded.
11
+ * Make sure this component is not exported inside main entry points `src/index.ts`
12
+ */
13
+ function LazyShareForm(props) {
14
+ var copyLink = props.copyLink,
15
+ config = props.config,
16
+ isFetchingConfig = props.isFetchingConfig,
17
+ loadOptions = props.loadOptions,
18
+ shareFormTitle = props.shareFormTitle,
19
+ shareFormHelperMessage = props.shareFormHelperMessage,
20
+ bottomMessage = props.bottomMessage,
21
+ submitButtonLabel = props.submitButtonLabel,
22
+ product = props.product,
23
+ customFooter = props.customFooter,
24
+ enableSmartUserPicker = props.enableSmartUserPicker,
25
+ loggedInAccountId = props.loggedInAccountId,
26
+ cloudId = props.cloudId,
27
+ shareFieldsFooter = props.shareFieldsFooter,
28
+ onUserSelectionChange = props.onUserSelectionChange,
29
+ isPublicLink = props.isPublicLink,
30
+ copyTooltipText = props.copyTooltipText,
31
+ shareIntegrations = props.shareIntegrations,
32
+ integrationMode = props.integrationMode,
33
+ onLinkCopy = props.onLinkCopy,
34
+ onDismiss = props.onDismiss,
35
+ onSubmit = props.onSubmit,
36
+ onDialogClose = props.onDialogClose,
37
+ selectPortalRef = props.selectPortalRef,
38
+ showIntegrationForm = props.showIntegrationForm,
39
+ selectedIntegration = props.selectedIntegration,
40
+ isSharing = props.isSharing,
41
+ shareError = props.shareError,
42
+ defaultValue = props.defaultValue,
43
+ showTitle = props.showTitle;
44
+ var footer = /*#__PURE__*/React.createElement("div", null, bottomMessage ? /*#__PURE__*/React.createElement(BottomMessageWrapper, null, bottomMessage) : null, customFooter && /*#__PURE__*/React.createElement(CustomFooterWrapper, null, customFooter));
45
+ return /*#__PURE__*/React.createElement(AnalyticsContext, {
46
+ data: {
47
+ source: ANALYTICS_SOURCE
48
+ }
49
+ }, /*#__PURE__*/React.createElement(ShareFormWrapper, {
50
+ footer: footer // form title will be determined by `title` and `showTitle` prop passed to `ShareForm`,
51
+ // so we don't need to show title via ShareFormWrapper
52
+ ,
53
+ shouldShowTitle: false
54
+ }, showIntegrationForm && selectedIntegration !== null ? /*#__PURE__*/React.createElement(IntegrationForm, {
55
+ Content: selectedIntegration.Content,
56
+ onIntegrationClose: onDialogClose
57
+ }) : /*#__PURE__*/React.createElement(ShareForm, {
58
+ copyLink: copyLink,
59
+ loadOptions: loadOptions,
60
+ title: shareFormTitle,
61
+ showTitle: showTitle,
62
+ helperMessage: shareFormHelperMessage,
63
+ shareError: shareError,
64
+ defaultValue: defaultValue,
65
+ config: config,
66
+ submitButtonLabel: submitButtonLabel,
67
+ product: product,
68
+ enableSmartUserPicker: enableSmartUserPicker,
69
+ loggedInAccountId: loggedInAccountId,
70
+ cloudId: cloudId,
71
+ fieldsFooter: shareFieldsFooter,
72
+ selectPortalRef: selectPortalRef,
73
+ copyTooltipText: copyTooltipText,
74
+ integrationMode: integrationMode,
75
+ shareIntegrations: shareIntegrations,
76
+ isSharing: isSharing,
77
+ isFetchingConfig: isFetchingConfig,
78
+ isPublicLink: isPublicLink,
79
+ onSubmit: onSubmit,
80
+ onDismiss: onDismiss,
81
+ onLinkCopy: onLinkCopy,
82
+ onUserSelectionChange: onUserSelectionChange,
83
+ handleCloseDialog: onDialogClose
84
+ })));
85
+ }
86
+
87
+ export default LazyShareForm;
@@ -0,0 +1 @@
1
+ export { default } from './LazyShareForm';
@@ -0,0 +1,31 @@
1
+ import React from 'react';
2
+ import { LazySuspense, lazyForPaint } from 'react-loosely-lazy';
3
+ import Spinner from '@atlaskit/spinner';
4
+ import { SpinnerWrapper } from './styled';
5
+ import { ShareFormWrapper } from '../ShareFormWrapper';
6
+ var LazyShareFormLazy = lazyForPaint(function () {
7
+ return import(
8
+ /* webpackChunkName: "@atlaskit-internal_share-form" */
9
+ './LazyShareForm');
10
+ }, {
11
+ ssr: false
12
+ });
13
+
14
+ var LoadingDialog = function LoadingDialog(_ref) {
15
+ var shareFormTitle = _ref.shareFormTitle,
16
+ showTitle = _ref.showTitle;
17
+ return /*#__PURE__*/React.createElement(ShareFormWrapper, {
18
+ shareFormTitle: shareFormTitle // if `showTitle` is passed, we use it. Otherwise, we will show title for loading dialog.
19
+ ,
20
+ shouldShowTitle: typeof showTitle === 'boolean' ? showTitle : true
21
+ }, /*#__PURE__*/React.createElement(SpinnerWrapper, null, /*#__PURE__*/React.createElement(Spinner, null)));
22
+ };
23
+
24
+ export default (function (props) {
25
+ return /*#__PURE__*/React.createElement(LazySuspense, {
26
+ fallback: /*#__PURE__*/React.createElement(LoadingDialog, {
27
+ shareFormTitle: props.shareFormTitle,
28
+ showTitle: props.showTitle
29
+ })
30
+ }, /*#__PURE__*/React.createElement(LazyShareFormLazy, props));
31
+ });
@@ -0,0 +1,9 @@
1
+ import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
2
+
3
+ var _templateObject, _templateObject2, _templateObject3;
4
+
5
+ import styled from 'styled-components';
6
+ import { gridSize } from '@atlaskit/theme/constants';
7
+ export var BottomMessageWrapper = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n width: ", "px;\n"])), gridSize() * 44);
8
+ export var CustomFooterWrapper = styled.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n /* Must match inline dialog padding. */\n margin: 0 ", "px ", "px ", "px;\n"])), -gridSize() * 3, -gridSize() * 2, -gridSize() * 3);
9
+ export var SpinnerWrapper = styled.div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n widht: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-content: center;\n"])));
@@ -84,7 +84,7 @@ export var ShareDialogContainerInternal = /*#__PURE__*/function (_React$Componen
84
84
  case 0:
85
85
  _context.prev = 0;
86
86
  _context.next = 3;
87
- return _this.shareClient.getConfig(_this.props.cloudId, _this.props.enableEmailPermissionCheck);
87
+ return _this.shareClient.getConfig(_this.props.cloudId);
88
88
 
89
89
  case 3:
90
90
  config = _context.sent;
@@ -8,7 +8,7 @@ import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
8
8
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
9
9
  import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
10
10
 
11
- var _templateObject, _templateObject2, _templateObject3, _templateObject4;
11
+ var _templateObject;
12
12
 
13
13
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
14
14
 
@@ -18,28 +18,23 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
18
18
 
19
19
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
20
20
 
21
- import { AnalyticsContext, withAnalyticsEvents } from '@atlaskit/analytics-next';
21
+ import React from 'react';
22
+ import { withAnalyticsEvents } from '@atlaskit/analytics-next';
22
23
  import SplitButton from './SplitButton';
23
24
  import ShareIcon from '@atlaskit/icon/glyph/share';
24
25
  import Popup from '@atlaskit/popup';
25
26
  import Portal from '@atlaskit/portal';
26
27
  import Aktooltip from '@atlaskit/tooltip';
27
- import { gridSize, layers } from '@atlaskit/theme/constants';
28
- import React from 'react';
28
+ import { layers } from '@atlaskit/theme/constants';
29
29
  import { FormattedMessage, injectIntl } from 'react-intl-next';
30
30
  import styled from 'styled-components';
31
31
  import { messages } from '../i18n';
32
32
  import { OBJECT_SHARED } from '../types';
33
- import { cancelShare, CHANNEL_ID, copyLinkButtonClicked, formShareSubmitted, screenEvent, shareTriggerButtonClicked, shareSplitButtonEvent, ANALYTICS_SOURCE, shareTabClicked } from './analytics';
33
+ import { cancelShare, CHANNEL_ID, copyLinkButtonClicked, screenEvent, shareTriggerButtonClicked, shareSplitButtonEvent, shareTabClicked, formShareSubmitted } from './analytics';
34
34
  import ShareButton from './ShareButton';
35
- import { ShareForm } from './ShareForm';
36
35
  import { generateSelectZIndex } from './utils';
37
- import { InlineDialogContentWrapper } from './styles';
38
- import { IntegrationForm } from './IntegrationForm';
36
+ import LazyShareFormLazy from './LazyShareForm/lazy';
39
37
  var ShareButtonWrapper = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n display: inline-flex;\n outline: none;\n"])));
40
- var InlineDialogFormWrapper = styled.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n width: 352px;\n"])));
41
- var BottomMessageWrapper = styled.div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n width: 352px;\n"])));
42
- var CustomFooterWrapper = styled.div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n /* Must match inline dialog padding. */\n margin: 0 ", "px ", "px ", "px;\n"])), -gridSize() * 3, -gridSize() * 2, -gridSize() * 3);
43
38
  export var defaultShareContentState = {
44
39
  users: [],
45
40
  comment: {
@@ -445,51 +440,49 @@ export var ShareDialogWithTriggerInternal = /*#__PURE__*/function (_React$PureCo
445
440
  style: style
446
441
  }, /*#__PURE__*/React.createElement(Popup, {
447
442
  content: function content() {
448
- return /*#__PURE__*/React.createElement(AnalyticsContext, {
449
- data: {
450
- source: ANALYTICS_SOURCE
451
- }
452
- }, /*#__PURE__*/React.createElement(InlineDialogContentWrapper, {
453
- innerRef: _this2.containerRef
454
- }, showIntegrationForm && selectedIntegration !== null ? /*#__PURE__*/React.createElement(InlineDialogFormWrapper, null, /*#__PURE__*/React.createElement(IntegrationForm, {
455
- Content: selectedIntegration.Content,
456
- onIntegrationClose: _this2.handleCloseDialog
457
- })) : /*#__PURE__*/React.createElement(InlineDialogFormWrapper, null, /*#__PURE__*/React.createElement(ShareForm, {
443
+ return /*#__PURE__*/React.createElement("div", {
444
+ ref: _this2.containerRef
445
+ }, /*#__PURE__*/React.createElement(LazyShareFormLazy, {
446
+ Content: selectedIntegration && selectedIntegration.Content,
447
+ selectedIntegration: selectedIntegration,
458
448
  copyLink: copyLink,
449
+ showIntegrationForm: showIntegrationForm,
450
+ bottomMessage: bottomMessage,
451
+ customFooter: customFooter,
459
452
  loadOptions: loadUserOptions,
460
453
  isSharing: isSharing,
461
- onSubmit: _this2.handleShareSubmit,
462
- title: shareFormTitle,
454
+ shareFormTitle: shareFormTitle,
463
455
  showTitle: integrationMode !== 'tabs' || !shareIntegrations || !shareIntegrations.length,
464
- onTabChange: _this2.onTabChange,
465
- helperMessage: shareFormHelperMessage,
456
+ shareFormHelperMessage: shareFormHelperMessage,
466
457
  shareError: shareError,
467
- onDismiss: _this2.handleFormDismiss,
468
458
  defaultValue: defaultValue,
469
459
  config: config,
470
460
  isFetchingConfig: isFetchingConfig,
471
- onLinkCopy: _this2.handleCopyLink,
472
461
  submitButtonLabel: submitButtonLabel,
473
462
  product: product,
474
463
  enableSmartUserPicker: enableSmartUserPicker,
475
464
  loggedInAccountId: loggedInAccountId,
476
465
  cloudId: cloudId,
477
466
  onUserSelectionChange: onUserSelectionChange,
478
- fieldsFooter: shareFieldsFooter,
479
- selectPortalRef: _this2.selectPortalRef,
467
+ shareFieldsFooter: shareFieldsFooter,
480
468
  isPublicLink: isPublicLink,
481
469
  copyTooltipText: copyTooltipText,
482
470
  integrationMode: integrationMode,
483
- handleCloseDialog: _this2.handleCloseDialog,
484
- shareIntegrations: shareIntegrations
485
- })), bottomMessage ? /*#__PURE__*/React.createElement(BottomMessageWrapper, null, bottomMessage) : null, customFooter && /*#__PURE__*/React.createElement(CustomFooterWrapper, null, customFooter)));
471
+ shareIntegrations: shareIntegrations // actions
472
+ ,
473
+ onLinkCopy: _this2.handleCopyLink,
474
+ onSubmit: _this2.handleShareSubmit,
475
+ onDismiss: _this2.handleFormDismiss,
476
+ onDialogClose: _this2.handleCloseDialog,
477
+ onTabChange: _this2.onTabChange //ref
478
+ ,
479
+ selectPortalRef: _this2.selectPortalRef
480
+ }));
486
481
  },
487
482
  isOpen: isDialogOpen,
488
483
  onClose: this.handleCloseDialog,
489
484
  placement: dialogPlacement,
490
- trigger: function trigger(triggerProps) {
491
- return _this2.renderShareTriggerButton(triggerProps);
492
- },
485
+ trigger: this.renderShareTriggerButton,
493
486
  zIndex: dialogZIndex
494
487
  }), /*#__PURE__*/React.createElement(Portal, {
495
488
  zIndex: generateSelectZIndex(dialogZIndex)
@@ -10,10 +10,15 @@ import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral
10
10
 
11
11
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
12
12
 
13
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
14
+
15
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
16
+
13
17
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
14
18
 
15
19
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
16
20
 
21
+ import React from 'react';
17
22
  import Button from '@atlaskit/button/custom-theme-button';
18
23
  import Form from '@atlaskit/form';
19
24
  import ErrorIcon from '@atlaskit/icon/glyph/error';
@@ -21,7 +26,6 @@ import { R400 } from '@atlaskit/theme/colors';
21
26
  import { gridSize } from '@atlaskit/theme/constants';
22
27
  import Tooltip from '@atlaskit/tooltip';
23
28
  import Tabs, { Tab, TabList, TabPanel } from '@atlaskit/tabs';
24
- import React from 'react';
25
29
  import { FormattedMessage, injectIntl } from 'react-intl-next';
26
30
  import styled from 'styled-components';
27
31
  import { messages } from '../i18n';
@@ -97,7 +101,7 @@ var InternalForm = /*#__PURE__*/function (_React$PureComponent) {
97
101
  defaultValue: defaultValue && defaultValue.users,
98
102
  config: config,
99
103
  isLoading: isFetchingConfig,
100
- product: product,
104
+ product: product || 'confluence',
101
105
  enableSmartUserPicker: enableSmartUserPicker,
102
106
  loggedInAccountId: loggedInAccountId,
103
107
  cloudId: cloudId,
@@ -142,15 +146,32 @@ var InternalForm = /*#__PURE__*/function (_React$PureComponent) {
142
146
  }, /*#__PURE__*/React.createElement(ButtonLabelWrapper, null, submitButtonLabel || /*#__PURE__*/React.createElement(FormattedMessage, buttonLabel))));
143
147
  });
144
148
 
149
+ _defineProperty(_assertThisInitialized(_this), "renderMainTabTitle", function () {
150
+ var _this$props3 = _this.props,
151
+ title = _this$props3.title,
152
+ product = _this$props3.product;
153
+
154
+ if (title) {
155
+ return title;
156
+ }
157
+
158
+ if (!product) {
159
+ return /*#__PURE__*/React.createElement(FormattedMessage, messages.formTitle);
160
+ }
161
+
162
+ var productShareType = product === 'jira' ? _objectSpread({}, messages.shareMainTabTextJira) : _objectSpread({}, messages.shareMainTabTextConfluence);
163
+ return /*#__PURE__*/React.createElement(FormattedMessage, productShareType);
164
+ });
165
+
145
166
  return _this;
146
167
  }
147
168
 
148
169
  _createClass(InternalForm, [{
149
170
  key: "componentWillUnmount",
150
171
  value: function componentWillUnmount() {
151
- var _this$props3 = this.props,
152
- onDismiss = _this$props3.onDismiss,
153
- getValues = _this$props3.getValues;
172
+ var _this$props4 = this.props,
173
+ onDismiss = _this$props4.onDismiss,
174
+ getValues = _this$props4.getValues;
154
175
 
155
176
  if (onDismiss) {
156
177
  onDismiss(getValues());
@@ -159,13 +180,12 @@ var InternalForm = /*#__PURE__*/function (_React$PureComponent) {
159
180
  }, {
160
181
  key: "render",
161
182
  value: function render() {
162
- var _this$props4 = this.props,
163
- title = _this$props4.title,
164
- _this$props4$integrat = _this$props4.integrationMode,
165
- integrationMode = _this$props4$integrat === void 0 ? 'off' : _this$props4$integrat,
166
- shareIntegrations = _this$props4.shareIntegrations,
167
- onTabChange = _this$props4.onTabChange,
168
- handleCloseDialog = _this$props4.handleCloseDialog;
183
+ var _this$props5 = this.props,
184
+ _this$props5$integrat = _this$props5.integrationMode,
185
+ integrationMode = _this$props5$integrat === void 0 ? 'off' : _this$props5$integrat,
186
+ shareIntegrations = _this$props5.shareIntegrations,
187
+ onTabChange = _this$props5.onTabChange,
188
+ handleCloseDialog = _this$props5.handleCloseDialog;
169
189
 
170
190
  if (integrationMode === 'off' || !shareIntegrations || !shareIntegrations.length) {
171
191
  return this.renderShareForm();
@@ -181,7 +201,7 @@ var InternalForm = /*#__PURE__*/function (_React$PureComponent) {
181
201
  }
182
202
  }, /*#__PURE__*/React.createElement(TabList, null, /*#__PURE__*/React.createElement(Tab, {
183
203
  key: "share-tab-default"
184
- }, title || /*#__PURE__*/React.createElement(FormattedMessage, messages.formTitle)), /*#__PURE__*/React.createElement(Tab, {
204
+ }, this.renderMainTabTitle()), /*#__PURE__*/React.createElement(Tab, {
185
205
  key: "share-tab-".concat(firstIntegration.type)
186
206
  }, /*#__PURE__*/React.createElement(IntegrationWrapper, null, /*#__PURE__*/React.createElement(IntegrationIconWrapper, null, /*#__PURE__*/React.createElement(firstIntegration.Icon, null)), integrationTabText(firstIntegration.type)))), /*#__PURE__*/React.createElement(TabPanel, {
187
207
  key: "share-tabPanel-default"
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ import { InlineDialogFormWrapper, InlineDialogContentWrapper } from './styled';
3
+ import { ShareHeader } from '../ShareHeader';
4
+
5
+ var ShareFormWrapper = function ShareFormWrapper(_ref) {
6
+ var shareFormTitle = _ref.shareFormTitle,
7
+ shouldShowTitle = _ref.shouldShowTitle,
8
+ _ref$children = _ref.children,
9
+ children = _ref$children === void 0 ? null : _ref$children,
10
+ _ref$footer = _ref.footer,
11
+ footer = _ref$footer === void 0 ? null : _ref$footer;
12
+ return /*#__PURE__*/React.createElement(InlineDialogContentWrapper, null, /*#__PURE__*/React.createElement(InlineDialogFormWrapper, null, shouldShowTitle && /*#__PURE__*/React.createElement(ShareHeader, {
13
+ title: shareFormTitle
14
+ }), children), footer);
15
+ };
16
+
17
+ export default ShareFormWrapper;
@@ -0,0 +1 @@
1
+ export { default as ShareFormWrapper } from './ShareFormWrapper';
@@ -0,0 +1,15 @@
1
+ import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
2
+
3
+ var _templateObject, _templateObject2;
4
+
5
+ import styled from 'styled-components';
6
+ import { gridSize } from '@atlaskit/theme/constants';
7
+ export var InlineDialogFormWrapper = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n width: ", "px;\n"])), gridSize() * 44);
8
+ /**
9
+ * Apply the same styling, as previous @atlaskit/inline-dialog had,
10
+ * compared to the @atlaskit/popup we are now using.
11
+ *
12
+ * packages/design-system/inline-dialog/src/InlineDialog/styled.ts:20:3
13
+ */
14
+
15
+ export var InlineDialogContentWrapper = styled.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n padding: ", "px ", "px;\n"])), gridSize() * 2, gridSize() * 3);
@@ -1,29 +1,14 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
3
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
- import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
5
-
6
- var _templateObject;
7
4
 
8
5
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
9
6
 
10
7
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
11
8
 
12
- import React from 'react'; // AFP-2532 TODO: Fix automatic suppressions below
13
- // eslint-disable-next-line @atlassian/tangerine/import/entry-points
14
-
15
- import { gridSize } from '@atlaskit/theme/constants';
9
+ import React from 'react';
16
10
  import Button from '@atlaskit/button/custom-theme-button';
17
- import styled from 'styled-components';
18
11
  export var MAX_PICKER_HEIGHT = 102;
19
- /**
20
- * Apply the same styling, as previous @atlaskit/inline-dialog had,
21
- * compared to the @atlaskit/popup we are now using.
22
- *
23
- * packages/design-system/inline-dialog/src/InlineDialog/styled.ts:20:3
24
- */
25
-
26
- export var InlineDialogContentWrapper = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n padding: ", "px ", "px;\n"])), gridSize() * 2, gridSize() * 3);
27
12
  var StyledButton = /*#__PURE__*/React.forwardRef(function (props, ref) {
28
13
  return /*#__PURE__*/React.createElement(Button, _extends({
29
14
  ref: ref
package/dist/esm/i18n.js CHANGED
@@ -100,11 +100,6 @@ export var messages = defineMessages({
100
100
  defaultMessage: 'Invite',
101
101
  description: 'Button label for when the sharee action is set to "edit".'
102
102
  },
103
- copyLinkButtonIconLabel: {
104
- id: 'fabric.elements.share.copylink.button.icon.label',
105
- defaultMessage: 'Copy link icon',
106
- description: 'Default text for the aria-label of the copy Link icon'
107
- },
108
103
  copyLinkButtonText: {
109
104
  id: 'fabric.elements.share.copylink.button.text',
110
105
  defaultMessage: 'Copy link',
@@ -115,11 +110,6 @@ export var messages = defineMessages({
115
110
  defaultMessage: 'Copy public link',
116
111
  description: 'Default text for the Copy Link button when the link is public'
117
112
  },
118
- copiedToClipboardIconLabel: {
119
- id: 'fabric.elements.share.copied.to.clipboard.icon.label',
120
- defaultMessage: 'Copy link success icon',
121
- description: 'Default text for the aria-label of the copied link icon'
122
- },
123
113
  copiedToClipboardMessage: {
124
114
  id: 'fabric.elements.share.copied.to.clipboard.message',
125
115
  defaultMessage: 'Link copied to clipboard',
@@ -160,5 +150,15 @@ export var messages = defineMessages({
160
150
  id: 'fabric.elements.share.in.integration.button',
161
151
  defaultMessage: 'Share in {integrationName}',
162
152
  description: 'Text for the button that allows the user to share the currently viewed item through a 3rd party app like Slack'
153
+ },
154
+ shareMainTabTextJira: {
155
+ id: 'fabric.elements.share.main.tab.text.jira',
156
+ defaultMessage: 'Share issue',
157
+ description: 'Text for the main share tab for jira'
158
+ },
159
+ shareMainTabTextConfluence: {
160
+ id: 'fabric.elements.share.main.tab.text.confluence',
161
+ defaultMessage: 'Share page',
162
+ description: 'Text for the main share tab for confluence'
163
163
  }
164
164
  });
package/dist/esm/index.js CHANGED
@@ -1,4 +1,3 @@
1
- export { ShareServiceClient } from './clients/ShareServiceClient';
2
1
  export { ShareDialogContainer } from './components/ShareDialogContainer';
3
2
  export { // Constants
4
3
  ADMIN_NOTIFIED, OBJECT_SHARED } from './types';
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "name": "@atlaskit/share",
3
- "version": "1.0.2"
3
+ "version": "3.0.0"
4
4
  }