@atlaskit/link-datasource 3.13.16 → 3.13.18

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 (69) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/cjs/hooks/useLoadOptions.js +20 -9
  3. package/dist/cjs/ui/confluence-search-modal/modal/index.js +8 -27
  4. package/dist/cjs/ui/issue-like-table/edit-type/icon/index.js +4 -1
  5. package/dist/cjs/ui/issue-like-table/edit-type/index.js +9 -4
  6. package/dist/cjs/ui/issue-like-table/edit-type/status/index.js +7 -1
  7. package/dist/cjs/ui/issue-like-table/edit-type/text/index.js +3 -1
  8. package/dist/cjs/ui/issue-like-table/edit-type/user/index.js +7 -1
  9. package/dist/cjs/ui/issue-like-table/index.js +6 -2
  10. package/dist/cjs/ui/issue-like-table/table-cell-content/index.js +5 -0
  11. package/dist/cjs/ui/issue-like-table/table-cell-content/inline-edit.js +31 -2
  12. package/dist/cjs/ui/issue-like-table/table-cell-content/messages.js +14 -0
  13. package/dist/cjs/ui/issue-like-table/utils.js +21 -1
  14. package/dist/cjs/ui/jira-issues-modal/modal/index.js +1 -18
  15. package/dist/es2019/hooks/useLoadOptions.js +15 -4
  16. package/dist/es2019/ui/confluence-search-modal/modal/index.js +12 -35
  17. package/dist/es2019/ui/issue-like-table/edit-type/icon/index.js +4 -1
  18. package/dist/es2019/ui/issue-like-table/edit-type/index.js +9 -4
  19. package/dist/es2019/ui/issue-like-table/edit-type/status/index.js +5 -1
  20. package/dist/es2019/ui/issue-like-table/edit-type/text/index.js +3 -1
  21. package/dist/es2019/ui/issue-like-table/edit-type/user/index.js +5 -1
  22. package/dist/es2019/ui/issue-like-table/index.js +7 -3
  23. package/dist/es2019/ui/issue-like-table/table-cell-content/index.js +5 -0
  24. package/dist/es2019/ui/issue-like-table/table-cell-content/inline-edit.js +33 -3
  25. package/dist/es2019/ui/issue-like-table/table-cell-content/messages.js +8 -0
  26. package/dist/es2019/ui/issue-like-table/utils.js +18 -1
  27. package/dist/es2019/ui/jira-issues-modal/modal/index.js +4 -25
  28. package/dist/esm/hooks/useLoadOptions.js +21 -10
  29. package/dist/esm/ui/confluence-search-modal/modal/index.js +9 -28
  30. package/dist/esm/ui/issue-like-table/edit-type/icon/index.js +4 -1
  31. package/dist/esm/ui/issue-like-table/edit-type/index.js +9 -4
  32. package/dist/esm/ui/issue-like-table/edit-type/status/index.js +7 -1
  33. package/dist/esm/ui/issue-like-table/edit-type/text/index.js +3 -1
  34. package/dist/esm/ui/issue-like-table/edit-type/user/index.js +7 -1
  35. package/dist/esm/ui/issue-like-table/index.js +7 -3
  36. package/dist/esm/ui/issue-like-table/table-cell-content/index.js +5 -0
  37. package/dist/esm/ui/issue-like-table/table-cell-content/inline-edit.js +32 -3
  38. package/dist/esm/ui/issue-like-table/table-cell-content/messages.js +8 -0
  39. package/dist/esm/ui/issue-like-table/utils.js +19 -0
  40. package/dist/esm/ui/jira-issues-modal/modal/index.js +4 -21
  41. package/dist/types/ui/issue-like-table/edit-type/icon/index.d.ts +1 -0
  42. package/dist/types/ui/issue-like-table/edit-type/index.d.ts +2 -1
  43. package/dist/types/ui/issue-like-table/edit-type/status/index.d.ts +1 -0
  44. package/dist/types/ui/issue-like-table/edit-type/text/index.d.ts +1 -0
  45. package/dist/types/ui/issue-like-table/edit-type/user/index.d.ts +1 -0
  46. package/dist/types/ui/issue-like-table/table-cell-content/index.d.ts +2 -1
  47. package/dist/types/ui/issue-like-table/table-cell-content/inline-edit.d.ts +2 -1
  48. package/dist/types/ui/issue-like-table/table-cell-content/messages.d.ts +7 -0
  49. package/dist/types/ui/issue-like-table/utils.d.ts +20 -0
  50. package/dist/types-ts4.5/ui/issue-like-table/edit-type/icon/index.d.ts +1 -0
  51. package/dist/types-ts4.5/ui/issue-like-table/edit-type/index.d.ts +2 -1
  52. package/dist/types-ts4.5/ui/issue-like-table/edit-type/status/index.d.ts +1 -0
  53. package/dist/types-ts4.5/ui/issue-like-table/edit-type/text/index.d.ts +1 -0
  54. package/dist/types-ts4.5/ui/issue-like-table/edit-type/user/index.d.ts +1 -0
  55. package/dist/types-ts4.5/ui/issue-like-table/table-cell-content/index.d.ts +2 -1
  56. package/dist/types-ts4.5/ui/issue-like-table/table-cell-content/inline-edit.d.ts +2 -1
  57. package/dist/types-ts4.5/ui/issue-like-table/table-cell-content/messages.d.ts +7 -0
  58. package/dist/types-ts4.5/ui/issue-like-table/utils.d.ts +20 -0
  59. package/package.json +3 -6
  60. package/dist/cjs/ui/confluence-search-modal/modal/ModalOld.js +0 -455
  61. package/dist/cjs/ui/jira-issues-modal/modal/ModalOld.js +0 -493
  62. package/dist/es2019/ui/confluence-search-modal/modal/ModalOld.js +0 -430
  63. package/dist/es2019/ui/jira-issues-modal/modal/ModalOld.js +0 -476
  64. package/dist/esm/ui/confluence-search-modal/modal/ModalOld.js +0 -451
  65. package/dist/esm/ui/jira-issues-modal/modal/ModalOld.js +0 -490
  66. package/dist/types/ui/confluence-search-modal/modal/ModalOld.d.ts +0 -3
  67. package/dist/types/ui/jira-issues-modal/modal/ModalOld.d.ts +0 -3
  68. package/dist/types-ts4.5/ui/confluence-search-modal/modal/ModalOld.d.ts +0 -3
  69. package/dist/types-ts4.5/ui/jira-issues-modal/modal/ModalOld.d.ts +0 -3
