@atlaskit/link-create 1.3.0 → 1.5.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.
- package/CHANGELOG.md +12 -0
- package/dist/cjs/controllers/callback-context/main.js +16 -5
- package/dist/cjs/controllers/edit-post-create-context/index.js +43 -0
- package/dist/cjs/controllers/form-context/main.js +15 -2
- package/dist/cjs/controllers/plugin-context/index.js +39 -0
- package/dist/cjs/ui/create-form/main.js +11 -2
- package/dist/cjs/ui/link-create/confirm-dismiss-dialog/index.js +12 -0
- package/dist/cjs/ui/link-create/confirm-dismiss-dialog/main.js +32 -0
- package/dist/cjs/ui/link-create/confirm-dismiss-dialog/messages.js +29 -0
- package/dist/cjs/ui/link-create/edit-modal/index.js +25 -0
- package/dist/cjs/ui/link-create/main.js +57 -9
- package/dist/cjs/ui/main.js +1 -1
- package/dist/es2019/controllers/callback-context/main.js +11 -5
- package/dist/es2019/controllers/edit-post-create-context/index.js +28 -0
- package/dist/es2019/controllers/form-context/main.js +14 -3
- package/dist/es2019/controllers/plugin-context/index.js +25 -0
- package/dist/es2019/ui/create-form/main.js +10 -3
- package/dist/es2019/ui/link-create/confirm-dismiss-dialog/index.js +1 -0
- package/dist/es2019/ui/link-create/confirm-dismiss-dialog/main.js +23 -0
- package/dist/es2019/ui/link-create/confirm-dismiss-dialog/messages.js +23 -0
- package/dist/es2019/ui/link-create/edit-modal/index.js +17 -0
- package/dist/es2019/ui/link-create/main.js +54 -9
- package/dist/es2019/ui/main.js +1 -1
- package/dist/esm/controllers/callback-context/main.js +16 -5
- package/dist/esm/controllers/edit-post-create-context/index.js +33 -0
- package/dist/esm/controllers/form-context/main.js +16 -3
- package/dist/esm/controllers/plugin-context/index.js +29 -0
- package/dist/esm/ui/create-form/main.js +12 -3
- package/dist/esm/ui/link-create/confirm-dismiss-dialog/index.js +1 -0
- package/dist/esm/ui/link-create/confirm-dismiss-dialog/main.js +22 -0
- package/dist/esm/ui/link-create/confirm-dismiss-dialog/messages.js +23 -0
- package/dist/esm/ui/link-create/edit-modal/index.js +15 -0
- package/dist/esm/ui/link-create/main.js +58 -10
- package/dist/esm/ui/main.js +1 -1
- package/dist/types/controllers/edit-post-create-context/index.d.ts +12 -0
- package/dist/types/controllers/form-context/main.d.ts +3 -0
- package/dist/types/controllers/plugin-context/index.d.ts +18 -0
- package/dist/types/ui/link-create/confirm-dismiss-dialog/index.d.ts +2 -0
- package/dist/types/ui/link-create/confirm-dismiss-dialog/main.d.ts +7 -0
- package/dist/types/ui/link-create/confirm-dismiss-dialog/messages.d.ts +23 -0
- package/dist/types/ui/link-create/edit-modal/index.d.ts +4 -0
- package/dist/types/ui/link-create/main.d.ts +3 -3
- package/dist/types-ts4.5/controllers/edit-post-create-context/index.d.ts +12 -0
- package/dist/types-ts4.5/controllers/form-context/main.d.ts +3 -0
- package/dist/types-ts4.5/controllers/plugin-context/index.d.ts +18 -0
- package/dist/types-ts4.5/ui/link-create/confirm-dismiss-dialog/index.d.ts +2 -0
- package/dist/types-ts4.5/ui/link-create/confirm-dismiss-dialog/main.d.ts +7 -0
- package/dist/types-ts4.5/ui/link-create/confirm-dismiss-dialog/messages.d.ts +23 -0
- package/dist/types-ts4.5/ui/link-create/edit-modal/index.d.ts +4 -0
- package/dist/types-ts4.5/ui/link-create/main.d.ts +3 -3
- package/package.json +6 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @atlaskit/link-create
|
|
2
2
|
|
|
3
|
+
## 1.5.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#42436](https://bitbucket.org/atlassian/atlassian-frontend/pull-requests/42436) [`08c8e861177`](https://bitbucket.org/atlassian/atlassian-frontend/commits/08c8e861177) - EDM-8371: internal refactor under feature flag platform.linking-platform.link-create.enable-edit
|
|
8
|
+
|
|
9
|
+
## 1.4.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- [#42119](https://bitbucket.org/atlassian/atlassian-frontend/pull-requests/42119) [`fbb3d5ea801`](https://bitbucket.org/atlassian/atlassian-frontend/commits/fbb3d5ea801) - Displays a confirm dismiss dialog when user clicks cancel and made changes to form
|
|
14
|
+
|
|
3
15
|
## 1.3.0
|
|
4
16
|
|
|
5
17
|
### Minor Changes
|
|
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.useLinkCreateCallback = exports.LinkCreateCallbackProvider = 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 _react = _interopRequireWildcard(require("react"));
|
|
12
13
|
var _analyticsNext = require("@atlaskit/analytics-next");
|
|
@@ -14,6 +15,8 @@ var _constants = require("../../common/constants");
|
|
|
14
15
|
var _analytics = _interopRequireDefault(require("../../common/utils/analytics/analytics.codegen"));
|
|
15
16
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
16
17
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
18
|
+
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; }
|
|
19
|
+
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; }
|
|
17
20
|
var LinkCreateCallbackContext = /*#__PURE__*/_react.default.createContext({});
|
|
18
21
|
var LinkCreateCallbackProvider = exports.LinkCreateCallbackProvider = function LinkCreateCallbackProvider(_ref) {
|
|
19
22
|
var children = _ref.children,
|
|
@@ -22,7 +25,7 @@ var LinkCreateCallbackProvider = exports.LinkCreateCallbackProvider = function L
|
|
|
22
25
|
onCancel = _ref.onCancel;
|
|
23
26
|
var _useAnalyticsEvents = (0, _analyticsNext.useAnalyticsEvents)(),
|
|
24
27
|
createAnalyticsEvent = _useAnalyticsEvents.createAnalyticsEvent;
|
|
25
|
-
var
|
|
28
|
+
var handleCreate = (0, _react.useMemo)(function () {
|
|
26
29
|
return {
|
|
27
30
|
onCreate: function () {
|
|
28
31
|
var _onCreate2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(result) {
|
|
@@ -51,7 +54,11 @@ var LinkCreateCallbackProvider = exports.LinkCreateCallbackProvider = function L
|
|
|
51
54
|
return _onCreate2.apply(this, arguments);
|
|
52
55
|
}
|
|
53
56
|
return onCreate;
|
|
54
|
-
}()
|
|
57
|
+
}()
|
|
58
|
+
};
|
|
59
|
+
}, [createAnalyticsEvent, _onCreate]);
|
|
60
|
+
var handleFailure = (0, _react.useMemo)(function () {
|
|
61
|
+
return {
|
|
55
62
|
onFailure: function () {
|
|
56
63
|
var _onFailure2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(error) {
|
|
57
64
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
@@ -71,10 +78,14 @@ var LinkCreateCallbackProvider = exports.LinkCreateCallbackProvider = function L
|
|
|
71
78
|
return _onFailure2.apply(this, arguments);
|
|
72
79
|
}
|
|
73
80
|
return onFailure;
|
|
74
|
-
}()
|
|
75
|
-
onCancel: onCancel
|
|
81
|
+
}()
|
|
76
82
|
};
|
|
77
|
-
}, [
|
|
83
|
+
}, [createAnalyticsEvent, _onFailure]);
|
|
84
|
+
var value = (0, _react.useMemo)(function () {
|
|
85
|
+
return _objectSpread(_objectSpread({
|
|
86
|
+
onCancel: onCancel
|
|
87
|
+
}, handleCreate), handleFailure);
|
|
88
|
+
}, [onCancel, handleCreate, handleFailure]);
|
|
78
89
|
return /*#__PURE__*/_react.default.createElement(LinkCreateCallbackContext.Provider, {
|
|
79
90
|
value: value
|
|
80
91
|
}, children);
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.useEditPostCreateModal = exports.EditPostCreateModalProvider = void 0;
|
|
9
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
12
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
13
|
+
var EditPostCreateModalContext = /*#__PURE__*/(0, _react.createContext)({
|
|
14
|
+
editViewPayload: undefined,
|
|
15
|
+
setEditViewPayload: function setEditViewPayload() {}
|
|
16
|
+
});
|
|
17
|
+
var EditPostCreateModalProvider = exports.EditPostCreateModalProvider = function EditPostCreateModalProvider(_ref) {
|
|
18
|
+
var active = _ref.active,
|
|
19
|
+
children = _ref.children;
|
|
20
|
+
var _useState = (0, _react.useState)(undefined),
|
|
21
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
22
|
+
editViewPayload = _useState2[0],
|
|
23
|
+
setEditViewPayload = _useState2[1];
|
|
24
|
+
var value = (0, _react.useMemo)(function () {
|
|
25
|
+
return {
|
|
26
|
+
editViewPayload: editViewPayload,
|
|
27
|
+
setEditViewPayload: setEditViewPayload
|
|
28
|
+
};
|
|
29
|
+
}, [editViewPayload, setEditViewPayload]);
|
|
30
|
+
if (editViewPayload && !active) {
|
|
31
|
+
setEditViewPayload(undefined);
|
|
32
|
+
}
|
|
33
|
+
return /*#__PURE__*/_react.default.createElement(EditPostCreateModalContext.Provider, {
|
|
34
|
+
value: value
|
|
35
|
+
}, children);
|
|
36
|
+
};
|
|
37
|
+
var useEditPostCreateModal = exports.useEditPostCreateModal = function useEditPostCreateModal() {
|
|
38
|
+
var value = (0, _react.useContext)(EditPostCreateModalContext);
|
|
39
|
+
if (!value) {
|
|
40
|
+
throw new Error('useEditPostCreateModal used outside of useEditPostCreateModalProvider');
|
|
41
|
+
}
|
|
42
|
+
return value;
|
|
43
|
+
};
|
|
@@ -19,7 +19,11 @@ var FormContext = exports.FormContext = /*#__PURE__*/(0, _react.createContext)({
|
|
|
19
19
|
return {};
|
|
20
20
|
},
|
|
21
21
|
setFormErrorMessage: function setFormErrorMessage() {},
|
|
22
|
-
enableEditView: undefined
|
|
22
|
+
enableEditView: undefined,
|
|
23
|
+
setFormDirty: function setFormDirty() {},
|
|
24
|
+
isFormDirty: function isFormDirty() {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
23
27
|
});
|
|
24
28
|
var FormContextProvider = exports.FormContextProvider = function FormContextProvider(_ref) {
|
|
25
29
|
var enableEditView = _ref.enableEditView,
|
|
@@ -32,6 +36,13 @@ var FormContextProvider = exports.FormContextProvider = function FormContextProv
|
|
|
32
36
|
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
33
37
|
validators = _useState4[0],
|
|
34
38
|
setValidators = _useState4[1];
|
|
39
|
+
var dirty = (0, _react.useRef)(false);
|
|
40
|
+
var isFormDirty = (0, _react.useCallback)(function () {
|
|
41
|
+
return dirty.current;
|
|
42
|
+
}, [dirty]);
|
|
43
|
+
var setFormDirty = (0, _react.useCallback)(function (isDirty) {
|
|
44
|
+
dirty.current = !!isDirty;
|
|
45
|
+
}, [dirty]);
|
|
35
46
|
|
|
36
47
|
// Add validators to the form
|
|
37
48
|
var assignValidator = (0, _react.useCallback)(function (name, fieldValidators) {
|
|
@@ -55,7 +66,9 @@ var FormContextProvider = exports.FormContextProvider = function FormContextProv
|
|
|
55
66
|
getValidators: getValidators,
|
|
56
67
|
setFormErrorMessage: setFormErrorMessage,
|
|
57
68
|
formErrorMessage: error,
|
|
58
|
-
enableEditView: enableEditView
|
|
69
|
+
enableEditView: enableEditView,
|
|
70
|
+
setFormDirty: setFormDirty,
|
|
71
|
+
isFormDirty: isFormDirty
|
|
59
72
|
}
|
|
60
73
|
}, children);
|
|
61
74
|
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.useLinkCreatePlugins = exports.LinkCreatePluginsProvider = void 0;
|
|
9
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
12
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
13
|
+
var LinkCreatePluginsContext = /*#__PURE__*/(0, _react.createContext)(null);
|
|
14
|
+
var LinkCreatePluginsProvider = exports.LinkCreatePluginsProvider = function LinkCreatePluginsProvider(_ref) {
|
|
15
|
+
var plugins = _ref.plugins,
|
|
16
|
+
propEntityKey = _ref.entityKey,
|
|
17
|
+
children = _ref.children;
|
|
18
|
+
var _useState = (0, _react.useState)(propEntityKey),
|
|
19
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 1),
|
|
20
|
+
entityKey = _useState2[0];
|
|
21
|
+
var value = (0, _react.useMemo)(function () {
|
|
22
|
+
var _plugins$find;
|
|
23
|
+
return {
|
|
24
|
+
activePlugin: (_plugins$find = plugins.find(function (plugin) {
|
|
25
|
+
return plugin.key === entityKey;
|
|
26
|
+
})) !== null && _plugins$find !== void 0 ? _plugins$find : null
|
|
27
|
+
};
|
|
28
|
+
}, [entityKey, plugins]);
|
|
29
|
+
return /*#__PURE__*/_react.default.createElement(LinkCreatePluginsContext.Provider, {
|
|
30
|
+
value: value
|
|
31
|
+
}, children);
|
|
32
|
+
};
|
|
33
|
+
var useLinkCreatePlugins = exports.useLinkCreatePlugins = function useLinkCreatePlugins() {
|
|
34
|
+
var value = (0, _react.useContext)(LinkCreatePluginsContext);
|
|
35
|
+
if (!value) {
|
|
36
|
+
throw new Error('useLinkCreatePlugins used outside of LinkCreatePluginsProvider');
|
|
37
|
+
}
|
|
38
|
+
return value;
|
|
39
|
+
};
|
|
@@ -12,6 +12,7 @@ var _react = require("react");
|
|
|
12
12
|
var _react2 = require("@emotion/react");
|
|
13
13
|
var _reactFinalForm = require("react-final-form");
|
|
14
14
|
var _analyticsNext = require("@atlaskit/analytics-next");
|
|
15
|
+
var _primitives = require("@atlaskit/primitives");
|
|
15
16
|
var _constants = require("../../common/constants");
|
|
16
17
|
var _analytics = _interopRequireDefault(require("../../common/utils/analytics/analytics.codegen"));
|
|
17
18
|
var _formContext = require("../../controllers/form-context");
|
|
@@ -39,7 +40,8 @@ var CreateForm = exports.CreateForm = function CreateForm(_ref) {
|
|
|
39
40
|
createAnalyticsEvent = _useAnalyticsEvents.createAnalyticsEvent;
|
|
40
41
|
var _useFormContext = (0, _formContext.useFormContext)(),
|
|
41
42
|
getValidators = _useFormContext.getValidators,
|
|
42
|
-
formErrorMessage = _useFormContext.formErrorMessage
|
|
43
|
+
formErrorMessage = _useFormContext.formErrorMessage,
|
|
44
|
+
setFormDirty = _useFormContext.setFormDirty;
|
|
43
45
|
var handleSubmit = (0, _react.useCallback)( /*#__PURE__*/function () {
|
|
44
46
|
var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(data) {
|
|
45
47
|
var validators, errors;
|
|
@@ -94,7 +96,14 @@ var CreateForm = exports.CreateForm = function CreateForm(_ref) {
|
|
|
94
96
|
name: "link-create-form",
|
|
95
97
|
"data-testid": testId,
|
|
96
98
|
css: formStyles
|
|
97
|
-
}, (0, _react2.jsx)(
|
|
99
|
+
}, (0, _react2.jsx)(_reactFinalForm.FormSpy, {
|
|
100
|
+
subscription: {
|
|
101
|
+
dirty: true
|
|
102
|
+
},
|
|
103
|
+
onChange: function onChange(state) {
|
|
104
|
+
return setFormDirty(state.dirty);
|
|
105
|
+
}
|
|
106
|
+
}), (0, _react2.jsx)(_primitives.Box, null, children), !hideFooter && (0, _react2.jsx)(_formFooter.CreateFormFooter, {
|
|
98
107
|
formErrorMessage: formErrorMessage,
|
|
99
108
|
handleCancel: handleCancel,
|
|
100
109
|
submitting: submitting,
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "ConfirmDismissDialog", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function get() {
|
|
9
|
+
return _main.ConfirmDismissDialog;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
var _main = require("./main");
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.ConfirmDismissDialog = void 0;
|
|
9
|
+
var _react = _interopRequireDefault(require("react"));
|
|
10
|
+
var _reactIntlNext = require("react-intl-next");
|
|
11
|
+
var _button = _interopRequireDefault(require("@atlaskit/button"));
|
|
12
|
+
var _modalDialog = _interopRequireWildcard(require("@atlaskit/modal-dialog"));
|
|
13
|
+
var _messages = _interopRequireDefault(require("./messages"));
|
|
14
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
15
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
16
|
+
var ConfirmDismissDialog = exports.ConfirmDismissDialog = function ConfirmDismissDialog(_ref) {
|
|
17
|
+
var active = _ref.active,
|
|
18
|
+
onCancelDismiss = _ref.onCancelDismiss,
|
|
19
|
+
onConfirmDismiss = _ref.onConfirmDismiss;
|
|
20
|
+
var intl = (0, _reactIntlNext.useIntl)();
|
|
21
|
+
return /*#__PURE__*/_react.default.createElement(_modalDialog.ModalTransition, null, active && /*#__PURE__*/_react.default.createElement(_modalDialog.default, {
|
|
22
|
+
testId: "link-create-confirm-dismiss-dialog",
|
|
23
|
+
onClose: onCancelDismiss,
|
|
24
|
+
width: "small"
|
|
25
|
+
}, /*#__PURE__*/_react.default.createElement(_modalDialog.ModalHeader, null, /*#__PURE__*/_react.default.createElement(_modalDialog.ModalTitle, null, intl.formatMessage(_messages.default.title))), /*#__PURE__*/_react.default.createElement(_modalDialog.ModalBody, null, intl.formatMessage(_messages.default.description)), /*#__PURE__*/_react.default.createElement(_modalDialog.ModalFooter, null, /*#__PURE__*/_react.default.createElement(_button.default, {
|
|
26
|
+
appearance: "subtle",
|
|
27
|
+
onClick: onCancelDismiss
|
|
28
|
+
}, intl.formatMessage(_messages.default.cancelButtonLabel)), /*#__PURE__*/_react.default.createElement(_button.default, {
|
|
29
|
+
appearance: "primary",
|
|
30
|
+
onClick: onConfirmDismiss
|
|
31
|
+
}, intl.formatMessage(_messages.default.confirmButtonLabel)))));
|
|
32
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _reactIntlNext = require("react-intl-next");
|
|
8
|
+
var _default = exports.default = (0, _reactIntlNext.defineMessages)({
|
|
9
|
+
title: {
|
|
10
|
+
id: 'linkCreate.confirm-dismiss-dialog.modal.title',
|
|
11
|
+
defaultMessage: 'Your changes won’t be saved',
|
|
12
|
+
description: 'Title for confirm-dismiss modal popup'
|
|
13
|
+
},
|
|
14
|
+
cancelButtonLabel: {
|
|
15
|
+
id: 'linkCreate.confirm-dismiss-dialog.modal.cancel-button-label',
|
|
16
|
+
defaultMessage: 'Go back',
|
|
17
|
+
description: 'Label for secondary button for confirm-dismiss modal popup'
|
|
18
|
+
},
|
|
19
|
+
confirmButtonLabel: {
|
|
20
|
+
id: 'linkCreate.confirm-dismiss-dialog.modal.confirm-button-label',
|
|
21
|
+
defaultMessage: 'Discard',
|
|
22
|
+
description: 'Label for primary button for confirm-dismiss modal popup'
|
|
23
|
+
},
|
|
24
|
+
description: {
|
|
25
|
+
id: 'linkCreate.confirm-dismiss-dialog.modal.description',
|
|
26
|
+
defaultMessage: 'We won’t be able to save your information if you move away from this page.',
|
|
27
|
+
description: 'Description for confirm-dismiss modal popup'
|
|
28
|
+
}
|
|
29
|
+
});
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.EditModal = void 0;
|
|
9
|
+
var _react = _interopRequireDefault(require("react"));
|
|
10
|
+
var _modalDialog = _interopRequireWildcard(require("@atlaskit/modal-dialog"));
|
|
11
|
+
var _editPostCreateContext = require("../../../controllers/edit-post-create-context");
|
|
12
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
13
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
14
|
+
var EditModal = exports.EditModal = function EditModal(_ref) {
|
|
15
|
+
var onClose = _ref.onClose;
|
|
16
|
+
var _useEditPostCreateMod = (0, _editPostCreateContext.useEditPostCreateModal)(),
|
|
17
|
+
editViewPayload = _useEditPostCreateMod.editViewPayload;
|
|
18
|
+
return /*#__PURE__*/_react.default.createElement(_modalDialog.ModalTransition, null, !!editViewPayload && /*#__PURE__*/_react.default.createElement(_modalDialog.default, {
|
|
19
|
+
testId: "link-create-edit-modal",
|
|
20
|
+
onClose: onClose,
|
|
21
|
+
shouldScrollInViewport: true,
|
|
22
|
+
width: "calc(100vw - 120px)",
|
|
23
|
+
height: "calc(100vh - 120px)"
|
|
24
|
+
}));
|
|
25
|
+
};
|
|
@@ -7,20 +7,28 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.default = exports.TEST_ID = void 0;
|
|
9
9
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
10
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
12
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
11
13
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
12
14
|
var _react = require("react");
|
|
13
15
|
var _react2 = require("@emotion/react");
|
|
14
16
|
var _reactIntlNext = require("react-intl-next");
|
|
15
17
|
var _modalDialog = _interopRequireWildcard(require("@atlaskit/modal-dialog"));
|
|
18
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
19
|
+
var _primitives = require("@atlaskit/primitives");
|
|
16
20
|
var _constants = require("../../common/constants");
|
|
17
21
|
var _callbackContext = require("../../controllers/callback-context");
|
|
22
|
+
var _editPostCreateContext = require("../../controllers/edit-post-create-context");
|
|
18
23
|
var _formContext = require("../../controllers/form-context");
|
|
24
|
+
var _pluginContext = require("../../controllers/plugin-context");
|
|
25
|
+
var _confirmDismissDialog = require("./confirm-dismiss-dialog");
|
|
26
|
+
var _editModal = require("./edit-modal");
|
|
19
27
|
var _errorBoundary = require("./error-boundary");
|
|
20
28
|
var _messages = require("./messages");
|
|
21
29
|
var _trackMount = _interopRequireDefault(require("./track-mount"));
|
|
22
30
|
var _excluded = ["testId", "onCreate", "onFailure", "onCancel", "triggeredFrom"],
|
|
23
|
-
_excluded2 = ["active", "modalTitle", "onOpenComplete", "onCloseComplete"];
|
|
31
|
+
_excluded2 = ["active", "modalTitle", "onCancel", "onOpenComplete", "onCloseComplete"];
|
|
24
32
|
/** @jsx jsx */
|
|
25
33
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
26
34
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
@@ -36,7 +44,7 @@ var LinkCreateContent = function LinkCreateContent(_ref) {
|
|
|
36
44
|
}
|
|
37
45
|
return (0, _react2.jsx)(_react.Fragment, null, chosenOne.form);
|
|
38
46
|
};
|
|
39
|
-
var LinkCreate =
|
|
47
|
+
var LinkCreate = function LinkCreate(_ref2) {
|
|
40
48
|
var _ref2$testId = _ref2.testId,
|
|
41
49
|
testId = _ref2$testId === void 0 ? TEST_ID : _ref2$testId,
|
|
42
50
|
onCreate = _ref2.onCreate,
|
|
@@ -74,28 +82,68 @@ var LinkCreate = (0, _formContext.withLinkCreateFormContext)(function (_ref2) {
|
|
|
74
82
|
setFormErrorMessage(error.message);
|
|
75
83
|
onFailure && onFailure(error);
|
|
76
84
|
}, [onFailure, setFormErrorMessage]);
|
|
77
|
-
return (0, _react2.jsx)(
|
|
78
|
-
|
|
85
|
+
return (0, _react2.jsx)(_primitives.Box, {
|
|
86
|
+
testId: testId
|
|
79
87
|
}, (0, _react2.jsx)(_errorBoundary.ErrorBoundary, null, (0, _react2.jsx)(_callbackContext.LinkCreateCallbackProvider, {
|
|
80
88
|
onCancel: onCancel,
|
|
81
89
|
onCreate: handleCreate,
|
|
82
90
|
onFailure: handleFailure
|
|
83
91
|
}, (0, _react2.jsx)(_trackMount.default, null), (0, _react2.jsx)(LinkCreateContent, restProps))));
|
|
84
|
-
}
|
|
92
|
+
};
|
|
85
93
|
var LinkCreateWithModal = function LinkCreateWithModal(_ref4) {
|
|
86
94
|
var active = _ref4.active,
|
|
87
95
|
modalTitle = _ref4.modalTitle,
|
|
96
|
+
onCancel = _ref4.onCancel,
|
|
88
97
|
onOpenComplete = _ref4.onOpenComplete,
|
|
89
98
|
onCloseComplete = _ref4.onCloseComplete,
|
|
90
99
|
createProps = (0, _objectWithoutProperties2.default)(_ref4, _excluded2);
|
|
100
|
+
var _useState = (0, _react.useState)(false),
|
|
101
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
102
|
+
dismissDialog = _useState2[0],
|
|
103
|
+
setDismissDialog = _useState2[1];
|
|
104
|
+
var _useFormContext2 = (0, _formContext.useFormContext)(),
|
|
105
|
+
isFormDirty = _useFormContext2.isFormDirty;
|
|
91
106
|
var intl = (0, _reactIntlNext.useIntl)();
|
|
92
|
-
|
|
107
|
+
var handleCancel = (0, _react.useCallback)(function () {
|
|
108
|
+
if ((0, _platformFeatureFlags.getBooleanFF)('platform.linking-platform.link-create.confirm-dismiss-dialog')) {
|
|
109
|
+
if (isFormDirty()) {
|
|
110
|
+
return setDismissDialog(true);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
onCancel && onCancel();
|
|
114
|
+
}, [onCancel, isFormDirty]);
|
|
115
|
+
var handleCancelDismiss = (0, _react.useCallback)(function () {
|
|
116
|
+
setDismissDialog(false);
|
|
117
|
+
}, []);
|
|
118
|
+
var handleConfirmDismiss = (0, _react.useCallback)(function () {
|
|
119
|
+
setDismissDialog(false);
|
|
120
|
+
onCancel && onCancel();
|
|
121
|
+
}, [onCancel]);
|
|
122
|
+
return (0, _react2.jsx)(_react.Fragment, null, (0, _react2.jsx)(_modalDialog.ModalTransition, null, !!active && (0, _react2.jsx)(_modalDialog.default, {
|
|
93
123
|
testId: "link-create-modal",
|
|
94
|
-
onClose:
|
|
124
|
+
onClose: handleCancel,
|
|
95
125
|
shouldScrollInViewport: true,
|
|
96
126
|
onOpenComplete: onOpenComplete,
|
|
97
127
|
onCloseComplete: onCloseComplete,
|
|
98
128
|
width: "".concat(_constants.CREATE_FORM_MAX_WIDTH_IN_PX, "px")
|
|
99
|
-
}, (0, _react2.jsx)(_modalDialog.ModalHeader, null, (0, _react2.jsx)(_modalDialog.ModalTitle, null, modalTitle || intl.formatMessage(_messages.messages.heading))), (0, _react2.jsx)(_modalDialog.ModalBody, null, (0, _react2.jsx)(LinkCreate, createProps
|
|
129
|
+
}, (0, _react2.jsx)(_modalDialog.ModalHeader, null, (0, _react2.jsx)(_modalDialog.ModalTitle, null, modalTitle || intl.formatMessage(_messages.messages.heading))), (0, _react2.jsx)(_modalDialog.ModalBody, null, (0, _react2.jsx)(LinkCreate, (0, _extends2.default)({}, createProps, {
|
|
130
|
+
onCancel: handleCancel
|
|
131
|
+
}))))), (0, _platformFeatureFlags.getBooleanFF)('platform.linking-platform.link-create.enable-edit') && (0, _react2.jsx)(_editModal.EditModal, {
|
|
132
|
+
onClose: handleCancel
|
|
133
|
+
}), (0, _platformFeatureFlags.getBooleanFF)('platform.linking-platform.link-create.confirm-dismiss-dialog') && (0, _react2.jsx)(_confirmDismissDialog.ConfirmDismissDialog, {
|
|
134
|
+
active: dismissDialog,
|
|
135
|
+
onCancelDismiss: handleCancelDismiss,
|
|
136
|
+
onConfirmDismiss: handleConfirmDismiss
|
|
137
|
+
}));
|
|
100
138
|
};
|
|
101
|
-
var _default = exports.default =
|
|
139
|
+
var _default = exports.default = (0, _formContext.withLinkCreateFormContext)(function (props) {
|
|
140
|
+
if ((0, _platformFeatureFlags.getBooleanFF)('platform.linking-platform.link-create.enable-edit')) {
|
|
141
|
+
return (0, _react2.jsx)(_pluginContext.LinkCreatePluginsProvider, {
|
|
142
|
+
plugins: props.plugins,
|
|
143
|
+
entityKey: props.entityKey
|
|
144
|
+
}, (0, _react2.jsx)(_editPostCreateContext.EditPostCreateModalProvider, {
|
|
145
|
+
active: !!props.active
|
|
146
|
+
}, (0, _react2.jsx)(LinkCreateWithModal, props)));
|
|
147
|
+
}
|
|
148
|
+
return (0, _react2.jsx)(LinkCreateWithModal, props);
|
|
149
|
+
});
|
package/dist/cjs/ui/main.js
CHANGED
|
@@ -24,7 +24,7 @@ var LinkCreateWithAnalyticsContext = (0, _analytics.withLinkCreateAnalyticsConte
|
|
|
24
24
|
}));
|
|
25
25
|
var PACKAGE_DATA = exports.PACKAGE_DATA = {
|
|
26
26
|
packageName: "@atlaskit/link-create" || '',
|
|
27
|
-
packageVersion: "1.
|
|
27
|
+
packageVersion: "1.5.0" || '',
|
|
28
28
|
componentName: _constants.COMPONENT_NAME,
|
|
29
29
|
source: _constants.COMPONENT_NAME
|
|
30
30
|
};
|
|
@@ -12,7 +12,7 @@ const LinkCreateCallbackProvider = ({
|
|
|
12
12
|
const {
|
|
13
13
|
createAnalyticsEvent
|
|
14
14
|
} = useAnalyticsEvents();
|
|
15
|
-
const
|
|
15
|
+
const handleCreate = useMemo(() => ({
|
|
16
16
|
onCreate: async result => {
|
|
17
17
|
const {
|
|
18
18
|
objectId,
|
|
@@ -25,15 +25,21 @@ const LinkCreateCallbackProvider = ({
|
|
|
25
25
|
if (onCreate) {
|
|
26
26
|
await onCreate(result);
|
|
27
27
|
}
|
|
28
|
-
}
|
|
28
|
+
}
|
|
29
|
+
}), [createAnalyticsEvent, onCreate]);
|
|
30
|
+
const handleFailure = useMemo(() => ({
|
|
29
31
|
onFailure: async error => {
|
|
30
32
|
createAnalyticsEvent(createEventPayload('track.object.createFailed.linkCreate', {
|
|
31
33
|
failureType: error.name
|
|
32
34
|
})).fire(ANALYTICS_CHANNEL);
|
|
33
35
|
onFailure && onFailure(error);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
|
|
36
|
+
}
|
|
37
|
+
}), [createAnalyticsEvent, onFailure]);
|
|
38
|
+
const value = useMemo(() => ({
|
|
39
|
+
onCancel,
|
|
40
|
+
...handleCreate,
|
|
41
|
+
...handleFailure
|
|
42
|
+
}), [onCancel, handleCreate, handleFailure]);
|
|
37
43
|
return /*#__PURE__*/React.createElement(LinkCreateCallbackContext.Provider, {
|
|
38
44
|
value: value
|
|
39
45
|
}, children);
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React, { createContext, useContext, useMemo, useState } from 'react';
|
|
2
|
+
const EditPostCreateModalContext = /*#__PURE__*/createContext({
|
|
3
|
+
editViewPayload: undefined,
|
|
4
|
+
setEditViewPayload: () => {}
|
|
5
|
+
});
|
|
6
|
+
export const EditPostCreateModalProvider = ({
|
|
7
|
+
active,
|
|
8
|
+
children
|
|
9
|
+
}) => {
|
|
10
|
+
const [editViewPayload, setEditViewPayload] = useState(undefined);
|
|
11
|
+
const value = useMemo(() => ({
|
|
12
|
+
editViewPayload,
|
|
13
|
+
setEditViewPayload
|
|
14
|
+
}), [editViewPayload, setEditViewPayload]);
|
|
15
|
+
if (editViewPayload && !active) {
|
|
16
|
+
setEditViewPayload(undefined);
|
|
17
|
+
}
|
|
18
|
+
return /*#__PURE__*/React.createElement(EditPostCreateModalContext.Provider, {
|
|
19
|
+
value: value
|
|
20
|
+
}, children);
|
|
21
|
+
};
|
|
22
|
+
export const useEditPostCreateModal = () => {
|
|
23
|
+
const value = useContext(EditPostCreateModalContext);
|
|
24
|
+
if (!value) {
|
|
25
|
+
throw new Error('useEditPostCreateModal used outside of useEditPostCreateModalProvider');
|
|
26
|
+
}
|
|
27
|
+
return value;
|
|
28
|
+
};
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import React, { createContext, useCallback, useContext, useState } from 'react';
|
|
1
|
+
import React, { createContext, useCallback, useContext, useRef, useState } from 'react';
|
|
2
2
|
export const FormContext = /*#__PURE__*/createContext({
|
|
3
3
|
assignValidator: () => {},
|
|
4
4
|
getValidators: () => ({}),
|
|
5
5
|
setFormErrorMessage: () => {},
|
|
6
|
-
enableEditView: undefined
|
|
6
|
+
enableEditView: undefined,
|
|
7
|
+
setFormDirty: () => {},
|
|
8
|
+
isFormDirty: () => false
|
|
7
9
|
});
|
|
8
10
|
const FormContextProvider = ({
|
|
9
11
|
enableEditView,
|
|
@@ -11,6 +13,13 @@ const FormContextProvider = ({
|
|
|
11
13
|
}) => {
|
|
12
14
|
const [error, setError] = useState();
|
|
13
15
|
const [validators, setValidators] = useState({});
|
|
16
|
+
const dirty = useRef(false);
|
|
17
|
+
const isFormDirty = useCallback(() => {
|
|
18
|
+
return dirty.current;
|
|
19
|
+
}, [dirty]);
|
|
20
|
+
const setFormDirty = useCallback(isDirty => {
|
|
21
|
+
dirty.current = !!isDirty;
|
|
22
|
+
}, [dirty]);
|
|
14
23
|
|
|
15
24
|
// Add validators to the form
|
|
16
25
|
const assignValidator = useCallback((name, fieldValidators) => {
|
|
@@ -35,7 +44,9 @@ const FormContextProvider = ({
|
|
|
35
44
|
getValidators,
|
|
36
45
|
setFormErrorMessage,
|
|
37
46
|
formErrorMessage: error,
|
|
38
|
-
enableEditView
|
|
47
|
+
enableEditView,
|
|
48
|
+
setFormDirty,
|
|
49
|
+
isFormDirty
|
|
39
50
|
}
|
|
40
51
|
}, children);
|
|
41
52
|
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React, { createContext, useContext, useMemo, useState } from 'react';
|
|
2
|
+
const LinkCreatePluginsContext = /*#__PURE__*/createContext(null);
|
|
3
|
+
export const LinkCreatePluginsProvider = ({
|
|
4
|
+
plugins,
|
|
5
|
+
entityKey: propEntityKey,
|
|
6
|
+
children
|
|
7
|
+
}) => {
|
|
8
|
+
const [entityKey] = useState(propEntityKey);
|
|
9
|
+
const value = useMemo(() => {
|
|
10
|
+
var _plugins$find;
|
|
11
|
+
return {
|
|
12
|
+
activePlugin: (_plugins$find = plugins.find(plugin => plugin.key === entityKey)) !== null && _plugins$find !== void 0 ? _plugins$find : null
|
|
13
|
+
};
|
|
14
|
+
}, [entityKey, plugins]);
|
|
15
|
+
return /*#__PURE__*/React.createElement(LinkCreatePluginsContext.Provider, {
|
|
16
|
+
value: value
|
|
17
|
+
}, children);
|
|
18
|
+
};
|
|
19
|
+
export const useLinkCreatePlugins = () => {
|
|
20
|
+
const value = useContext(LinkCreatePluginsContext);
|
|
21
|
+
if (!value) {
|
|
22
|
+
throw new Error('useLinkCreatePlugins used outside of LinkCreatePluginsProvider');
|
|
23
|
+
}
|
|
24
|
+
return value;
|
|
25
|
+
};
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/** @jsx jsx */
|
|
2
2
|
import { useCallback } from 'react';
|
|
3
3
|
import { css, jsx } from '@emotion/react';
|
|
4
|
-
import { Form } from 'react-final-form';
|
|
4
|
+
import { Form, FormSpy } from 'react-final-form';
|
|
5
5
|
import { useAnalyticsEvents } from '@atlaskit/analytics-next';
|
|
6
|
+
import { Box } from '@atlaskit/primitives';
|
|
6
7
|
import { ANALYTICS_CHANNEL, CREATE_FORM_MAX_WIDTH_IN_PX } from '../../common/constants';
|
|
7
8
|
import createEventPayload from '../../common/utils/analytics/analytics.codegen';
|
|
8
9
|
import { useFormContext } from '../../controllers/form-context';
|
|
@@ -29,7 +30,8 @@ export const CreateForm = ({
|
|
|
29
30
|
} = useAnalyticsEvents();
|
|
30
31
|
const {
|
|
31
32
|
getValidators,
|
|
32
|
-
formErrorMessage
|
|
33
|
+
formErrorMessage,
|
|
34
|
+
setFormDirty
|
|
33
35
|
} = useFormContext();
|
|
34
36
|
const handleSubmit = useCallback(async data => {
|
|
35
37
|
createAnalyticsEvent(createEventPayload('ui.button.clicked.create', {})).fire(ANALYTICS_CHANNEL);
|
|
@@ -67,7 +69,12 @@ export const CreateForm = ({
|
|
|
67
69
|
name: "link-create-form",
|
|
68
70
|
"data-testid": testId,
|
|
69
71
|
css: formStyles
|
|
70
|
-
}, jsx(
|
|
72
|
+
}, jsx(FormSpy, {
|
|
73
|
+
subscription: {
|
|
74
|
+
dirty: true
|
|
75
|
+
},
|
|
76
|
+
onChange: state => setFormDirty(state.dirty)
|
|
77
|
+
}), jsx(Box, null, children), !hideFooter && jsx(CreateFormFooter, {
|
|
71
78
|
formErrorMessage: formErrorMessage,
|
|
72
79
|
handleCancel: handleCancel,
|
|
73
80
|
submitting: submitting,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { ConfirmDismissDialog } from './main';
|