@atlaskit/link-create 0.9.1 → 1.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 (101) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/analytics.spec.yaml +9 -0
  3. package/dist/cjs/common/utils/analytics/analytics.codegen.js +1 -1
  4. package/dist/cjs/controllers/callback-context/main.js +22 -3
  5. package/dist/cjs/controllers/create-field/index.js +12 -0
  6. package/dist/cjs/controllers/create-field/main.js +62 -0
  7. package/dist/cjs/index.js +12 -0
  8. package/dist/cjs/ui/create-form/async-select/main.js +117 -35
  9. package/dist/cjs/ui/create-form/form-footer/main.js +9 -2
  10. package/dist/cjs/ui/create-form/form-spy/index.js +27 -0
  11. package/dist/cjs/ui/create-form/index.js +15 -1
  12. package/dist/cjs/ui/create-form/main.js +20 -10
  13. package/dist/cjs/ui/create-form/select/index.js +12 -0
  14. package/dist/cjs/ui/create-form/select/main.js +50 -0
  15. package/dist/cjs/ui/create-form/select/types.js +5 -0
  16. package/dist/cjs/ui/create-form/textfield/main.js +26 -48
  17. package/dist/cjs/ui/index.js +15 -1
  18. package/dist/cjs/ui/link-create/main.js +3 -3
  19. package/dist/cjs/version.json +1 -1
  20. package/dist/es2019/common/utils/analytics/analytics.codegen.js +1 -1
  21. package/dist/es2019/controllers/callback-context/main.js +6 -1
  22. package/dist/es2019/controllers/create-field/index.js +1 -0
  23. package/dist/es2019/controllers/create-field/main.js +57 -0
  24. package/dist/es2019/index.js +1 -1
  25. package/dist/es2019/ui/create-form/async-select/main.js +75 -34
  26. package/dist/es2019/ui/create-form/form-footer/main.js +9 -2
  27. package/dist/es2019/ui/create-form/form-spy/index.js +18 -0
  28. package/dist/es2019/ui/create-form/index.js +3 -1
  29. package/dist/es2019/ui/create-form/main.js +25 -16
  30. package/dist/es2019/ui/create-form/select/index.js +1 -0
  31. package/dist/es2019/ui/create-form/select/main.js +40 -0
  32. package/dist/es2019/ui/create-form/textfield/main.js +24 -48
  33. package/dist/es2019/ui/index.js +3 -1
  34. package/dist/es2019/ui/link-create/main.js +3 -3
  35. package/dist/es2019/version.json +1 -1
  36. package/dist/esm/common/utils/analytics/analytics.codegen.js +1 -1
  37. package/dist/esm/controllers/callback-context/main.js +22 -3
  38. package/dist/esm/controllers/create-field/index.js +1 -0
  39. package/dist/esm/controllers/create-field/main.js +56 -0
  40. package/dist/esm/controllers/create-field/types.js +1 -0
  41. package/dist/esm/index.js +1 -1
  42. package/dist/esm/ui/create-form/async-select/main.js +118 -36
  43. package/dist/esm/ui/create-form/form-footer/main.js +9 -2
  44. package/dist/esm/ui/create-form/form-spy/index.js +19 -0
  45. package/dist/esm/ui/create-form/index.js +3 -1
  46. package/dist/esm/ui/create-form/main.js +19 -8
  47. package/dist/esm/ui/create-form/select/index.js +1 -0
  48. package/dist/esm/ui/create-form/select/main.js +42 -0
  49. package/dist/esm/ui/create-form/select/types.js +1 -0
  50. package/dist/esm/ui/create-form/textfield/main.js +25 -47
  51. package/dist/esm/ui/index.js +3 -1
  52. package/dist/esm/ui/link-create/main.js +3 -3
  53. package/dist/esm/version.json +1 -1
  54. package/dist/types/common/utils/analytics/analytics.codegen.d.ts +5 -1
  55. package/dist/types/common/utils/form/index.d.ts +2 -2
  56. package/dist/types/controllers/callback-context/main.d.ts +1 -1
  57. package/dist/types/controllers/create-field/index.d.ts +1 -0
  58. package/dist/types/controllers/create-field/main.d.ts +3 -0
  59. package/dist/types/controllers/create-field/types.d.ts +24 -0
  60. package/dist/types/index.d.ts +1 -1
  61. package/dist/types/ui/create-form/async-select/main.d.ts +5 -5
  62. package/dist/types/ui/create-form/async-select/types.d.ts +9 -4
  63. package/dist/types/ui/create-form/form-spy/index.d.ts +12 -0
  64. package/dist/types/ui/create-form/index.d.ts +2 -0
  65. package/dist/types/ui/create-form/main.d.ts +2 -1
  66. package/dist/types/ui/create-form/select/index.d.ts +1 -0
  67. package/dist/types/ui/create-form/select/main.d.ts +12 -0
  68. package/dist/types/ui/create-form/select/types.d.ts +18 -0
  69. package/dist/types/ui/create-form/textfield/main.d.ts +2 -1
  70. package/dist/types/ui/index.d.ts +2 -0
  71. package/dist/types-ts4.5/common/utils/analytics/analytics.codegen.d.ts +5 -1
  72. package/dist/types-ts4.5/common/utils/form/index.d.ts +2 -2
  73. package/dist/types-ts4.5/controllers/callback-context/main.d.ts +1 -1
  74. package/dist/types-ts4.5/controllers/create-field/index.d.ts +1 -0
  75. package/dist/types-ts4.5/controllers/create-field/main.d.ts +3 -0
  76. package/dist/types-ts4.5/controllers/create-field/types.d.ts +24 -0
  77. package/dist/types-ts4.5/index.d.ts +1 -1
  78. package/dist/types-ts4.5/ui/create-form/async-select/main.d.ts +5 -5
  79. package/dist/types-ts4.5/ui/create-form/async-select/types.d.ts +9 -4
  80. package/dist/types-ts4.5/ui/create-form/form-spy/index.d.ts +12 -0
  81. package/dist/types-ts4.5/ui/create-form/index.d.ts +2 -0
  82. package/dist/types-ts4.5/ui/create-form/main.d.ts +2 -1
  83. package/dist/types-ts4.5/ui/create-form/select/index.d.ts +1 -0
  84. package/dist/types-ts4.5/ui/create-form/select/main.d.ts +12 -0
  85. package/dist/types-ts4.5/ui/create-form/select/types.d.ts +18 -0
  86. package/dist/types-ts4.5/ui/create-form/textfield/main.d.ts +2 -1
  87. package/dist/types-ts4.5/ui/index.d.ts +2 -0
  88. package/example-helpers/mock-plugin-form.tsx +3 -4
  89. package/package.json +6 -3
  90. package/report.api.md +55 -12
  91. package/tmp/api-report-tmp.d.ts +164 -0
  92. package/dist/cjs/ui/group-selection/index.js +0 -22
  93. package/dist/es2019/ui/group-selection/index.js +0 -16
  94. package/dist/esm/ui/group-selection/index.js +0 -15
  95. package/dist/types/ui/group-selection/index.d.ts +0 -4
  96. package/dist/types/ui/group-selection/types.d.ts +0 -12
  97. package/dist/types-ts4.5/ui/group-selection/index.d.ts +0 -4
  98. package/dist/types-ts4.5/ui/group-selection/types.d.ts +0 -12
  99. /package/dist/cjs/{ui/group-selection → controllers/create-field}/types.js +0 -0
  100. /package/dist/es2019/{ui/group-selection → controllers/create-field}/types.js +0 -0
  101. /package/dist/{esm/ui/group-selection → es2019/ui/create-form/select}/types.js +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @atlaskit/link-create