@@ -8,12 +8,14 @@ import { useDatasourceExperienceId } from '../../../../contexts/datasource-exper
8
8
  import { useLoadOptions } from '../../../../hooks/useLoadOptions';
9
9
  import { SharedIconComponent } from '../../shared-components/icon';
10
10
  import { InlineEditUFOExperience } from '../../table-cell-content/inline-edit';
11
+ import { getCleanedSelectProps } from '../../utils';
11
12
  /**
12
13
  * Should be gated by FF rollout of platform-datasources-enable-two-way-sync-priority
13
14
  */
14
15
  var IconEditType = function IconEditType(props) {
15
16
  var _currentValue$values;
16
17
  var currentValue = props.currentValue,
18
+ labelId = props.labelId,
17
19
  executeFetch = props.executeFetch;
18
20
  var _useLoadOptions = useLoadOptions({
19
21
  executeFetch: executeFetch
@@ -38,7 +40,7 @@ var IconEditType = function IconEditType(props) {
38
40
  }, [experienceId, isLoading, hasFailed]);
39
41
  return /*#__PURE__*/React.createElement(Layering, {
40
42
  isDisabled: false
41
- }, /*#__PURE__*/React.createElement(Select, _extends({}, props, {
43
+ }, /*#__PURE__*/React.createElement(Select, _extends({}, getCleanedSelectProps(props), {
42
44
  autoFocus: true,
43
45
  blurInputOnSelect: true,
44
46
  defaultMenuIsOpen: true,
@@ -48,6 +50,7 @@ var IconEditType = function IconEditType(props) {
48
50
  filterOption: filterOption,
49
51
  testId: "inline-edit-priority",
50
52
  value: currentValue === null || currentValue === void 0 || (_currentValue$values = currentValue.values) === null || _currentValue$values === void 0 ? void 0 : _currentValue$values[0],
53
+ labelId: labelId,
51
54
  getOptionValue: function getOptionValue(option) {
52
55
  return option.text || '';
53
56
  },
@@ -16,6 +16,7 @@ export var editType = function editType(_ref) {
16
16
  var _toValueType, _value$atlassianUserI;
17
17
  var defaultValue = _ref.defaultValue,
18
18
  currentValue = _ref.currentValue,
19
+ labelId = _ref.labelId,
19
20
  setEditValues = _ref.setEditValues,
20
21
  executeFetch = _ref.executeFetch;
21
22
  switch (defaultValue.type) {
@@ -27,7 +28,8 @@ export var editType = function editType(_ref) {
27
28
  return /*#__PURE__*/React.createElement(TextEditType, _extends({}, fieldProps, {
28
29
  currentValue: currentValue,
29
30
  setEditValues: setEditValues,
30
- id: ACTIVE_INLINE_EDIT_ID
31
+ id: ACTIVE_INLINE_EDIT_ID,
32
+ labelId: labelId
31
33
  }));
32
34
  }
33
35
  };
@@ -41,7 +43,8 @@ export var editType = function editType(_ref) {
41
43
  currentValue: currentValue,
42
44
  setEditValues: setEditValues,
43
45
  id: ACTIVE_INLINE_EDIT_ID,
44
- executeFetch: executeFetch
46
+ executeFetch: executeFetch,
47
+ labelId: labelId
45
48
  }));
46
49
  }
47
50
  };
@@ -54,7 +57,8 @@ export var editType = function editType(_ref) {
54
57
  currentValue: currentValue,
55
58
  setEditValues: setEditValues,
56
59
  id: ACTIVE_INLINE_EDIT_ID,
57
- executeFetch: executeFetch
60
+ executeFetch: executeFetch,
61
+ labelId: labelId
58
62
  }));
59
63
  }
60
64
  };
@@ -68,7 +72,8 @@ export var editType = function editType(_ref) {
68
72
  currentValue: currentValue,
69
73
  setEditValues: setEditValues,
70
74
  id: ACTIVE_INLINE_EDIT_ID,
71
- executeFetch: executeFetch
75
+ executeFetch: executeFetch,
76
+ labelId: labelId
72
77
  }));
73
78
  }
74
79
  };
@@ -8,9 +8,11 @@ import { failUfoExperience, succeedUfoExperience } from '../../../../analytics/u
8
8
  import { useDatasourceExperienceId } from '../../../../contexts/datasource-experience-id';
9
9
  import { useLoadOptions } from '../../../../hooks/useLoadOptions';
10
10
  import { InlineEditUFOExperience } from '../../table-cell-content/inline-edit';
