@atlaskit/link-create 2.0.0 → 2.1.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 (98) hide show
  1. package/CHANGELOG.md +343 -337
  2. package/dist/cjs/common/constants.js +8 -2
  3. package/dist/cjs/{ui/link-create → common/ui}/confirm-dismiss-dialog/main.js +4 -6
  4. package/dist/cjs/{ui/link-create → common/ui}/edit-modal/index.js +4 -8
  5. package/dist/cjs/{ui/link-create → common/ui}/error-boundary/index.js +1 -1
  6. package/dist/cjs/{controllers → common/ui}/experience-tracker/index.js +3 -3
  7. package/dist/cjs/common/ui/link-create-content/index.js +21 -0
  8. package/dist/cjs/{ui/link-create → common/ui}/modal-hero/index.js +1 -3
  9. package/dist/cjs/controllers/callback-context/main.js +1 -1
  10. package/dist/cjs/ui/index.js +11 -4
  11. package/dist/cjs/ui/{main.js → inline-create/index.js} +11 -17
  12. package/dist/cjs/ui/inline-create/main.js +125 -0
  13. package/dist/cjs/ui/modal-create/index.js +38 -0
  14. package/dist/cjs/ui/{link-create → modal-create}/main.js +36 -39
  15. package/dist/es2019/common/constants.js +7 -1
  16. package/dist/es2019/{ui/link-create → common/ui}/confirm-dismiss-dialog/main.js +4 -7
  17. package/dist/es2019/{ui/link-create → common/ui}/edit-modal/index.js +4 -10
  18. package/dist/es2019/{ui/link-create → common/ui}/error-boundary/index.js +1 -1
  19. package/dist/es2019/{controllers → common/ui}/experience-tracker/index.js +3 -3
  20. package/dist/es2019/common/ui/link-create-content/index.js +11 -0
  21. package/dist/es2019/{ui/link-create → common/ui}/modal-hero/index.js +1 -3
  22. package/dist/es2019/controllers/callback-context/main.js +1 -1
  23. package/dist/es2019/index.js +4 -1
  24. package/dist/es2019/ui/index.js +2 -1
  25. package/dist/es2019/ui/inline-create/index.js +30 -0
  26. package/dist/es2019/ui/inline-create/main.js +100 -0
  27. package/dist/es2019/ui/{main.js → modal-create/index.js} +8 -14
  28. package/dist/es2019/ui/{link-create → modal-create}/main.js +19 -19
  29. package/dist/esm/common/constants.js +7 -1
  30. package/dist/esm/{ui/link-create → common/ui}/confirm-dismiss-dialog/main.js +4 -6
  31. package/dist/esm/{ui/link-create → common/ui}/edit-modal/index.js +4 -8
  32. package/dist/esm/{ui/link-create → common/ui}/error-boundary/index.js +1 -1
  33. package/dist/esm/{controllers → common/ui}/experience-tracker/index.js +3 -3
  34. package/dist/esm/common/ui/link-create-content/index.js +12 -0
  35. package/dist/esm/{ui/link-create → common/ui}/modal-hero/index.js +1 -3
  36. package/dist/esm/controllers/callback-context/main.js +1 -1
  37. package/dist/esm/index.js +4 -1
  38. package/dist/esm/ui/index.js +2 -1
  39. package/dist/esm/ui/inline-create/index.js +30 -0
  40. package/dist/esm/ui/inline-create/main.js +119 -0
  41. package/dist/esm/ui/{main.js → modal-create/index.js} +8 -14
  42. package/dist/esm/ui/{link-create → modal-create}/main.js +38 -41
  43. package/dist/types/common/constants.d.ts +2 -0
  44. package/dist/types/common/ui/Button/index.d.ts +1 -1
  45. package/dist/types/common/ui/confirm-dismiss-dialog/main.d.ts +7 -0
  46. package/dist/types/common/ui/edit-modal/index.d.ts +11 -0
  47. package/dist/types/common/ui/link-create-content/index.d.ts +8 -0
  48. package/dist/types/ui/index.d.ts +2 -1
  49. package/dist/types/ui/inline-create/index.d.ts +5 -0
  50. package/dist/types/ui/inline-create/main.d.ts +5 -0
  51. package/dist/types/ui/modal-create/index.d.ts +5 -0
  52. package/dist/{types-ts4.5/ui/link-create → types/ui/modal-create}/main.d.ts +1 -1
  53. package/dist/types-ts4.5/common/constants.d.ts +2 -0
  54. package/dist/types-ts4.5/common/ui/Button/index.d.ts +1 -1
  55. package/dist/types-ts4.5/common/ui/confirm-dismiss-dialog/main.d.ts +7 -0
  56. package/dist/types-ts4.5/common/ui/edit-modal/index.d.ts +11 -0
  57. package/dist/types-ts4.5/common/ui/link-create-content/index.d.ts +8 -0
  58. package/dist/types-ts4.5/ui/index.d.ts +2 -1
  59. package/dist/types-ts4.5/ui/{main.d.ts → inline-create/index.d.ts} +1 -3
  60. package/dist/types-ts4.5/ui/inline-create/main.d.ts +5 -0
  61. package/dist/{types/ui/main.d.ts → types-ts4.5/ui/modal-create/index.d.ts} +1 -3
  62. package/dist/{types/ui/link-create → types-ts4.5/ui/modal-create}/main.d.ts +1 -1
  63. package/package.json +5 -7
  64. package/dist/cjs/ui/link-create/index.js +0 -13
  65. package/dist/es2019/ui/link-create/index.js +0 -1
  66. package/dist/esm/ui/link-create/index.js +0 -1
  67. package/dist/types/ui/link-create/confirm-dismiss-dialog/main.d.ts +0 -6
  68. package/dist/types/ui/link-create/edit-modal/index.d.ts +0 -8
  69. package/dist/types/ui/link-create/index.d.ts +0 -1
  70. package/dist/types-ts4.5/ui/link-create/confirm-dismiss-dialog/main.d.ts +0 -6
  71. package/dist/types-ts4.5/ui/link-create/edit-modal/index.d.ts +0 -8
  72. package/dist/types-ts4.5/ui/link-create/index.d.ts +0 -1
  73. /package/dist/cjs/{ui/link-create → common/ui}/confirm-dismiss-dialog/index.js +0 -0
  74. /package/dist/cjs/{ui/link-create → common/ui}/confirm-dismiss-dialog/messages.js +0 -0
  75. /package/dist/cjs/{ui/link-create → common/ui}/error-boundary/error-boundary-base/index.js +0 -0
  76. /package/dist/cjs/ui/{link-create → modal-create}/messages.js +0 -0
  77. /package/dist/es2019/{ui/link-create → common/ui}/confirm-dismiss-dialog/index.js +0 -0
  78. /package/dist/es2019/{ui/link-create → common/ui}/confirm-dismiss-dialog/messages.js +0 -0
  79. /package/dist/es2019/{ui/link-create → common/ui}/error-boundary/error-boundary-base/index.js +0 -0
  80. /package/dist/es2019/ui/{link-create → modal-create}/messages.js +0 -0
  81. /package/dist/esm/{ui/link-create → common/ui}/confirm-dismiss-dialog/index.js +0 -0
  82. /package/dist/esm/{ui/link-create → common/ui}/confirm-dismiss-dialog/messages.js +0 -0
  83. /package/dist/esm/{ui/link-create → common/ui}/error-boundary/error-boundary-base/index.js +0 -0
  84. /package/dist/esm/ui/{link-create → modal-create}/messages.js +0 -0
  85. /package/dist/types/{ui/link-create → common/ui}/confirm-dismiss-dialog/index.d.ts +0 -0
  86. /package/dist/types/{ui/link-create → common/ui}/confirm-dismiss-dialog/messages.d.ts +0 -0
  87. /package/dist/types/{ui/link-create → common/ui}/error-boundary/error-boundary-base/index.d.ts +0 -0
  88. /package/dist/types/{ui/link-create → common/ui}/error-boundary/index.d.ts +0 -0
  89. /package/dist/types/{controllers → common/ui}/experience-tracker/index.d.ts +0 -0
  90. /package/dist/types/{ui/link-create → common/ui}/modal-hero/index.d.ts +0 -0
  91. /package/dist/types/ui/{link-create → modal-create}/messages.d.ts +0 -0
  92. /package/dist/types-ts4.5/{ui/link-create → common/ui}/confirm-dismiss-dialog/index.d.ts +0 -0
  93. /package/dist/types-ts4.5/{ui/link-create → common/ui}/confirm-dismiss-dialog/messages.d.ts +0 -0
  94. /package/dist/types-ts4.5/{ui/link-create → common/ui}/error-boundary/error-boundary-base/index.d.ts +0 -0
  95. /package/dist/types-ts4.5/{ui/link-create → common/ui}/error-boundary/index.d.ts +0 -0
  96. /package/dist/types-ts4.5/{controllers → common/ui}/experience-tracker/index.d.ts +0 -0
  97. /package/dist/types-ts4.5/{ui/link-create → common/ui}/modal-hero/index.d.ts +0 -0
  98. /package/dist/types-ts4.5/ui/{link-create → modal-create}/messages.d.ts +0 -0