2
2
 
3
+ ## 1.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - [`687749df97a`](https://bitbucket.org/atlassian/atlassian-frontend/commits/687749df97a) - Refactor form components to use react-final-form
8
+
9
+ ## 0.10.0
10
+
11
+ ### Minor Changes
12
+
13
+ - [`dc546d1044a`](https://bitbucket.org/atlassian/atlassian-frontend/commits/dc546d1044a) - Update failure handler in link-create API to take Error instead of string, and fire analytics on failure
14
+
3
15
  ## 0.9.1
4
16
 
5
17
  ### Patch Changes
@@ -83,3 +83,12 @@ events:
83
83
  objectType:
84
84
  type: string
85
85
  description: the type of created content
86
+
87
+ - object createFailed (linkCreate):
88
+ type: track
89
+ description: fired when the object creation fails
90
+ attributes:
91
+ <<: *PackageMetaDataContext
92
+ failureType:
93
+ type: string
94
+ description: the name of the failure
@@ -11,7 +11,7 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
11
11
  *
12
12
  * Generates Typescript types for analytics events from analytics.spec.yaml
13
13
  *
14
- * @codegen <<SignedSource::6c4bc6f47b1cf9cb3a9a70cac9a93775>>
14
+ * @codegen <<SignedSource::50073590468fe2604f65d3e0b23d517b>>
15
15
  * @codegenCommand yarn workspace @atlaskit/link-create run codegen-analytics
16
16
  */
17
17
 
@@ -18,7 +18,7 @@ var LinkCreateCallbackContext = /*#__PURE__*/_react.default.createContext({});
18
18
  var LinkCreateCallbackProvider = function LinkCreateCallbackProvider(_ref) {
19
19
  var children = _ref.children,
20
20
  _onCreate = _ref.onCreate,
21
- onFailure = _ref.onFailure,
21
+ _onFailure = _ref.onFailure,
22
22
  onCancel = _ref.onCancel;
23
23
  var _useAnalyticsEvents = (0, _analyticsNext.useAnalyticsEvents)(),
24
24
  createAnalyticsEvent = _useAnalyticsEvents.createAnalyticsEvent;
@@ -52,10 +52,29 @@ var LinkCreateCallbackProvider = function LinkCreateCallbackProvider(_ref) {
52
52
  }
53
53
  return onCreate;
54
54
  }(),
55
- onFailure: onFailure,
55
+ onFailure: function () {
56
+ var _onFailure2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(error) {
57
+ return _regenerator.default.wrap(function _callee2$(_context2) {
58
+ while (1) switch (_context2.prev = _context2.next) {
59
+ case 0:
60
+ createAnalyticsEvent((0, _analytics.default)('track.object.createFailed.linkCreate', {
61
+ failureType: error.name
62
+ })).fire(_constants.ANALYTICS_CHANNEL);
63
+ _onFailure && _onFailure(error);
64
+ case 2:
65
+ case "end":
66
+ return _context2.stop();
67
+ }
68
+ }, _callee2);
69
+ }));
70
+ function onFailure(_x2) {
71
+ return _onFailure2.apply(this, arguments);
72
+ }
73
+ return onFailure;
74
+ }(),
56
75
  onCancel: onCancel