11
+ import { getCleanedSelectProps } from '../../utils';
11
12
  var StatusEditType = function StatusEditType(props) {
12
13
  var _currentValue$values;
13
14
  var currentValue = props.currentValue,
15
+ labelId = props.labelId,
14
16
  executeFetch = props.executeFetch;
15
17
  var _useLoadOptions = useLoadOptions({
16
18
  executeFetch: executeFetch
@@ -35,7 +37,7 @@ var StatusEditType = function StatusEditType(props) {
35
37
  }, [experienceId, isLoading, hasFailed]);
36
38
  return /*#__PURE__*/React.createElement(Layering, {
37
39
  isDisabled: false
38
- }, /*#__PURE__*/React.createElement(Select, _extends({}, props, {
40
+ }, /*#__PURE__*/React.createElement(Select, _extends({}, getCleanedSelectProps(props), {
39
41
  autoFocus: true,
40
42
  options: options,
41
43
  defaultMenuIsOpen: true,
@@ -48,6 +50,7 @@ var StatusEditType = function StatusEditType(props) {
48
50
  return option.text;
49
51
  },
50
52
  value: currentValue === null || currentValue === void 0 || (_currentValue$values = currentValue.values) === null || _currentValue$values === void 0 ? void 0 : _currentValue$values[0],
53
+ labelId: labelId,
51
54
  formatOptionLabel: function formatOptionLabel(option) {
52
55
  return /*#__PURE__*/React.createElement(Tooltip, {
53
56
  content: option.text
@@ -55,6 +58,9 @@ var StatusEditType = function StatusEditType(props) {
55
58
  testId: "inline-edit-status-option-".concat(option.text)
56
59
  }, option.style), option.text));
57
60
  },
61
+ getOptionLabel: function getOptionLabel(option) {
62
+ return option.text;
63
+ },
58
64
  onChange: function onChange(e) {
59
65
  return props.setEditValues({
60
66
  type: 'status',
@@ -7,7 +7,8 @@ import { useDatasourceExperienceId } from '../../../../contexts/datasource-exper
7
7
  var TextEditType = function TextEditType(props) {
8
8
  var _currentValue$values$, _currentValue$values;
9
9
  var experienceId = useDatasourceExperienceId();
10
- var currentValue = props.currentValue;
10
+ var currentValue = props.currentValue,
11
+ labelId = props.labelId;
11
12
  useEffect(function () {
12
13
  if (experienceId) {
13
14
  succeedUfoExperience({
@@ -26,6 +27,7 @@ var TextEditType = function TextEditType(props) {
26
27
  padding: "var(--ds-space-100, 8px)".concat(" calc(", "var(--ds-space-100, 8px)", " - 1px)")
27
28
  },
28
29
  value: (_currentValue$values$ = currentValue === null || currentValue === void 0 || (_currentValue$values = currentValue.values) === null || _currentValue$values === void 0 ? void 0 : _currentValue$values[0]) !== null && _currentValue$values$ !== void 0 ? _currentValue$values$ : '',
30
+ "aria-labelledby": labelId,
29
31
  onChange: function onChange(e) {
30
32
  return props.setEditValues({
31
33
  type: 'string',
@@ -14,9 +14,11 @@ import { SEARCH_DEBOUNCE_MS } from '../../../common/modal/popup-select/constants
14
14
  import { USER_TYPE_TEST_ID } from '../../render-type/user';
15
15
  import { userTypeMessages } from '../../render-type/user/messages';
16
16
  import { InlineEditUFOExperience } from '../../table-cell-content/inline-edit';
17
+ import { getCleanedSelectProps } from '../../utils';
17
18
  var UserEditType = function UserEditType(props) {
18
19
  var _currentValue$values;
19
20
  var currentValue = props.currentValue,
21
+ labelId = props.labelId,
20
22
  executeFetch = props.executeFetch;
21
23
  var _useState = useState({
22
24
  query: ''
@@ -65,7 +67,7 @@ var UserEditType = function UserEditType(props) {
65
67
  }, [experienceId, isLoading, hasFailed]);
66
68
  return /*#__PURE__*/React.createElement(Layering, {
67
69
  isDisabled: false
68
- }, /*#__PURE__*/React.createElement(Select, _extends({}, props, {
70
+ }, /*#__PURE__*/React.createElement(Select, _extends({}, getCleanedSelectProps(props), {
69
71
  autoFocus: true,
70
72
  defaultMenuIsOpen: true,
71
73
  blurInputOnSelect: true,
@@ -76,9 +78,13 @@ var UserEditType = function UserEditType(props) {
76
78
  menuPlacement: "auto",
77
79
  onInputChange: handleUserInputDebounced,
78
80
  value: currentValue === null || currentValue === void 0 || (_currentValue$values = currentValue.values) === null || _currentValue$values === void 0 ? void 0 : _currentValue$values[0],
81
+ labelId: labelId,
79
82
  getOptionValue: function getOptionValue(option) {
80
83
  return option.atlassianUserId;
81
84
  },
85
+ getOptionLabel: function getOptionLabel(option) {
86
+ return option.displayName || '';
87
+ },
82
88
  formatOptionLabel: function formatOptionLabel(option) {
83
89
  var _option$displayName;
84
90
  return /*#__PURE__*/React.createElement(Tooltip, {
@@ -43,7 +43,7 @@ import { InlineEditableTableCell, Table, TableCell, TableHeading, withTablePlugi
43
43
  import { ReadOnlyCell, TableCellContent } from './table-cell-content';
44
44
  import { TruncateTextTag } from './truncate-text-tag';
45
45
  import { useIsOnScreen } from './useIsOnScreen';
46
- import { COLUMN_BASE_WIDTH, getWidthCss } from './utils';
46
+ import { COLUMN_BASE_WIDTH, getFieldLabelById, getWidthCss } from './utils';
47
47
  var tableSidePadding = "var(--ds-space-200, 16px)";
48
48
  var tableHeadStyles = css({
49
49
  background: "var(--ds-elevation-surface-current, #FFF)",
@@ -473,7 +473,8 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref5) {
473
473
  key: id,
474
474
  cells: visibleSortedColumns.map(function (_ref12, cellIndex) {
475
475
  var key = _ref12.key,
476
- type = _ref12.type;
476
+ type = _ref12.type,
477
+ title = _ref12.title;
477
478
  return {
478
479
  key: key,
479
480
  columnKey: key,
@@ -482,11 +483,13 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref5) {
482
483
  id: id,
483
484
  columnKey: key,
484
485
  columnType: type,
486
+ columnTitle: title,
485
487
  wrappedColumnKeys: wrappedColumnKeys,
486
488
  renderItem: renderItem
487
489
  }) : jsx(ReadOnlyCell, {
488
490
  id: id,
489
491
  columnKey: key,
492
+ columnTitle: title,
490
493
  columnType: type,
491
494
  wrappedColumnKeys: wrappedColumnKeys,
492
495
  renderItem: renderItem
@@ -642,7 +645,8 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref5) {
642
645
  position: "bottom-start",
643
646
  testId: 'datasource-header-content'
644
647
  }, jsx("span", {
645
- css: headerStyles
648
+ css: headerStyles,
649
+ id: getFieldLabelById(key)
646
650
  }, content));
647
651
  var isHeadingOutsideButton = !isEditable || !onWrappedColumnChange;
648
652
  if (isHeadingOutsideButton) {
@@ -75,6 +75,7 @@ var InlineEditableCell = function InlineEditableCell(_ref3) {
75
75
  var ari = _ref3.ari,
76
76
  values = _ref3.values,
77
77
  columnKey = _ref3.columnKey,
78
+ columnTitle = _ref3.columnTitle,
78
79
  renderItem = _ref3.renderItem,
79
80
  integrationKey = _ref3.integrationKey,
80
81
  wrappedColumnKeys = _ref3.wrappedColumnKeys;
@@ -114,6 +115,7 @@ var InlineEditableCell = function InlineEditableCell(_ref3) {
114
115
  executeFetch: executeFetch,
115
116
  readView: readView,
116
117
  columnKey: columnKey,
118
+ columnTitle: columnTitle,
117
119
  datasourceTypeWithValues: values
118
120
  });
119
121
  };
@@ -133,6 +135,7 @@ var toDatasourceTypeWithValues = function toDatasourceTypeWithValues(_ref4) {
133
135
  export var TableCellContent = function TableCellContent(_ref5) {
134
136
  var id = _ref5.id,
135
137
  columnKey = _ref5.columnKey,
138
+ columnTitle = _ref5.columnTitle,
136
139
  columnType = _ref5.columnType,
137
140
  renderItem = _ref5.renderItem,
138
141
  wrappedColumnKeys = _ref5.wrappedColumnKeys;
@@ -148,6 +151,7 @@ export var TableCellContent = function TableCellContent(_ref5) {
148
151
  return /*#__PURE__*/React.createElement(InlineEditableCell, {
149
152
  ari: ari,
150
153
  columnKey: columnKey,
154
+ columnTitle: columnTitle,
151
155
  renderItem: renderItem,
152
156
  integrationKey: integrationKey,
153
157
  values: toDatasourceTypeWithValues({
@@ -167,6 +171,7 @@ export var TableCellContent = function TableCellContent(_ref5) {
167
171
  }, /*#__PURE__*/React.createElement(ReadOnlyCell, {
168
172
  id: id,
169
173
  columnKey: columnKey,
174
+ columnTitle: columnTitle,
170
175
  columnType: columnType,
171
176
  wrappedColumnKeys: wrappedColumnKeys,
172
177
  renderItem: renderItem
@@ -4,7 +4,8 @@ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
4
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
5
5
  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; }
6
6
  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) { _defineProperty(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; }
7
- import React, { useCallback, useState } from 'react';
7
+ import React, { useCallback, useMemo, useState } from 'react';
8
+ import { useIntl } from 'react-intl-next';
8
9
  import AKInlineEdit from '@atlaskit/inline-edit';
9
10
  import { Box, xcss } from '@atlaskit/primitives';
10
11
  import { useSmartLinkReload } from '@atlaskit/smart-card/hooks';
@@ -15,6 +16,8 @@ import { useDatasourceTableFlag } from '../../../hooks/useDatasourceTableFlag';
15
16
  import { useDatasourceActions, useDatasourceItem } from '../../../state';
16
17
  import { editType } from '../edit-type';
17
18
  import { EmptyAvatar } from '../shared-components/avatar';
19
+ import { getFieldLabelById } from '../utils';
20
+ import { tableCellMessages } from './messages';
18
21
  export var InlineEditUFOExperience = 'inline-edit-rendered';
19
22
  var editContainerStyles = xcss({
20
23
  marginBlockStart: 'space.negative.100'
@@ -33,6 +36,21 @@ var getBackendUpdateValue = function getBackendUpdateValue(typedNewValue) {
33
36
  }
34
37
  throw new Error("Datasource 2 way sync Backend update value not implemented for type ".concat(typedNewValue.type));
35
38
  };
39
+ var getCurrentFieldLabel = function getCurrentFieldLabel(typedNewValue) {
40
+ var _typedNewValue$values4, _typedNewValue$values5, _typedNewValue$values6;
41
+ switch (typedNewValue.type) {
42
+ case 'string':
43
+ return typedNewValue.values[0] || '';
44
+ case 'status':
45
+ return ((_typedNewValue$values4 = typedNewValue.values[0]) === null || _typedNewValue$values4 === void 0 ? void 0 : _typedNewValue$values4.text) || '';
46
+ case 'user':
47
+ return ((_typedNewValue$values5 = typedNewValue.values[0]) === null || _typedNewValue$values5 === void 0 ? void 0 : _typedNewValue$values5.displayName) || '';
48
+ case 'icon':
49
+ return ((_typedNewValue$values6 = typedNewValue.values[0]) === null || _typedNewValue$values6 === void 0 ? void 0 : _typedNewValue$values6.text) || '';
50
+ default:
51
+ return '';
52
+ }
53
+ };
36
54
  var mapUpdatedItem = function mapUpdatedItem(existingItem, columnKey, newValue) {
37
55
  switch (newValue.type) {
38
56
  case 'string':
@@ -73,6 +91,7 @@ export var InlineEdit = function InlineEdit(_ref) {
73
91
  executeFetch = _ref.executeFetch,
74
92
  readView = _ref.readView,
75
93
  columnKey = _ref.columnKey,
94
+ columnTitle = _ref.columnTitle,
76
95
  datasourceTypeWithValues = _ref.datasourceTypeWithValues;
77
96
  var _useState = useState(false),
78
97
  _useState2 = _slicedToArray(_useState, 2),
@@ -143,13 +162,22 @@ export var InlineEdit = function InlineEdit(_ref) {
143
162
  });
144
163
  }
145
164
  }, [columnKey, entityType, fireEvent, integrationKey]);
165
+ var _useIntl = useIntl(),
166
+ formatMessage = _useIntl.formatMessage;
167
+ var editButtonLabel = useMemo(function () {
168
+ return formatMessage(tableCellMessages.editButtonLabel, {
169
+ fieldName: columnTitle,
170
+ fieldValue: getCurrentFieldLabel(editValues)
171
+ });
172
+ }, [columnTitle, formatMessage, editValues]);
146
173
  return /*#__PURE__*/React.createElement(Box, {
147
174
  xcss: editContainerStyles
148
175
  }, /*#__PURE__*/React.createElement(AKInlineEdit, _extends({}, editType({
149
176
  defaultValue: datasourceTypeWithValues,
150
177
  currentValue: editValues,
151
178
  setEditValues: setEditValues,
152
- executeFetch: executeFetch
179
+ executeFetch: executeFetch,
180
+ labelId: getFieldLabelById(columnKey)
153
181
  }), {
154
182
  hideActionButtons: true,
155
183
  readView: editableRenderType({
@@ -162,7 +190,8 @@ export var InlineEdit = function InlineEdit(_ref) {
162
190
  onCancel: onCancelEdit,
163
191
  onConfirm: function onConfirm() {
164
192
  return onCommitUpdate(editValues);
165
- }
193
+ },
194
+ editButtonLabel: editButtonLabel
166
195
  })));
167
196
  };
168
197
 
@@ -0,0 +1,8 @@
1
+ import { defineMessages } from 'react-intl-next';
2
+ export var tableCellMessages = defineMessages({
3
+ editButtonLabel: {
4
+ id: 'linkDataSource.issue-line-table.edit-button-label.non-final',
5
+ description: 'Label of inline editable field, used mostly for screen readers. This label is used to describe the field that is editable and can be changed. e.g John Doe, Assignee field',
6
+ defaultMessage: '{fieldValue}, {fieldName} field'
7
+ }
8
+ });
@@ -1,3 +1,5 @@
1
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
2
+ var _excluded = ["aria-labelledby"];
1
3
  import { DatasourceAction } from '../../analytics/types';
2
4
  export var COLUMN_BASE_WIDTH = 8;
3
5
  var COLUMN_MIN_WIDTH = COLUMN_BASE_WIDTH * 4;
@@ -52,4 +54,21 @@ export var getColumnAction = function getColumnAction(oldVisibleColumnKeys, newV
52
54
  } else {
53
55
  return DatasourceAction.COLUMN_REORDERED;
54
56
  }
57
+ };
58
+
59
+ /**
60
+ * Remove deprecated `aria-labelledby` prop from select component props.
61
+ */
62
+ export var getCleanedSelectProps = function getCleanedSelectProps(props) {
63
+ // Component Field auto adds `aria-labelledby` prop, which is deprecated and should not be used - https://hello.jira.atlassian.cloud/browse/ENGHEALTH-14529
64
+ var removedLabelByProps = props['aria-labelledby'],
65
+ selectProps = _objectWithoutProperties(props, _excluded);
66
+ return selectProps;
67
+ };
68
+
69
+ /**
70
+ * Create id for table header to be used as aria-labelledby on form fields.
71
+ */
72
+ export var getFieldLabelById = function getFieldLabelById(fieldId) {
73
+ return "datasource-header-title-".concat(fieldId);
55
74
  };
@@ -14,20 +14,18 @@ import { Fragment, useCallback, useEffect, useMemo, useRef, useState } from 'rea
14
14
  // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
15
15
  import { jsx } from '@emotion/react';
16
16
  import { FormattedMessage } from 'react-intl-next';
17
- import { AnalyticsContext } from '@atlaskit/analytics-next';
18
17
  import { IntlMessagesProvider } from '@atlaskit/intl-messages-provider';
19
18
  import { ModalBody, ModalFooter, ModalHeader, ModalTitle, ModalTransition } from '@atlaskit/modal-dialog';
20
- import { fg } from '@atlaskit/platform-feature-flags';
21
19
  import { useDatasourceAnalyticsEvents } from '../../../analytics';
22
- import { componentMetadata, EVENT_CHANNEL } from '../../../analytics/constants';
20
+ import { EVENT_CHANNEL } from '../../../analytics/constants';
23
21
  import { DatasourceAction, DatasourceDisplay } from '../../../analytics/types';
24
22
  import { startUfoExperience } from '../../../analytics/ufoExperiences';
25
23
  import { useColumnPickerRenderedFailedUfoExperience } from '../../../analytics/ufoExperiences/hooks/useColumnPickerRenderedFailedUfoExperience';
26
24
  import { useDataRenderedUfoExperience } from '../../../analytics/ufoExperiences/hooks/useDataRenderedUfoExperience';
27
25
  import { mapSearchMethod } from '../../../analytics/utils';
28
26
  import { fetchMessagesForLocale } from '../../../common/utils/locale/fetch-messages-for-locale';
29
- import { DatasourceExperienceIdProvider, useDatasourceExperienceId } from '../../../contexts/datasource-experience-id';
30
- import { UserInteractionsProvider, useUserInteractions } from '../../../contexts/user-interactions';
27
+ import { useDatasourceExperienceId } from '../../../contexts/datasource-experience-id';
28
+ import { useUserInteractions } from '../../../contexts/user-interactions';
31
29
  import i18nEN from '../../../i18n/en';
32
30
  import { useAvailableSites } from '../../../services/useAvailableSites';
33
31
  import { StoreContainer } from '../../../state';
@@ -56,7 +54,6 @@ import { isQueryTooComplex } from '../basic-filters/utils/isQueryTooComplex';
56
54
  import { JiraSearchContainer } from '../jira-search-container';
57
55
  import { JiraInitialStateSVG } from './jira-issues-initial-state-svg';
58
56
  import { modalMessages } from './messages';
59
- import { PlainJiraIssuesConfigModalOld } from './ModalOld';
60
57
  var getDisplayValue = function getDisplayValue(currentViewMode, itemCount) {
61
58
  if (currentViewMode === 'table') {
62
59
  return DatasourceDisplay.DATASOURCE_TABLE;
@@ -377,15 +374,6 @@ var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(props) {
377
374
  getAnalyticsPayload: getInsertButtonAnalyticsPayload
378
375
  }, jsx(FormattedMessage, modalMessages.insertIssuesButtonText))))));
379
376
  };
380
- var analyticsContextAttributes = {
381
- dataProvider: 'jira-issues'
382
- };
383
- var analyticsContextData = _objectSpread(_objectSpread({}, componentMetadata.configModal), {}, {
384
- source: 'datasourceConfigModal'
385
- });
386
- var contextData = _objectSpread(_objectSpread({}, analyticsContextData), {}, {
387
- attributes: _objectSpread({}, analyticsContextAttributes)
388
- });
389
377
  var ConnectedJiraIssueConfigModal = createDatasourceModal({
390
378
  isValidParameters: isValidParameters,
391
379
  dataProvider: 'jira-issues',
@@ -411,10 +399,5 @@ var JiraIssuesConfigModalWithExtraAnalyticsOnInsert = function JiraIssuesConfigM
411
399
  })));
412
400
  };
413
401
  export var JiraIssuesConfigModal = function JiraIssuesConfigModal(props) {
414
- if (fg('platform-datasources-use-refactored-config-modal')) {
415
- return jsx(JiraIssuesConfigModalWithExtraAnalyticsOnInsert, props);
416
- }
417
- return jsx(StoreContainer, null, jsx(AnalyticsContext, {
418
- data: contextData
419
- }, jsx(DatasourceExperienceIdProvider, null, jsx(UserInteractionsProvider, null, jsx(PlainJiraIssuesConfigModalOld, props)))));
402
+ return jsx(JiraIssuesConfigModalWithExtraAnalyticsOnInsert, props);
420
403
  };
@@ -4,6 +4,7 @@ import { type ExecuteFetch } from '../../../../state/actions';
4
4
  import type { DatasourceTypeWithOnlyTypeValues, DatasourceTypeWithOnlyValues } from '../../types';
5
5
  interface IconEditTypeProps extends Omit<FieldProps<string>, 'value'> {
6
6
  currentValue: DatasourceTypeWithOnlyTypeValues<'icon'>;
7
+ labelId?: string;
7
8
  setEditValues: React.Dispatch<React.SetStateAction<DatasourceTypeWithOnlyValues>>;
8
9
  executeFetch?: ExecuteFetch;
9
10
  }
@@ -3,9 +3,10 @@ import type InlineEdit from '@atlaskit/inline-edit';
3
3
  import type { DatasourceType } from '@atlaskit/linking-types';
4
4
  import { type ExecuteFetch } from '../../../state/actions';
5
5
  import { type DatasourceTypeWithOnlyValues } from '../types';
6
- export declare const editType: ({ defaultValue, currentValue, setEditValues, executeFetch, }: {
6
+ export declare const editType: ({ defaultValue, currentValue, labelId, setEditValues, executeFetch, }: {
7
7
  defaultValue: DatasourceTypeWithOnlyValues;
8
8
  currentValue: DatasourceTypeWithOnlyValues;
9
+ labelId?: string | undefined;
9
10
  setEditValues: React.Dispatch<React.SetStateAction<DatasourceTypeWithOnlyValues>>;
10
11
  executeFetch?: ExecuteFetch | undefined;
11
12
  }) => Pick<React.ComponentProps<typeof InlineEdit>, 'defaultValue' | 'editView'>;
@@ -4,6 +4,7 @@ import type { ExecuteFetch } from '../../../../state/actions';
4
4
  import type { DatasourceTypeWithOnlyTypeValues, DatasourceTypeWithOnlyValues } from '../../types';
5
5
  interface StatusEditTypeProps extends Omit<FieldProps<string>, 'value'> {
6
6
  currentValue: DatasourceTypeWithOnlyTypeValues<'status'>;
7
+ labelId?: string;
7
8
  setEditValues: React.Dispatch<React.SetStateAction<DatasourceTypeWithOnlyValues>>;
8
9
  executeFetch?: ExecuteFetch;
9
10
  }
@@ -3,6 +3,7 @@ import { type FieldProps } from '@atlaskit/form';
3
3
  import type { DatasourceTypeWithOnlyTypeValues, DatasourceTypeWithOnlyValues } from '../../types';
4
4
  interface TextEditTypeProps extends Omit<FieldProps<string>, 'value'> {
5
5
  currentValue: DatasourceTypeWithOnlyTypeValues<'string'>;
6
+ labelId?: string;
6
7
  setEditValues: React.Dispatch<React.SetStateAction<DatasourceTypeWithOnlyValues>>;
7
8
  }
8
9
  declare const TextEditType: (props: TextEditTypeProps) => JSX.Element;
@@ -4,6 +4,7 @@ import type { ExecuteFetch } from '../../../../state/actions';
4
4
  import type { DatasourceTypeWithOnlyTypeValues, DatasourceTypeWithOnlyValues } from '../../types';
5
5
  interface UserEditTypeProps extends Omit<FieldProps<string>, 'value'> {
6
6
  currentValue: DatasourceTypeWithOnlyTypeValues<'user'>;
7
+ labelId?: string;
7
8
  setEditValues: React.Dispatch<React.SetStateAction<DatasourceTypeWithOnlyValues>>;
8
9
  executeFetch?: ExecuteFetch;
9
10
  }
@@ -4,11 +4,12 @@ import { type TableViewPropsRenderType } from '../types';
4
4
  interface TableCellContentProps {
5
5
  id: string;
6
6
  columnKey: string;
7
+ columnTitle: string;
7
8
  columnType: DatasourceType['type'];
8
9
  /** Used to retrieve cell content from the store */
9
10
  renderItem: TableViewPropsRenderType;
10
11
  wrappedColumnKeys: string[] | undefined;
11
12
  }
12
13
  export declare const ReadOnlyCell: ({ id, columnType, wrappedColumnKeys, renderItem, columnKey, }: TableCellContentProps) => JSX.Element | null;
13
- export declare const TableCellContent: ({ id, columnKey, columnType, renderItem, wrappedColumnKeys, }: TableCellContentProps) => JSX.Element;
14
+ export declare const TableCellContent: ({ id, columnKey, columnTitle, columnType, renderItem, wrappedColumnKeys, }: TableCellContentProps) => JSX.Element;
14
15
  export {};
@@ -5,10 +5,11 @@ export declare const InlineEditUFOExperience = "inline-edit-rendered";
5
5
  interface InlineEditProps {
6
6
  ari: string;
7
7
  columnKey: string;
8
+ columnTitle: string;
8
9
  readView: React.ReactNode;
9
10
  datasourceTypeWithValues: DatasourceTypeWithOnlyValues;
10
11
  execute: (value: string | number) => Promise<AtomicActionExecuteResponse>;
11
12
  executeFetch?: <E>(inputs: any) => Promise<E>;
12
13
  }
13
- export declare const InlineEdit: ({ ari, execute, executeFetch, readView, columnKey, datasourceTypeWithValues, }: InlineEditProps) => JSX.Element;
14
+ export declare const InlineEdit: ({ ari, execute, executeFetch, readView, columnKey, columnTitle, datasourceTypeWithValues, }: InlineEditProps) => JSX.Element;
14
15
  export {};
@@ -0,0 +1,7 @@
1
+ export declare const tableCellMessages: {
2
+ editButtonLabel: {
3
+ id: string;
4
+ description: string;
5
+ defaultMessage: string;
6
+ };
7
+ };
@@ -1,4 +1,5 @@
1
1
  /// <reference types="react" />
2
+ import { type FieldProps } from '@atlaskit/form';
2
3
  import { DatasourceAction } from '../../analytics/types';
3
4
  export declare const COLUMN_BASE_WIDTH = 8;
4
5
  export type GetWidthCss = (arg: {
@@ -21,3 +22,22 @@ export declare const getWidthCss: GetWidthCss;
21
22
  * The assumption is that since only one action is changed at each time, we don't have to verify the actual contents of the lists.
22
23
  */
23
24
  export declare const getColumnAction: (oldVisibleColumnKeys: string[], newVisibleColumnKeys: string[]) => DatasourceAction;
25
+ /**
26
+ * Remove deprecated `aria-labelledby` prop from select component props.
27
+ */
28
+ export declare const getCleanedSelectProps: (props: Omit<FieldProps<string>, 'value'>) => {
29
+ name: string;
30
+ id: string;
31
+ 'aria-describedby'?: string | undefined;
32
+ 'aria-invalid': "true" | "false";
33
+ onFocus: () => void;
34
+ onBlur: () => void;
35
+ onChange: (value: string | import("react").FormEvent<HTMLInputElement>) => void;
36
+ isDisabled: boolean;
37
+ isRequired: boolean;
38
+ isInvalid: boolean;
39
+ };
40
+ /**
41
+ * Create id for table header to be used as aria-labelledby on form fields.
42
+ */
43
+ export declare const getFieldLabelById: (fieldId: string) => string;
@@ -4,6 +4,7 @@ import { type ExecuteFetch } from '../../../../state/actions';
4
4
  import type { DatasourceTypeWithOnlyTypeValues, DatasourceTypeWithOnlyValues } from '../../types';
5
5
  interface IconEditTypeProps extends Omit<FieldProps<string>, 'value'> {
6
6
  currentValue: DatasourceTypeWithOnlyTypeValues<'icon'>;
7
+ labelId?: string;
7
8
  setEditValues: React.Dispatch<React.SetStateAction<DatasourceTypeWithOnlyValues>>;
8
9
  executeFetch?: ExecuteFetch;
9
10
  }
@@ -3,9 +3,10 @@ import type InlineEdit from '@atlaskit/inline-edit';
3
3
  import type { DatasourceType } from '@atlaskit/linking-types';
4
4
  import { type ExecuteFetch } from '../../../state/actions';
5
5
  import { type DatasourceTypeWithOnlyValues } from '../types';
6
- export declare const editType: ({ defaultValue, currentValue, setEditValues, executeFetch, }: {
6
+ export declare const editType: ({ defaultValue, currentValue, labelId, setEditValues, executeFetch, }: {
7
7
  defaultValue: DatasourceTypeWithOnlyValues;
8
8
  currentValue: DatasourceTypeWithOnlyValues;
9
+ labelId?: string | undefined;
9
10
  setEditValues: React.Dispatch<React.SetStateAction<DatasourceTypeWithOnlyValues>>;
10
11
  executeFetch?: ExecuteFetch | undefined;
11
12
  }) => Pick<React.ComponentProps<typeof InlineEdit>, 'defaultValue' | 'editView'>;
@@ -4,6 +4,7 @@ import type { ExecuteFetch } from '../../../../state/actions';
4
4
  import type { DatasourceTypeWithOnlyTypeValues, DatasourceTypeWithOnlyValues } from '../../types';
5
5
  interface StatusEditTypeProps extends Omit<FieldProps<string>, 'value'> {
6
6
  currentValue: DatasourceTypeWithOnlyTypeValues<'status'>;
7
+ labelId?: string;
7
8
  setEditValues: React.Dispatch<React.SetStateAction<DatasourceTypeWithOnlyValues>>;
8
9
  executeFetch?: ExecuteFetch;
9
10
  }
@@ -3,6 +3,7 @@ import { type FieldProps } from '@atlaskit/form';
3
3
  import type { DatasourceTypeWithOnlyTypeValues, DatasourceTypeWithOnlyValues } from '../../types';
4
4
  interface TextEditTypeProps extends Omit<FieldProps<string>, 'value'> {
5
5
  currentValue: DatasourceTypeWithOnlyTypeValues<'string'>;
6
+ labelId?: string;
6
7
  setEditValues: React.Dispatch<React.SetStateAction<DatasourceTypeWithOnlyValues>>;
7
8
  }
8
9
  declare const TextEditType: (props: TextEditTypeProps) => JSX.Element;
@@ -4,6 +4,7 @@ import type { ExecuteFetch } from '../../../../state/actions';
4
4
  import type { DatasourceTypeWithOnlyTypeValues, DatasourceTypeWithOnlyValues } from '../../types';
5
5
  interface UserEditTypeProps extends Omit<FieldProps<string>, 'value'> {
6
6
  currentValue: DatasourceTypeWithOnlyTypeValues<'user'>;
7
+ labelId?: string;
7
8
  setEditValues: React.Dispatch<React.SetStateAction<DatasourceTypeWithOnlyValues>>;
8
9
  executeFetch?: ExecuteFetch;
9
10
  }
@@ -4,11 +4,12 @@ import { type TableViewPropsRenderType } from '../types';
4
4
  interface TableCellContentProps {
5
5
  id: string;
6
6
  columnKey: string;
7
+ columnTitle: string;
7
8
  columnType: DatasourceType['type'];
8
9
  /** Used to retrieve cell content from the store */
9
10
  renderItem: TableViewPropsRenderType;
10
11
  wrappedColumnKeys: string[] | undefined;
11
12
  }
12
13
  export declare const ReadOnlyCell: ({ id, columnType, wrappedColumnKeys, renderItem, columnKey, }: TableCellContentProps) => JSX.Element | null;
13
- export declare const TableCellContent: ({ id, columnKey, columnType, renderItem, wrappedColumnKeys, }: TableCellContentProps) => JSX.Element;
14
+ export declare const TableCellContent: ({ id, columnKey, columnTitle, columnType, renderItem, wrappedColumnKeys, }: TableCellContentProps) => JSX.Element;
14
15
  export {};
@@ -5,10 +5,11 @@ export declare const InlineEditUFOExperience = "inline-edit-rendered";
5
5
  interface InlineEditProps {
6
6
  ari: string;
7
7
  columnKey: string;
8
+ columnTitle: string;
8
9
  readView: React.ReactNode;
9
10
  datasourceTypeWithValues: DatasourceTypeWithOnlyValues;
10
11
  execute: (value: string | number) => Promise<AtomicActionExecuteResponse>;
11
12
  executeFetch?: <E>(inputs: any) => Promise<E>;
12
13
  }
13
- export declare const InlineEdit: ({ ari, execute, executeFetch, readView, columnKey, datasourceTypeWithValues, }: InlineEditProps) => JSX.Element;
14
+ export declare const InlineEdit: ({ ari, execute, executeFetch, readView, columnKey, columnTitle, datasourceTypeWithValues, }: InlineEditProps) => JSX.Element;
14
15
  export {};
@@ -0,0 +1,7 @@
1
+ export declare const tableCellMessages: {
2
+ editButtonLabel: {
3
+ id: string;
4
+ description: string;
5
+ defaultMessage: string;
6
+ };
7
+ };