@@ -1,8 +1,6 @@
1
1
  import React, { Fragment } from 'react';
2
2
  import { Stack } from '@atlaskit/primitives';
3
-
4
- // eslint-disable-next-line @atlassian/tangerine/import/no-parent-imports
5
- import { ErrorBoundary } from '../error-boundary';
3
+ import { ErrorBoundary } from '../../../common/ui/error-boundary';
6
4
  const ErrorComponent = () => {
7
5
  // when there's an error, render nothing but report the issue
8
6
  return /*#__PURE__*/React.createElement(Fragment, null, null);
@@ -1,9 +1,9 @@
1
1
  import React, { useContext, useMemo } from 'react';
2
2
  import { useAnalyticsEvents } from '@atlaskit/analytics-next';
3
3
  import { ANALYTICS_CHANNEL } from '../../common/constants';
4
+ import { useExperience } from '../../common/ui/experience-tracker';
4
5
  import createEventPayload from '../../common/utils/analytics/analytics.codegen';
5
6
  import { getErrorType } from '../../common/utils/errors';
6
- import { useExperience } from '../experience-tracker';
7
7
  const LinkCreateCallbackContext = /*#__PURE__*/React.createContext({});
8
8
  const LinkCreateCallbackProvider = ({
9
9
  children,
@@ -1,3 +1,6 @@
1
- export { default, TextField, CreateForm, Select, AsyncSelect, CreateFormLoader, FormSpy } from './ui/index';
1
+ export { default, TextField, CreateForm, Select, AsyncSelect, CreateFormLoader, FormSpy
2
+ // todo: EDM-10077 - export this once inline-create is tested/ready
3
+ //InlineCreate,
4
+ } from './ui/index';
2
5
  export { useLinkCreateCallback, LinkCreateCallbackProvider } from './controllers/callback-context';
3
6
  export { FORM_ERROR } from 'final-form';
@@ -1,4 +1,5 @@
1
- export { default } from './main';
1
+ export { default } from './modal-create';
2
+ export { default as InlineCreate } from './inline-create';
2
3
  export { TextField } from './create-form/textfield';
3
4
  export { CreateForm } from './create-form/main';
4
5
  export { CreateFormLoader } from './create-form/form-loader';
@@ -0,0 +1,30 @@
1
+ /** @jsx jsx */
2
+ import { memo } from 'react';
3
+ import { jsx } from '@emotion/react';
4
+ import { AnalyticsContext } from '@atlaskit/analytics-next';
5
+ import { IntlMessagesProvider } from '@atlaskit/intl-messages-provider';
6
+ import { PACKAGE_DATA } from '../../common/constants';
7
+ import { ErrorBoundary } from '../../common/ui/error-boundary';
8
+ import { ErrorBoundaryModal } from '../../common/ui/error-boundary-modal';
9
+ import { Experience } from '../../common/ui/experience-tracker';
10
+ import { withLinkCreateAnalyticsContext } from '../../common/utils/analytics';
11
+ import { fetchMessagesForLocale } from '../../common/utils/locale/fetch-messages-for-locale';
12
+ import i18nEN from '../../i18n/en';
13
+ import InlineCreate from './main';
14
+ const LinkCreateWithAnalyticsContext = withLinkCreateAnalyticsContext( /*#__PURE__*/memo(props => {
15
+ return jsx(Experience, null, jsx(ErrorBoundary, {
16
+ errorComponent: jsx(ErrorBoundaryModal, {
17
+ active: props.active,
18
+ onClose: props.onCancel
19
+ })
20
+ }, jsx(InlineCreate, props)));
21
+ }));
22
+ const ComposedLinkCreate = /*#__PURE__*/memo(props => {
23
+ return jsx(AnalyticsContext, {
24
+ data: PACKAGE_DATA
25
+ }, jsx(IntlMessagesProvider, {
26
+ defaultMessages: i18nEN,
27
+ loaderFn: fetchMessagesForLocale
28
+ }, jsx(LinkCreateWithAnalyticsContext, props)));
29
+ });
30
+ export default ComposedLinkCreate;
@@ -0,0 +1,100 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ /** @jsx jsx */
3
+ import { useCallback, useState } from 'react';
4
+ import { jsx } from '@emotion/react';
5
+ import { Box } from '@atlaskit/primitives';
6
+ import { ConfirmDismissDialog } from '../../common/ui/confirm-dismiss-dialog';
7
+ import { EditModal } from '../../common/ui/edit-modal';
8
+ import { ErrorBoundary } from '../../common/ui/error-boundary';
9
+ import { LinkCreateContent } from '../../common/ui/link-create-content';
10
+ import { LinkCreateCallbackProvider
11
+ // useLinkCreateCallback,
12
+ } from '../../controllers/callback-context';
13
+ import { EditPostCreateModalProvider, useEditPostCreateModal } from '../../controllers/edit-post-create-context';
14
+ import { ExitWarningModalProvider, useExitWarningModal } from '../../controllers/exit-warning-modal-context';
15
+ import { FormContextProvider } from '../../controllers/form-context';
16
+ import { LinkCreatePluginsProvider, useLinkCreatePlugins } from '../../controllers/plugin-context';
17
+ export const TEST_ID = 'link-create';
18
+ // todo: EDM-10075 trigger the screen.viewed_linkCreateScreen event when inline-create is mounted
19
+ // const SCREEN_ID = 'linkCreateScreen';
20
+
21
+ const InlineCreateContent = ({
22
+ onCreate,
23
+ onFailure,
24
+ onCancel,
25
+ onComplete,
26
+ plugins,
27
+ entityKey,
28
+ testId
29
+ }) => {
30
+ const {
31
+ getShouldShowWarning
32
+ } = useExitWarningModal();
33
+ const [showExitWarning, setShowExitWarning] = useState(false);
34
+ const {
35
+ editViewPayload
36
+ } = useEditPostCreateModal();
37
+ const {
38
+ activePlugin
39
+ } = useLinkCreatePlugins();
40
+ const handleCancel = useCallback(() => {
41
+ if (getShouldShowWarning() && !showExitWarning) {
42
+ setShowExitWarning(true);
43
+ return;
44
+ }
45
+ onCancel === null || onCancel === void 0 ? void 0 : onCancel();
46
+ }, [onCancel, getShouldShowWarning, showExitWarning]);
47
+ const handleCloseExitWarning = useCallback(() => setShowExitWarning(false), []);
48
+ return jsx(LinkCreateCallbackProvider, {
49
+ onCreate: onCreate,
50
+ onFailure: onFailure,
51
+ onCancel: handleCancel
52
+ }, jsx(ErrorBoundary, null, jsx(Box, {
53
+ testId: testId
54
+ }, jsx(LinkCreateContent, {
55
+ plugins: plugins,
56
+ entityKey: entityKey
57
+ }))), onComplete && jsx(EditModal, {
58
+ onClose: onComplete,
59
+ editViewPayload: editViewPayload,
60
+ activePlugin: activePlugin
61
+ }), jsx(ConfirmDismissDialog, {
62
+ active: showExitWarning,
63
+ onClose: handleCloseExitWarning,
64
+ onCancel: onCancel
65
+ }));
66
+ };
67
+ const InlineCreate = props => {
68
+ return jsx(LinkCreatePluginsProvider, {
69
+ plugins: props.plugins,
70
+ entityKey: props.entityKey
71
+ }, pluginsProvider => jsx(EditPostCreateModalProvider, {
72
+ active: true
73
+ }, ({
74
+ setEditViewPayload,
75
+ shouldActivateEditView,
76
+ enableEditView
77
+ }) => {
78
+ var _pluginsProvider$acti;
79
+ return jsx(FormContextProvider, {
80
+ enableEditView: pluginsProvider !== null && pluginsProvider !== void 0 && (_pluginsProvider$acti = pluginsProvider.activePlugin) !== null && _pluginsProvider$acti !== void 0 && _pluginsProvider$acti.editView && props !== null && props !== void 0 && props.onComplete ? enableEditView : undefined
81
+ }, jsx(ExitWarningModalProvider, null, jsx(InlineCreateContent, _extends({}, props, {
82
+ onCreate: async payload => {
83
+ var _props$onCreate;
84
+ await ((_props$onCreate = props.onCreate) === null || _props$onCreate === void 0 ? void 0 : _props$onCreate.call(props, payload));
85
+
86
+ // if onComplete exists then there is an edit flow
87
+ if (props.onComplete) {
88
+ if (shouldActivateEditView()) {
89
+ //edit button is pressed
90
+ setEditViewPayload(payload);
91
+ } else {
92
+ //create button is pressed
93
+ props.onComplete();
94
+ }
95
+ }
96
+ }
97
+ }))));
98
+ }));
99
+ };
100
+ export default InlineCreate;
@@ -3,14 +3,14 @@ import { memo } from 'react';
3
3
  import { jsx } from '@emotion/react';
4
4
  import { AnalyticsContext } from '@atlaskit/analytics-next';
5
5
  import { IntlMessagesProvider } from '@atlaskit/intl-messages-provider';
6
- import { COMPONENT_NAME } from '../common/constants';
7
- import { ErrorBoundaryModal } from '../common/ui/error-boundary-modal';
8
- import { withLinkCreateAnalyticsContext } from '../common/utils/analytics';
9
- import { fetchMessagesForLocale } from '../common/utils/locale/fetch-messages-for-locale';
10
- import { Experience } from '../controllers/experience-tracker';
11
- import i18nEN from '../i18n/en';
12
- import LinkCreate from './link-create';
13
- import { ErrorBoundary } from './link-create/error-boundary';
6
+ import { PACKAGE_DATA } from '../../common/constants';
7
+ import { ErrorBoundary } from '../../common/ui/error-boundary';
8
+ import { ErrorBoundaryModal } from '../../common/ui/error-boundary-modal';
9
+ import { Experience } from '../../common/ui/experience-tracker';
10
+ import { withLinkCreateAnalyticsContext } from '../../common/utils/analytics';
11
+ import { fetchMessagesForLocale } from '../../common/utils/locale/fetch-messages-for-locale';
12
+ import i18nEN from '../../i18n/en';
13
+ import LinkCreate from './main';
14
14
  const LinkCreateWithAnalyticsContext = withLinkCreateAnalyticsContext( /*#__PURE__*/memo(props => {
15
15
  return jsx(Experience, null, jsx(ErrorBoundary, {
16
16
  errorComponent: jsx(ErrorBoundaryModal, {
@@ -19,12 +19,6 @@ const LinkCreateWithAnalyticsContext = withLinkCreateAnalyticsContext( /*#__PURE
19
19
  })
20
20
  }, jsx(LinkCreate, props)));
21
21
  }));
22
- export const PACKAGE_DATA = {
23
- packageName: "@atlaskit/link-create" || '',
24
- packageVersion: "2.0.0" || '',
25
- component: COMPONENT_NAME,
26
- componentName: COMPONENT_NAME
27
- };
28
22
  const ComposedLinkCreate = /*#__PURE__*/memo(props => {
29
23
  return jsx(AnalyticsContext, {
30
24
  data: PACKAGE_DATA
@@ -1,34 +1,25 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  /** @jsx jsx */
3
- import { Fragment, useCallback, useLayoutEffect, useRef, useState } from 'react';
3
+ import { useCallback, useLayoutEffect, useRef, useState } from 'react';
4
4
  import { jsx } from '@emotion/react';
5
5
  import { useIntl } from 'react-intl-next';
6
6
  import { ModalBody, ModalHeader, ModalTitle, ModalTransition } from '@atlaskit/modal-dialog';
7
7
  import { Box } from '@atlaskit/primitives';
8
8
  import { CREATE_FORM_MAX_WIDTH_IN_PX } from '../../common/constants';
9
+ import { ConfirmDismissDialog } from '../../common/ui/confirm-dismiss-dialog';
10
+ import { EditModal } from '../../common/ui/edit-modal';
11
+ import { ErrorBoundary } from '../../common/ui/error-boundary';
12
+ import { LinkCreateContent } from '../../common/ui/link-create-content';
13
+ import { ModalHero } from '../../common/ui/modal-hero';
9
14
  import { Modal } from '../../common/ui/ModalDialog';
10
15
  import { LinkCreateCallbackProvider } from '../../controllers/callback-context';
11
- import { EditPostCreateModalProvider } from '../../controllers/edit-post-create-context';
16
+ import { EditPostCreateModalProvider, useEditPostCreateModal } from '../../controllers/edit-post-create-context';
12
17
  import { ExitWarningModalProvider, useExitWarningModal } from '../../controllers/exit-warning-modal-context';
13
18
  import { FormContextProvider } from '../../controllers/form-context';
14
- import { LinkCreatePluginsProvider } from '../../controllers/plugin-context';
15
- import { ConfirmDismissDialog } from './confirm-dismiss-dialog';
16
- import { EditModal } from './edit-modal';
17
- import { ErrorBoundary } from './error-boundary';
19
+ import { LinkCreatePluginsProvider, useLinkCreatePlugins } from '../../controllers/plugin-context';
18
20
  import { messages } from './messages';
19
- import { ModalHero } from './modal-hero';
20
21
  export const TEST_ID = 'link-create';
21
22
  const SCREEN_ID = 'linkCreateScreen';
22
- const LinkCreateContent = ({
23
- plugins,
24
- entityKey
25
- }) => {
26
- const chosenOne = plugins.find(plugin => plugin.key === entityKey);
27
- if (!chosenOne) {
28
- throw new Error('Make sure you specified a valid entityKey');
29
- }
30
- return jsx(Fragment, null, chosenOne.form);
31
- };
32
23
  const LinkCreateWithModal = ({
33
24
  active,
34
25
  modalTitle,
@@ -48,6 +39,12 @@ const LinkCreateWithModal = ({
48
39
  getShouldShowWarning
49
40
  } = useExitWarningModal();
50
41
  const [showExitWarning, setShowExitWarning] = useState(false);
42
+ const {
43
+ editViewPayload
44
+ } = useEditPostCreateModal();
45
+ const {
46
+ activePlugin
47
+ } = useLinkCreatePlugins();
51
48
  const handleCancel = useCallback(() => {
52
49
  if (getShouldShowWarning() && !showExitWarning) {
53
50
  setShowExitWarning(true);
@@ -77,10 +74,13 @@ const LinkCreateWithModal = ({
77
74
  entityKey: entityKey
78
75
  })))))), onComplete && jsx(EditModal, {
79
76
  onCloseComplete: onCloseComplete,
80
- onClose: onComplete
77
+ onClose: onComplete,
78
+ editViewPayload: editViewPayload,
79
+ activePlugin: activePlugin
81
80
  }), jsx(ConfirmDismissDialog, {
82
81
  active: showExitWarning,
83
- onClose: handleCloseExitWarning
82
+ onClose: handleCloseExitWarning,
83
+ onCancel: onCancel
84
84
  }));
85
85
  };
86
86
  const LinkCreateModal = props => {
@@ -2,4 +2,10 @@ export var ANALYTICS_CHANNEL = 'media';
2
2
  export var COMPONENT_NAME = 'linkCreate';
3
3
  export var CREATE_FORM_MAX_WIDTH_IN_PX = '480';
4
4
  export var CREATE_FORM_MIN_HEIGHT_IN_PX = '200';
5
- export var LINK_CREATE_FORM_POST_CREATE_FIELD = '__post_create__';
5
+ export var LINK_CREATE_FORM_POST_CREATE_FIELD = '__post_create__';
6
+ export var PACKAGE_DATA = {
7
+ packageName: "@atlaskit/link-create" || '',
8
+ packageVersion: "2.1.0" || '',
9
+ component: COMPONENT_NAME,
10
+ componentName: COMPONENT_NAME
11
+ };
@@ -2,9 +2,8 @@ import React from 'react';
2
2
  import { useIntl } from 'react-intl-next';
3
3
  import { AnalyticsContext } from '@atlaskit/analytics-next';
4
4
  import { ModalBody, ModalFooter, ModalHeader, ModalTitle, ModalTransition } from '@atlaskit/modal-dialog';
5
- import { Button } from '../../../common/ui/Button';
6
- import { Modal } from '../../../common/ui/ModalDialog';
7
- import { useLinkCreateCallback } from '../../../controllers/callback-context';
5
+ import { Button } from '../Button';
6
+ import { Modal } from '../ModalDialog';
8
7
  import messages from './messages';
9
8
  var screen = 'linkCreateExitWarningScreen';
10
9
  var context = {
@@ -13,10 +12,9 @@ var context = {
13
12
  };
14
13
  export var ConfirmDismissDialog = function ConfirmDismissDialog(_ref) {
15
14
  var active = _ref.active,
16
- onClose = _ref.onClose;
15
+ onClose = _ref.onClose,
16
+ onCancel = _ref.onCancel;
17
17
  var intl = useIntl();
18
- var _useLinkCreateCallbac = useLinkCreateCallback(),
19
- onCancel = _useLinkCreateCallbac.onCancel;
20
18
  var onCancelDismiss = function onCancelDismiss() {
21
19
  return onClose();
22
20
  };
@@ -1,17 +1,13 @@
1
1
  import React from 'react';
2
2
  import { ModalTransition } from '@atlaskit/modal-dialog';
3
- import { Modal } from '../../../common/ui/ModalDialog';
4
- import { useEditPostCreateModal } from '../../../controllers/edit-post-create-context';
5
- import { useLinkCreatePlugins } from '../../../controllers/plugin-context';
3
+ import { Modal } from '../ModalDialog';
6
4
  var SCREEN = 'linkCreateEditScreen';
7
5
  export var EditModal = function EditModal(_ref) {
8
6
  var _activePlugin$editVie;
9
7
  var onClose = _ref.onClose,
10
- onCloseComplete = _ref.onCloseComplete;
11
- var _useEditPostCreateMod = useEditPostCreateModal(),
12
- editViewPayload = _useEditPostCreateMod.editViewPayload;
13
- var _useLinkCreatePlugins = useLinkCreatePlugins(),
14
- activePlugin = _useLinkCreatePlugins.activePlugin;
8
+ onCloseComplete = _ref.onCloseComplete,
9
+ editViewPayload = _ref.editViewPayload,
10
+ activePlugin = _ref.activePlugin;
15
11
  return /*#__PURE__*/React.createElement(ModalTransition, null, !!editViewPayload && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Modal, {
16
12
  testId: "link-create-edit-modal",
17
13
  screen: SCREEN,
@@ -3,7 +3,7 @@ import { useAnalyticsEvents } from '@atlaskit/analytics-next';
3
3
  import { ANALYTICS_CHANNEL } from '../../../common/constants';
4
4
  import { ErrorBoundaryUI } from '../../../common/ui/error-boundary-ui';
5
5
  import createEventPayload from '../../../common/utils/analytics/analytics.codegen';
6
- import { useExperience } from '../../../controllers/experience-tracker';
6
+ import { useExperience } from '../experience-tracker';
7
7
  import { BaseErrorBoundary } from './error-boundary-base';
8
8
  export var ErrorBoundary = function ErrorBoundary(_ref) {
9
9
  var children = _ref.children,
@@ -4,9 +4,9 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
4
4
  import React, { createContext, useContext, useMemo, useRef } from 'react';
5
5
  import { useAnalyticsEvents } from '@atlaskit/analytics-next';
6
6
  import { captureException } from '@atlaskit/linking-common/sentry';
7
- import { ANALYTICS_CHANNEL } from '../../common/constants';
8
- import createEventPayload from '../../common/utils/analytics/analytics.codegen';
9
- import { getErrorType, getNetworkFields } from '../../common/utils/errors';
7
+ import { ANALYTICS_CHANNEL } from '../../constants';
8
+ import createEventPayload from '../../utils/analytics/analytics.codegen';
9
+ import { getErrorType, getNetworkFields } from '../../utils/errors';
10
10
  var ExperienceContext = /*#__PURE__*/createContext({
11
11
  success: function success() {},
12
12
  failure: function failure() {}
@@ -0,0 +1,12 @@
1
+ import React, { Fragment } from 'react';
2
+ export var LinkCreateContent = function LinkCreateContent(_ref) {
3
+ var plugins = _ref.plugins,
4
+ entityKey = _ref.entityKey;
5
+ var chosenOne = plugins.find(function (plugin) {
6
+ return plugin.key === entityKey;
7
+ });
8
+ if (!chosenOne) {
9
+ throw new Error('Make sure you specified a valid entityKey');
10
+ }
11
+ return /*#__PURE__*/React.createElement(Fragment, null, chosenOne.form);
12
+ };
@@ -1,8 +1,6 @@
1
1
  import React, { Fragment } from 'react';
2
2
  import { Stack } from '@atlaskit/primitives';
3
-
4
- // eslint-disable-next-line @atlassian/tangerine/import/no-parent-imports
5
- import { ErrorBoundary } from '../error-boundary';
3
+ import { ErrorBoundary } from '../../../common/ui/error-boundary';
6
4
  var ErrorComponent = function ErrorComponent() {
7
5
  // when there's an error, render nothing but report the issue
8
6
  return /*#__PURE__*/React.createElement(Fragment, null, null);
@@ -6,9 +6,9 @@ import _regeneratorRuntime from "@babel/runtime/regenerator";
6
6
  import React, { useContext, useMemo } from 'react';
7
7
  import { useAnalyticsEvents } from '@atlaskit/analytics-next';
8
8
  import { ANALYTICS_CHANNEL } from '../../common/constants';
9
+ import { useExperience } from '../../common/ui/experience-tracker';
9
10
  import createEventPayload from '../../common/utils/analytics/analytics.codegen';
10
11
  import { getErrorType } from '../../common/utils/errors';
11
- import { useExperience } from '../experience-tracker';
12
12
  var LinkCreateCallbackContext = /*#__PURE__*/React.createContext({});
13
13
  var LinkCreateCallbackProvider = function LinkCreateCallbackProvider(_ref) {
14
14
  var children = _ref.children,
package/dist/esm/index.js CHANGED
@@ -1,3 +1,6 @@
1
- export { default, TextField, CreateForm, Select, AsyncSelect, CreateFormLoader, FormSpy } from './ui/index';
1
+ export { default, TextField, CreateForm, Select, AsyncSelect, CreateFormLoader, FormSpy
2
+ // todo: EDM-10077 - export this once inline-create is tested/ready
3
+ //InlineCreate,
4
+ } from './ui/index';
2
5
  export { useLinkCreateCallback, LinkCreateCallbackProvider } from './controllers/callback-context';
3
6
  export { FORM_ERROR } from 'final-form';
@@ -1,4 +1,5 @@
1
- export { default } from './main';
1
+ export { default } from './modal-create';
2
+ export { default as InlineCreate } from './inline-create';
2
3
  export { TextField } from './create-form/textfield';
3
4
  export { CreateForm } from './create-form/main';
4
5
  export { CreateFormLoader } from './create-form/form-loader';
@@ -0,0 +1,30 @@
1
+ /** @jsx jsx */
2
+ import { memo } from 'react';
3
+ import { jsx } from '@emotion/react';
4
+ import { AnalyticsContext } from '@atlaskit/analytics-next';
5
+ import { IntlMessagesProvider } from '@atlaskit/intl-messages-provider';
6
+ import { PACKAGE_DATA } from '../../common/constants';
7
+ import { ErrorBoundary } from '../../common/ui/error-boundary';
8
+ import { ErrorBoundaryModal } from '../../common/ui/error-boundary-modal';
9
+ import { Experience } from '../../common/ui/experience-tracker';
10
+ import { withLinkCreateAnalyticsContext } from '../../common/utils/analytics';
11
+ import { fetchMessagesForLocale } from '../../common/utils/locale/fetch-messages-for-locale';
12
+ import i18nEN from '../../i18n/en';
13
+ import InlineCreate from './main';
14
+ var LinkCreateWithAnalyticsContext = withLinkCreateAnalyticsContext( /*#__PURE__*/memo(function (props) {
15
+ return jsx(Experience, null, jsx(ErrorBoundary, {
16
+ errorComponent: jsx(ErrorBoundaryModal, {
17
+ active: props.active,
18
+ onClose: props.onCancel
19
+ })
20
+ }, jsx(InlineCreate, props)));
21
+ }));
22
+ var ComposedLinkCreate = /*#__PURE__*/memo(function (props) {
23
+ return jsx(AnalyticsContext, {
24
+ data: PACKAGE_DATA
25
+ }, jsx(IntlMessagesProvider, {
26
+ defaultMessages: i18nEN,
27
+ loaderFn: fetchMessagesForLocale
28
+ }, jsx(LinkCreateWithAnalyticsContext, props)));
29
+ });
30
+ export default ComposedLinkCreate;
@@ -0,0 +1,119 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
3
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
5
+ /** @jsx jsx */
6
+ import { useCallback, useState } from 'react';
7
+ import { jsx } from '@emotion/react';
8
+ import { Box } from '@atlaskit/primitives';
9
+ import { ConfirmDismissDialog } from '../../common/ui/confirm-dismiss-dialog';
10
+ import { EditModal } from '../../common/ui/edit-modal';
11
+ import { ErrorBoundary } from '../../common/ui/error-boundary';
12
+ import { LinkCreateContent } from '../../common/ui/link-create-content';
13
+ import { LinkCreateCallbackProvider
14
+ // useLinkCreateCallback,
15
+ } from '../../controllers/callback-context';
16
+ import { EditPostCreateModalProvider, useEditPostCreateModal } from '../../controllers/edit-post-create-context';
17
+ import { ExitWarningModalProvider, useExitWarningModal } from '../../controllers/exit-warning-modal-context';
18
+ import { FormContextProvider } from '../../controllers/form-context';
19
+ import { LinkCreatePluginsProvider, useLinkCreatePlugins } from '../../controllers/plugin-context';
20
+ export var TEST_ID = 'link-create';
21
+ // todo: EDM-10075 trigger the screen.viewed_linkCreateScreen event when inline-create is mounted
22
+ // const SCREEN_ID = 'linkCreateScreen';
23
+
24
+ var InlineCreateContent = function InlineCreateContent(_ref) {
25
+ var onCreate = _ref.onCreate,
26
+ onFailure = _ref.onFailure,
27
+ onCancel = _ref.onCancel,
28
+ onComplete = _ref.onComplete,
29
+ plugins = _ref.plugins,
30
+ entityKey = _ref.entityKey,
31
+ testId = _ref.testId;
32
+ var _useExitWarningModal = useExitWarningModal(),
33
+ getShouldShowWarning = _useExitWarningModal.getShouldShowWarning;
34
+ var _useState = useState(false),
35
+ _useState2 = _slicedToArray(_useState, 2),
36
+ showExitWarning = _useState2[0],
37
+ setShowExitWarning = _useState2[1];
38
+ var _useEditPostCreateMod = useEditPostCreateModal(),
39
+ editViewPayload = _useEditPostCreateMod.editViewPayload;
40
+ var _useLinkCreatePlugins = useLinkCreatePlugins(),
41
+ activePlugin = _useLinkCreatePlugins.activePlugin;
42
+ var handleCancel = useCallback(function () {
43
+ if (getShouldShowWarning() && !showExitWarning) {
44
+ setShowExitWarning(true);
45
+ return;
46
+ }
47
+ onCancel === null || onCancel === void 0 || onCancel();
48
+ }, [onCancel, getShouldShowWarning, showExitWarning]);
49
+ var handleCloseExitWarning = useCallback(function () {
50
+ return setShowExitWarning(false);
51
+ }, []);
52
+ return jsx(LinkCreateCallbackProvider, {
53
+ onCreate: onCreate,
54
+ onFailure: onFailure,
55
+ onCancel: handleCancel
56
+ }, jsx(ErrorBoundary, null, jsx(Box, {
57
+ testId: testId
58
+ }, jsx(LinkCreateContent, {
59
+ plugins: plugins,
60
+ entityKey: entityKey
61
+ }))), onComplete && jsx(EditModal, {
62
+ onClose: onComplete,
63
+ editViewPayload: editViewPayload,
64
+ activePlugin: activePlugin
65
+ }), jsx(ConfirmDismissDialog, {
66
+ active: showExitWarning,
67
+ onClose: handleCloseExitWarning,
68
+ onCancel: onCancel
69
+ }));
70
+ };
71
+ var InlineCreate = function InlineCreate(props) {
72
+ return jsx(LinkCreatePluginsProvider, {
73
+ plugins: props.plugins,
74
+ entityKey: props.entityKey
75
+ }, function (pluginsProvider) {
76
+ return jsx(EditPostCreateModalProvider, {
77
+ active: true
78
+ }, function (_ref2) {
79
+ var _pluginsProvider$acti;
80
+ var setEditViewPayload = _ref2.setEditViewPayload,
81
+ shouldActivateEditView = _ref2.shouldActivateEditView,
82
+ enableEditView = _ref2.enableEditView;
83
+ return jsx(FormContextProvider, {
84
+ enableEditView: pluginsProvider !== null && pluginsProvider !== void 0 && (_pluginsProvider$acti = pluginsProvider.activePlugin) !== null && _pluginsProvider$acti !== void 0 && _pluginsProvider$acti.editView && props !== null && props !== void 0 && props.onComplete ? enableEditView : undefined
85
+ }, jsx(ExitWarningModalProvider, null, jsx(InlineCreateContent, _extends({}, props, {
86
+ onCreate: ( /*#__PURE__*/function () {
87
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(payload) {
88
+ var _props$onCreate;
89
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
90
+ while (1) switch (_context.prev = _context.next) {
91
+ case 0:
92
+ _context.next = 2;
93
+ return (_props$onCreate = props.onCreate) === null || _props$onCreate === void 0 ? void 0 : _props$onCreate.call(props, payload);
94
+ case 2:
95
+ // if onComplete exists then there is an edit flow
96
+ if (props.onComplete) {
97
+ if (shouldActivateEditView()) {
98
+ //edit button is pressed
99
+ setEditViewPayload(payload);
100
+ } else {
101
+ //create button is pressed
102
+ props.onComplete();
103
+ }
104
+ }
105
+ case 3:
106
+ case "end":
107
+ return _context.stop();
108
+ }
109
+ }, _callee);
110
+ }));
111
+ return function (_x) {
112
+ return _ref3.apply(this, arguments);
113
+ };
114
+ }())
115
+ }))));
116
+ });
117
+ });
118
+ };
119
+ export default InlineCreate;
@@ -3,14 +3,14 @@ import { memo } from 'react';
3
3
  import { jsx } from '@emotion/react';
4
4
  import { AnalyticsContext } from '@atlaskit/analytics-next';
5
5
  import { IntlMessagesProvider } from '@atlaskit/intl-messages-provider';
6
- import { COMPONENT_NAME } from '../common/constants';
7
- import { ErrorBoundaryModal } from '../common/ui/error-boundary-modal';
8
- import { withLinkCreateAnalyticsContext } from '../common/utils/analytics';
9
- import { fetchMessagesForLocale } from '../common/utils/locale/fetch-messages-for-locale';
10
- import { Experience } from '../controllers/experience-tracker';
11
- import i18nEN from '../i18n/en';
12
- import LinkCreate from './link-create';
13
- import { ErrorBoundary } from './link-create/error-boundary';
6
+ import { PACKAGE_DATA } from '../../common/constants';
7
+ import { ErrorBoundary } from '../../common/ui/error-boundary';
8
+ import { ErrorBoundaryModal } from '../../common/ui/error-boundary-modal';
9
+ import { Experience } from '../../common/ui/experience-tracker';
10
+ import { withLinkCreateAnalyticsContext } from '../../common/utils/analytics';
11
+ import { fetchMessagesForLocale } from '../../common/utils/locale/fetch-messages-for-locale';
12
+ import i18nEN from '../../i18n/en';
13
+ import LinkCreate from './main';
14
14
  var LinkCreateWithAnalyticsContext = withLinkCreateAnalyticsContext( /*#__PURE__*/memo(function (props) {
15
15
  return jsx(Experience, null, jsx(ErrorBoundary, {
16
16
  errorComponent: jsx(ErrorBoundaryModal, {
@@ -19,12 +19,6 @@ var LinkCreateWithAnalyticsContext = withLinkCreateAnalyticsContext( /*#__PURE__
19
19
  })
20
20
  }, jsx(LinkCreate, props)));
21
21
  }));
22
- export var PACKAGE_DATA = {
23
- packageName: "@atlaskit/link-create" || '',
24
- packageVersion: "2.0.0" || '',
25
- component: COMPONENT_NAME,
26
- componentName: COMPONENT_NAME
27
- };
28
22
  var ComposedLinkCreate = /*#__PURE__*/memo(function (props) {
29
23
  return jsx(AnalyticsContext, {
30
24
  data: PACKAGE_DATA