57
76
  };
58
- }, [onFailure, onCancel, createAnalyticsEvent, _onCreate]);
77
+ }, [_onFailure, onCancel, createAnalyticsEvent, _onCreate]);
59
78
  return /*#__PURE__*/_react.default.createElement(LinkCreateCallbackContext.Provider, {
60
79
  value: value
61
80
  }, children);
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "CreateField", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _main.CreateField;
10
+ }
11
+ });
12
+ var _main = require("./main");
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.CreateField = CreateField;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _react = require("react");
10
+ var _react2 = require("@emotion/react");
11
+ var _reactFinalForm = require("react-final-form");
12
+ var _form = require("@atlaskit/form");
13
+ var _form2 = require("../../common/utils/form");
14
+ var _formContext = require("../form-context");
15
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
16
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } /** @jsx jsx */
17
+ var fieldWrapperStyles = (0, _react2.css)({
18
+ marginTop: "var(--ds-space-100, 8px)"
19
+ });
20
+ function CreateField(_ref) {
21
+ var id = _ref.id,
22
+ name = _ref.name,
23
+ label = _ref.label,
24
+ isRequired = _ref.isRequired,
25
+ validators = _ref.validators,
26
+ validationHelpText = _ref.validationHelpText,
27
+ testId = _ref.testId,
28
+ children = _ref.children;
29
+ var _useFormContext = (0, _formContext.useFormContext)(),
30
+ assignValidator = _useFormContext.assignValidator;
31
+ (0, _react.useEffect)(function () {
32
+ if (validators) {
33
+ assignValidator(name, validators);
34
+ }
35
+ }, [name, validators, assignValidator]);
36
+ var fieldId = (0, _react.useMemo)(function () {
37
+ return id ? id : "link-create-field-".concat(name);
38
+ }, [id, name]);
39
+ return (0, _react2.jsx)("div", {
40
+ css: fieldWrapperStyles,
41
+ "data-testid": testId
42
+ }, (0, _react2.jsx)(_reactFinalForm.Field, {
43
+ name: name
44
+ }, function (_ref2) {
45
+ var input = _ref2.input,
46
+ meta = _ref2.meta;
47
+ var isInvalid = (0, _form2.validateSubmitErrors)(meta);
48
+ var submitError = meta.submitError;
49
+ return (0, _react2.jsx)(_react.Fragment, null, label && (0, _react2.jsx)(_form.Label, {
50
+ htmlFor: fieldId,
51
+ id: "".concat(fieldId, "-label"),
52
+ testId: "".concat(testId, "-label")
53
+ }, label, isRequired && (0, _react2.jsx)(_form.RequiredAsterisk, null)), children(_objectSpread(_objectSpread({}, input), {}, {
54
+ fieldId: fieldId,
55
+ isInvalid: isInvalid
56
+ })), !submitError && validationHelpText && (0, _react2.jsx)(_form.HelperMessage, {
57
+ testId: "".concat(testId, "-helper-message")
58
+ }, validationHelpText), submitError && isInvalid && (0, _react2.jsx)(_form.ErrorMessage, {
59
+ testId: "".concat(testId, "-error-message")
60
+ }, submitError));
61
+ }));
62
+ }
package/dist/cjs/index.js CHANGED
@@ -22,12 +22,24 @@ Object.defineProperty(exports, "CreateFormLoader", {
22
22
  return _index.CreateFormLoader;
23
23
  }
24
24
  });
25
+ Object.defineProperty(exports, "FormSpy", {
26
+ enumerable: true,
27
+ get: function get() {
28
+ return _index.FormSpy;
29
+ }
30
+ });
25
31
  Object.defineProperty(exports, "LinkCreateCallbackProvider", {
26
32
  enumerable: true,
27
33
  get: function get() {
28
34
  return _callbackContext.LinkCreateCallbackProvider;
29
35
  }
30
36
  });
37
+ Object.defineProperty(exports, "Select", {
38
+ enumerable: true,
39
+ get: function get() {
40
+ return _index.Select;
41
+ }
42
+ });
31
43
  Object.defineProperty(exports, "TextField", {
32
44
  enumerable: true,
33
45
  get: function get() {
@@ -6,59 +6,141 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.AsyncSelect = AsyncSelect;
8
8
  exports.TEST_ID = void 0;
9
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
13
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
14
  var _react = require("react");
12
15
  var _react2 = require("@emotion/react");
13
- var _form = require("@atlaskit/form");
16
+ var _debouncePromise = _interopRequireDefault(require("debounce-promise"));
17
+ var _reactFinalForm = require("react-final-form");
14
18
  var _select = require("@atlaskit/select");
15
- var _form2 = require("../../../common/utils/form");
16
- var _formContext = require("../../../controllers/form-context");
17
- var _excluded = ["label", "name", "validationHelpText", "isRequired", "testId", "validators", "defaultValue"];
19
+ var _createField = require("../../../controllers/create-field");
20
+ var _excluded = ["id", "name", "label", "isRequired", "validators", "validationHelpText", "testId", "defaultOption", "loadOptions"],
21
+ _excluded2 = ["fieldId"];
18
22
  /** @jsx jsx */
19
23
  var TEST_ID = 'link-create-async-select';
24
+
20
25
  /**
21
- * An async select utilising the Atlaskit AsyncSelect and Field objects from `@atlaskit/form`.
22
- * Validation is handled by the form as it is on form submission. Any errors returned by
23
- * the handleSubmit function passed to the form <Form> that have a key matching the `name`
24
- * of this text field are shown above the field.
26
+ * An async select utilising the Atlaskit AsyncSelect and Field components from
27
+ * `@atlaskit/form`. Validation is handled by the form on form submission. Any
28
+ * errors returned by the handleSubmit function passed to the form <Form> that
29
+ * have a key matching the `name` of this field are shown below the field.
25
30
  */
26
31
  exports.TEST_ID = TEST_ID;
27
32
  function AsyncSelect(_ref) {
28
- var label = _ref.label,
33
+ var id = _ref.id,
29
34
  name = _ref.name,
30
- validationHelpText = _ref.validationHelpText,
35
+ label = _ref.label,
31
36
  isRequired = _ref.isRequired,
37
+ validators = _ref.validators,
38
+ validationHelpText = _ref.validationHelpText,
32
39
  _ref$testId = _ref.testId,
33
40
  testId = _ref$testId === void 0 ? TEST_ID : _ref$testId,
34
- validators = _ref.validators,
35
- defaultValue = _ref.defaultValue,
36
- rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
37
- var _useFormContext = (0, _formContext.useFormContext)(),
38
- assignValidator = _useFormContext.assignValidator;
41
+ propsDefaultValue = _ref.defaultOption,
42
+ loadOptions = _ref.loadOptions,
43
+ restProps = (0, _objectWithoutProperties2.default)(_ref, _excluded);
44
+ var _useForm = (0, _reactFinalForm.useForm)(),
45
+ mutators = _useForm.mutators;
46
+ var _useState = (0, _react.useState)(propsDefaultValue),
47
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
48
+ defaultValue = _useState2[0],
49
+ setDefaultValue = _useState2[1];
50
+ var _useState3 = (0, _react.useState)(false),
51
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
52
+ isLoadingDefaultOptions = _useState4[0],
53
+ setIsLoadingDefaultOptions = _useState4[1];
54
+ var _useState5 = (0, _react.useState)([]),
55
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
56
+ defaultOptions = _useState6[0],
57
+ setDefaultOptions = _useState6[1];
58
+ (0, _react.useEffect)(function () {
59
+ var current = true;
60
+ var fetch = /*#__PURE__*/function () {
61
+ var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
62
+ var query,
63
+ options,
64
+ _args = arguments;
65
+ return _regenerator.default.wrap(function _callee$(_context) {
66
+ while (1) switch (_context.prev = _context.next) {
67
+ case 0:
68
+ query = _args.length > 0 && _args[0] !== undefined ? _args[0] : '';
69
+ if (loadOptions) {
70
+ _context.next = 3;
71
+ break;
72
+ }
73
+ return _context.abrupt("return");
74
+ case 3:
75
+ _context.prev = 3;
76
+ /**
77
+ * If we are fetching default options, clear the
78
+ * value the user has set
79
+ */
80
+ mutators.setField(name, null);
81
+ setIsLoadingDefaultOptions(true);
82
+ setDefaultOptions([]);
83
+ _context.next = 9;
84
+ return loadOptions(query);
85
+ case 9:
86
+ options = _context.sent;
87
+ if (current) {
88
+ setDefaultOptions(options);
89
+ setIsLoadingDefaultOptions(false);
90
+ }
91
+ _context.next = 16;
92
+ break;
93
+ case 13:
94
+ _context.prev = 13;
95
+ _context.t0 = _context["catch"](3);
96
+ if (current) {
97
+ setIsLoadingDefaultOptions(false);
98
+ }
99
+ case 16:
100
+ case "end":
101
+ return _context.stop();
102
+ }
103
+ }, _callee, null, [[3, 13]]);
104
+ }));
105
+ return function fetch() {
106
+ return _ref2.apply(this, arguments);
107
+ };
108
+ }();
109
+ fetch();
110
+ return function () {
111
+ current = false;
112
+ };
113
+ }, [loadOptions, setIsLoadingDefaultOptions, setDefaultOptions, mutators, name]);
39
114
  (0, _react.useEffect)(function () {
40
- if (validators) {
41
- assignValidator(name, validators);
115
+ /**
116
+ * Mutate the form state to set a default value for this field
117
+ * if `defaultOption` is a prop and we have not set a value for it yet
118
+ */
119
+ if (!defaultValue && propsDefaultValue) {
120
+ setDefaultValue(propsDefaultValue);
121
+ mutators.setField(name, propsDefaultValue);
42
122
  }
43
- }, [name, validators, assignValidator]);
44
- return (0, _react2.jsx)("div", {
45
- "data-testid": testId
46
- }, (0, _react2.jsx)(_form.Field, {
123
+ }, [defaultValue, propsDefaultValue, name, mutators]);
124
+ var debouncedLoadOptions = (0, _react.useMemo)(function () {
125
+ return loadOptions ? (0, _debouncePromise.default)(loadOptions, 300) : undefined;
126
+ }, [loadOptions]);
127
+ return (0, _react2.jsx)(_createField.CreateField, {
128
+ id: id,
47
129
  name: name,
48
130
  label: label,
49
131
  isRequired: isRequired,
50
- defaultValue: defaultValue
51
- }, function (_ref2) {
52
- var fieldProps = _ref2.fieldProps,
53
- meta = _ref2.meta,
54
- error = _ref2.error;
55
- var isInvalid = (0, _form2.validateSubmitErrors)(meta);
56
- return (0, _react2.jsx)(_react.Fragment, null, (0, _react2.jsx)(_select.AsyncSelect, (0, _extends2.default)({}, fieldProps, rest, {
57
- isInvalid: isInvalid
58
- })), !error && validationHelpText && (0, _react2.jsx)(_form.HelperMessage, {
59
- testId: "".concat(testId, "-helper-message")
60
- }, validationHelpText), isInvalid && (0, _react2.jsx)(_form.ErrorMessage, {
61
- testId: "".concat(testId, "-error-message")
62
- }, error));
63
- }));
132
+ validators: validators,
133
+ validationHelpText: validationHelpText,
134
+ testId: testId
135
+ }, function (_ref3) {
136
+ var fieldId = _ref3.fieldId,
137
+ fieldProps = (0, _objectWithoutProperties2.default)(_ref3, _excluded2);
138
+ return (0, _react2.jsx)(_select.AsyncSelect, (0, _extends2.default)({
139
+ inputId: fieldId
140
+ }, fieldProps, restProps, {
141
+ loadOptions: debouncedLoadOptions,
142
+ defaultOptions: defaultOptions,
143
+ isLoading: isLoadingDefaultOptions
144
+ }));
145
+ });
64
146
  }
@@ -10,13 +10,17 @@ var _react = require("@emotion/react");
10
10
  var _reactIntlNext = require("react-intl-next");
11
11
  var _button = _interopRequireWildcard(require("@atlaskit/button"));
12
12
  var _loadingButton = _interopRequireDefault(require("@atlaskit/button/loading-button"));
13
- var _form = require("@atlaskit/form");
14
13
  var _error = _interopRequireDefault(require("@atlaskit/icon/glyph/error"));
15
14
  var _messages = require("./messages");
16
15
  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); }
17
16
  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
17
  /** @jsx jsx */
19
18
 
19
+ var formFooterWrapperStyles = (0, _react.css)({
20
+ display: 'flex',
21
+ marginTop: "var(--ds-space-300, 24px)",
22
+ justifyContent: 'flex-end'
23
+ });
20
24
  var errorStyles = (0, _react.css)({
21
25
  display: 'flex',
22
26
  alignItems: 'center',
@@ -28,7 +32,10 @@ function CreateFormFooter(_ref) {
28
32
  submitting = _ref.submitting,
29
33
  testId = _ref.testId;
30
34
  var intl = (0, _reactIntlNext.useIntl)();
31
- return (0, _react.jsx)(_form.FormFooter, null, formErrorMessage && (0, _react.jsx)("div", {
35
+ return (0, _react.jsx)("footer", {
36
+ "data-testid": "".concat(testId, "-footer"),
37
+ css: formFooterWrapperStyles
38
+ }, formErrorMessage && (0, _react.jsx)("div", {
32
39
  css: errorStyles,
33
40
  "data-testid": "".concat(testId, "-error")
34
41
  }, (0, _react.jsx)(_error.default, {
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.FormSpy = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _reactFinalForm = require("react-final-form");
10
+ /**
11
+ * Lightweight wrapper around the react-final-form
12
+ * FormSpy component so that we can control selectively
13
+ * how much of the API we are commited to.
14
+ */
15
+ var FormSpy = function FormSpy(_ref) {
16
+ var children = _ref.children;
17
+ return /*#__PURE__*/_react.default.createElement(_reactFinalForm.FormSpy, {
18
+ subscription: {
19
+ values: true
20
+ }
21
+ }, function (props) {
22
+ return children({
23
+ values: props.values
24
+ });
25
+ });
26
+ };
27
+ exports.FormSpy = FormSpy;
@@ -21,6 +21,18 @@ Object.defineProperty(exports, "CreateFormLoader", {
21
21
  return _formLoader.CreateFormLoader;
22
22
  }
23
23
  });
24
+ Object.defineProperty(exports, "FormSpy", {
25
+ enumerable: true,
26
+ get: function get() {
27
+ return _formSpy.FormSpy;
28
+ }
29
+ });
30
+ Object.defineProperty(exports, "Select", {
31
+ enumerable: true,
32
+ get: function get() {
33
+ return _select.Select;
34
+ }
35
+ });
24
36
  Object.defineProperty(exports, "TextField", {
25
37
  enumerable: true,
26
38
  get: function get() {
@@ -28,6 +40,8 @@ Object.defineProperty(exports, "TextField", {
28
40
  }
29
41
  });
30
42
  var _main = require("./main");
43
+ var _select = require("./select");
31
44
  var _asyncSelect = require("./async-select");
32
45
  var _formLoader = require("./form-loader");
33
- var _textfield = require("./textfield");
46
+ var _textfield = require("./textfield");
47
+ var _formSpy = require("./form-spy");
@@ -5,21 +5,21 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.TEST_ID = exports.CreateForm = void 0;
8
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
8
9
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
10
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
11
  var _react = require("react");
12
12
  var _react2 = require("@emotion/react");
13
+ var _reactFinalForm = require("react-final-form");
13
14
  var _analyticsNext = require("@atlaskit/analytics-next");
14
- var _form = _interopRequireDefault(require("@atlaskit/form"));
15
15
  var _constants = require("../../common/constants");
16
16
  var _analytics = _interopRequireDefault(require("../../common/utils/analytics/analytics.codegen"));
17
17
  var _formContext = require("../../controllers/form-context");
18
18
  var _formFooter = require("./form-footer");
19
19
  var _formLoader = require("./form-loader");
20
20
  var _utils = require("./utils");
21
+ var _excluded = ["submitting"];
21
22
  /** @jsx jsx */
22
-
23
23
  var formStyles = (0, _react2.css)({
24
24
  maxWidth: "".concat(_constants.CREATE_FORM_MAX_WIDTH_IN_PX, "px"),
25
25
  padding: "0 0 ".concat("var(--ds-space-300, 24px)", " 0"),
@@ -34,7 +34,8 @@ var CreateForm = function CreateForm(_ref) {
34
34
  onSubmit = _ref.onSubmit,
35
35
  onCancel = _ref.onCancel,
36
36
  isLoading = _ref.isLoading,
37
- hideFooter = _ref.hideFooter;
37
+ hideFooter = _ref.hideFooter,
38
+ initialValues = _ref.initialValues;
38
39
  var _useAnalyticsEvents = (0, _analyticsNext.useAnalyticsEvents)(),
39
40
  createAnalyticsEvent = _useAnalyticsEvents.createAnalyticsEvent;
40
41
  var _useFormContext = (0, _formContext.useFormContext)(),
@@ -76,16 +77,25 @@ var CreateForm = function CreateForm(_ref) {
76
77
  if (isLoading) {
77
78
  return (0, _react2.jsx)(_formLoader.CreateFormLoader, null);
78
79
  }
79
- return (0, _react2.jsx)(_form.default, {
80
- onSubmit: handleSubmit
80
+ return (0, _react2.jsx)(_reactFinalForm.Form, {
81
+ onSubmit: handleSubmit,
82
+ initialValues: initialValues,
83
+ mutators: {
84
+ setField: function setField(args, state, tools) {
85
+ tools.changeValue(state, args[0], function () {
86
+ return args[1];
87
+ });
88
+ }
89
+ }
81
90
  }, function (_ref3) {
82
- var formProps = _ref3.formProps,
83
- submitting = _ref3.submitting;
84
- return (0, _react2.jsx)("form", (0, _extends2.default)({}, formProps, {
91
+ var submitting = _ref3.submitting,
92
+ formProps = (0, _objectWithoutProperties2.default)(_ref3, _excluded);
93
+ return (0, _react2.jsx)("form", {
94
+ onSubmit: formProps.handleSubmit,
85
95
  name: "link-create-form",
86
96
  "data-testid": testId,
87
97
  css: formStyles
88
- }), (0, _react2.jsx)("div", null, children), !hideFooter && (0, _react2.jsx)(_formFooter.CreateFormFooter, {
98
+ }, (0, _react2.jsx)("div", null, children), !hideFooter && (0, _react2.jsx)(_formFooter.CreateFormFooter, {
89
99
  formErrorMessage: formErrorMessage,
90
100
  handleCancel: handleCancel,
91
101
  submitting: submitting,
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "Select", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _main.Select;
10
+ }
11
+ });
12
+ var _main = require("./main");
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.Select = Select;
8
+ exports.TEST_ID = void 0;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
+ var _react = require("@emotion/react");
12
+ var _select = _interopRequireDefault(require("@atlaskit/select"));
13
+ var _createField = require("../../../controllers/create-field");
14
+ var _excluded = ["id", "name", "label", "isRequired", "validators", "validationHelpText", "testId"],
15
+ _excluded2 = ["fieldId"];
16
+ /** @jsx jsx */
17
+ var TEST_ID = 'link-create-select';
18
+ /**
19
+ * A select utilising the Atlaskit Select and Field components from
20
+ * `@atlaskit/form`. Validation is handled by the form on form submission. Any
21
+ * errors returned by the handleSubmit function passed to the form <Form> that
22
+ * have a key matching the `name` of this field are shown below the field.
23
+ */
24
+ exports.TEST_ID = TEST_ID;
25
+ function Select(_ref) {
26
+ var id = _ref.id,
27
+ name = _ref.name,
28
+ label = _ref.label,
29
+ isRequired = _ref.isRequired,
30
+ validators = _ref.validators,
31
+ validationHelpText = _ref.validationHelpText,
32
+ _ref$testId = _ref.testId,
33
+ testId = _ref$testId === void 0 ? TEST_ID : _ref$testId,
34
+ restProps = (0, _objectWithoutProperties2.default)(_ref, _excluded);
35
+ return (0, _react.jsx)(_createField.CreateField, {
36
+ id: id,
37
+ name: name,
38
+ label: label,
39
+ isRequired: isRequired,
40
+ validators: validators,
41
+ validationHelpText: validationHelpText,
42
+ testId: testId
43
+ }, function (_ref2) {
44
+ var fieldId = _ref2.fieldId,
45
+ fieldProps = (0, _objectWithoutProperties2.default)(_ref2, _excluded2);
46
+ return (0, _react.jsx)(_select.default, (0, _extends2.default)({
47
+ inputId: fieldId
48
+ }, fieldProps, restProps));
49
+ });
50
+ }
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });