@atlaskit/mention 24.2.18 → 24.3.1
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 +14 -0
- package/dist/cjs/components/MentionItem/index.js +12 -4
- package/dist/cjs/components/MentionList/index.js +60 -21
- package/dist/cjs/components/MentionPicker/index.js +2 -2
- package/dist/cjs/components/Popup/index.js +81 -23
- package/dist/cjs/components/Scrollable/index.js +14 -1
- package/dist/cjs/util/analytics.js +1 -1
- package/dist/es2019/components/MentionItem/index.js +11 -3
- package/dist/es2019/components/MentionList/index.js +54 -21
- package/dist/es2019/components/MentionPicker/index.js +2 -2
- package/dist/es2019/components/Popup/index.js +77 -21
- package/dist/es2019/components/Scrollable/index.js +14 -1
- package/dist/es2019/util/analytics.js +1 -1
- package/dist/esm/components/MentionItem/index.js +11 -3
- package/dist/esm/components/MentionList/index.js +58 -21
- package/dist/esm/components/MentionPicker/index.js +2 -2
- package/dist/esm/components/Popup/index.js +79 -23
- package/dist/esm/components/Scrollable/index.js +14 -1
- package/dist/esm/util/analytics.js +1 -1
- package/dist/types/components/MentionItem/index.d.ts +2 -0
- package/dist/types/components/MentionList/index.d.ts +3 -0
- package/dist/types/components/MentionPicker/index.d.ts +1 -1
- package/dist/types/components/Popup/index.d.ts +4 -1
- package/dist/types/components/Scrollable/index.d.ts +1 -0
- package/dist/types-ts4.5/components/MentionItem/index.d.ts +2 -0
- package/dist/types-ts4.5/components/MentionList/index.d.ts +3 -0
- package/dist/types-ts4.5/components/MentionPicker/index.d.ts +1 -1
- package/dist/types-ts4.5/components/Popup/index.d.ts +4 -1
- package/dist/types-ts4.5/components/Scrollable/index.d.ts +1 -0
- package/package.json +9 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# @atlaskit/mention
|
|
2
2
|
|
|
3
|
+
## 24.3.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies
|
|
8
|
+
|
|
9
|
+
## 24.3.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- [`af63bbf99740e`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/af63bbf99740e) -
|
|
14
|
+
Migrate deprecated react-dom APIs to React 19 compatible: findDOMNode and unmountComponentAtNode
|
|
15
|
+
behind FG(mentions-migrate-react-dom)
|
|
16
|
+
|
|
3
17
|
## 24.2.18
|
|
4
18
|
|
|
5
19
|
### Patch Changes
|
|
@@ -10,7 +10,8 @@ Object.defineProperty(exports, "MENTION_ITEM_HEIGHT", {
|
|
|
10
10
|
return _styles.MENTION_ITEM_HEIGHT;
|
|
11
11
|
}
|
|
12
12
|
});
|
|
13
|
-
exports.default = void 0;
|
|
13
|
+
exports.default = exports.MentionItemWithRef = void 0;
|
|
14
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
14
15
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
16
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
16
17
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
@@ -88,7 +89,8 @@ var MentionItem = exports.default = /*#__PURE__*/function (_React$PureComponent)
|
|
|
88
89
|
value: function render() {
|
|
89
90
|
var _this$props = this.props,
|
|
90
91
|
mention = _this$props.mention,
|
|
91
|
-
selected = _this$props.selected
|
|
92
|
+
selected = _this$props.selected,
|
|
93
|
+
forwardedRef = _this$props.forwardedRef;
|
|
92
94
|
var id = mention.id,
|
|
93
95
|
highlight = mention.highlight,
|
|
94
96
|
avatarUrl = mention.avatarUrl,
|
|
@@ -114,7 +116,8 @@ var MentionItem = exports.default = /*#__PURE__*/function (_React$PureComponent)
|
|
|
114
116
|
"data-testid": "mention-item-".concat(id),
|
|
115
117
|
"data-mention-id": id,
|
|
116
118
|
"data-mention-name": mentionName,
|
|
117
|
-
"data-selected": selected
|
|
119
|
+
"data-selected": selected,
|
|
120
|
+
ref: forwardedRef
|
|
118
121
|
}, /*#__PURE__*/_react.default.createElement(_styles.RowStyle, null, /*#__PURE__*/_react.default.createElement(_styles.AvatarStyle, {
|
|
119
122
|
restricted: restricted
|
|
120
123
|
}, (0, _platformFeatureFlags.fg)('team-avatar-in-mention-picker') ? /*#__PURE__*/_react.default.createElement(_MentionAvatar.MentionAvatar, {
|
|
@@ -145,4 +148,9 @@ var MentionItem = exports.default = /*#__PURE__*/function (_React$PureComponent)
|
|
|
145
148
|
}))));
|
|
146
149
|
}
|
|
147
150
|
}]);
|
|
148
|
-
}(_react.default.PureComponent);
|
|
151
|
+
}(_react.default.PureComponent);
|
|
152
|
+
var MentionItemWithRef = exports.MentionItemWithRef = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
153
|
+
return /*#__PURE__*/_react.default.createElement(MentionItem, (0, _extends2.default)({}, props, {
|
|
154
|
+
forwardedRef: ref
|
|
155
|
+
}));
|
|
156
|
+
});
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
6
7
|
});
|
|
@@ -12,13 +13,15 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/ge
|
|
|
12
13
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
13
14
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
14
15
|
var _react = _interopRequireDefault(require("react"));
|
|
16
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
15
17
|
var _logger = _interopRequireDefault(require("../../util/logger"));
|
|
16
18
|
var _mouse = require("../../util/mouse");
|
|
17
|
-
var _MentionItem =
|
|
19
|
+
var _MentionItem = _interopRequireWildcard(require("../MentionItem"));
|
|
18
20
|
var _MentionListError = _interopRequireDefault(require("../MentionListError"));
|
|
19
21
|
var _MessagesIntlProvider = _interopRequireDefault(require("../MessagesIntlProvider"));
|
|
20
22
|
var _Scrollable = _interopRequireDefault(require("../Scrollable"));
|
|
21
23
|
var _styles = require("./styles");
|
|
24
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
22
25
|
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
|
|
23
26
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
24
27
|
function wrapIndex(mentions, index) {
|
|
@@ -109,11 +112,24 @@ var MentionList = exports.default = /*#__PURE__*/function (_React$PureComponent)
|
|
|
109
112
|
(0, _defineProperty2.default)(_this, "handleScrollableRef", function (ref) {
|
|
110
113
|
_this.scrollable = ref;
|
|
111
114
|
});
|
|
115
|
+
_this.itemsRefs = new Map();
|
|
112
116
|
_this.setDefaultSelectionState();
|
|
113
117
|
return _this;
|
|
114
118
|
}
|
|
115
119
|
(0, _inherits2.default)(MentionList, _React$PureComponent);
|
|
116
120
|
return (0, _createClass2.default)(MentionList, [{
|
|
121
|
+
key: "createItemRef",
|
|
122
|
+
value: function createItemRef(key) {
|
|
123
|
+
var itemRef = /*#__PURE__*/_react.default.createRef();
|
|
124
|
+
this.itemsRefs.set(key, itemRef);
|
|
125
|
+
return itemRef;
|
|
126
|
+
}
|
|
127
|
+
}, {
|
|
128
|
+
key: "getItemRef",
|
|
129
|
+
value: function getItemRef(key) {
|
|
130
|
+
return this.itemsRefs.get(key);
|
|
131
|
+
}
|
|
132
|
+
}, {
|
|
117
133
|
key: "UNSAFE_componentWillReceiveProps",
|
|
118
134
|
value: function UNSAFE_componentWillReceiveProps(nextProps) {
|
|
119
135
|
// adjust selection
|
|
@@ -154,9 +170,16 @@ var MentionList = exports.default = /*#__PURE__*/function (_React$PureComponent)
|
|
|
154
170
|
value:
|
|
155
171
|
// Internal
|
|
156
172
|
function revealItem(key) {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
this.scrollable
|
|
173
|
+
if ((0, _platformFeatureFlags.fg)('mentions-migrate-react-dom')) {
|
|
174
|
+
var itemRef = this.getItemRef(key);
|
|
175
|
+
if (itemRef && this.scrollable) {
|
|
176
|
+
itemRef && this.scrollable.revealRef(itemRef);
|
|
177
|
+
}
|
|
178
|
+
} else {
|
|
179
|
+
var item = this.items[key];
|
|
180
|
+
if (item && this.scrollable) {
|
|
181
|
+
this.scrollable.reveal(item);
|
|
182
|
+
}
|
|
160
183
|
}
|
|
161
184
|
}
|
|
162
185
|
|
|
@@ -180,24 +203,40 @@ var MentionList = exports.default = /*#__PURE__*/function (_React$PureComponent)
|
|
|
180
203
|
this.items = {};
|
|
181
204
|
return /*#__PURE__*/_react.default.createElement("div", null, this.props.initialHighlightElement, mentions.map(function (mention, idx) {
|
|
182
205
|
var key = mention.id;
|
|
183
|
-
var
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
206
|
+
var ref = _this2.createItemRef(key);
|
|
207
|
+
if ((0, _platformFeatureFlags.fg)('mentions-migrate-react-dom')) {
|
|
208
|
+
var item = /*#__PURE__*/_react.default.createElement(_MentionItem.MentionItemWithRef, {
|
|
209
|
+
mention: mention,
|
|
210
|
+
selected: _this2.isSelectedMention(mention, idx),
|
|
211
|
+
key: key,
|
|
212
|
+
onMouseMove: _this2.selectIndexOnHover
|
|
213
|
+
/* Cannot use onclick, as onblur will close the element, and prevent
|
|
214
|
+
* onClick from firing.
|
|
215
|
+
*/,
|
|
216
|
+
onSelection: _this2.itemSelected,
|
|
217
|
+
ref: ref
|
|
218
|
+
});
|
|
219
|
+
return item;
|
|
220
|
+
} else {
|
|
221
|
+
var _item = /*#__PURE__*/_react.default.createElement(_MentionItem.default, {
|
|
222
|
+
mention: mention,
|
|
223
|
+
selected: _this2.isSelectedMention(mention, idx),
|
|
224
|
+
key: key,
|
|
225
|
+
onMouseMove: _this2.selectIndexOnHover
|
|
226
|
+
/* Cannot use onclick, as onblur will close the element, and prevent
|
|
227
|
+
* onClick from firing.
|
|
228
|
+
*/,
|
|
229
|
+
onSelection: _this2.itemSelected,
|
|
230
|
+
ref: function ref(_ref) {
|
|
231
|
+
if (_ref) {
|
|
232
|
+
_this2.items[key] = _ref;
|
|
233
|
+
} else {
|
|
234
|
+
delete _this2.items[key];
|
|
235
|
+
}
|
|
197
236
|
}
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
|
|
237
|
+
});
|
|
238
|
+
return _item;
|
|
239
|
+
}
|
|
201
240
|
}));
|
|
202
241
|
}
|
|
203
242
|
return null;
|
|
@@ -11,10 +11,10 @@ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime
|
|
|
11
11
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
12
12
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
13
13
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
14
|
-
var _compiled = require("@atlaskit/primitives/compiled");
|
|
15
|
-
var _withAnalyticsEvents = _interopRequireDefault(require("@atlaskit/analytics-next/withAnalyticsEvents"));
|
|
16
14
|
var _react = _interopRequireDefault(require("react"));
|
|
17
15
|
var _reactIntlNext = require("react-intl-next");
|
|
16
|
+
var _compiled = require("@atlaskit/primitives/compiled");
|
|
17
|
+
var _withAnalyticsEvents = _interopRequireDefault(require("@atlaskit/analytics-next/withAnalyticsEvents"));
|
|
18
18
|
var _analytics = require("../../util/analytics");
|
|
19
19
|
var _id = _interopRequireDefault(require("../../util/id"));
|
|
20
20
|
var _logger = _interopRequireDefault(require("../../util/logger"));
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
6
7
|
});
|
|
@@ -12,24 +13,44 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/ge
|
|
|
12
13
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
13
14
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
14
15
|
var _react = _interopRequireDefault(require("react"));
|
|
15
|
-
var _reactDom =
|
|
16
|
+
var _reactDom = _interopRequireWildcard(require("react-dom"));
|
|
17
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
18
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
19
|
+
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; }
|
|
20
|
+
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; }
|
|
16
21
|
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
|
|
17
22
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
18
23
|
/*
|
|
19
24
|
* Simple implementation of popup while waiting for ak-inline-dialog
|
|
20
25
|
*/
|
|
21
26
|
var Popup = exports.default = /*#__PURE__*/function (_React$PureComponent) {
|
|
22
|
-
function Popup() {
|
|
27
|
+
function Popup(props) {
|
|
28
|
+
var _this;
|
|
23
29
|
(0, _classCallCheck2.default)(this, Popup);
|
|
24
|
-
|
|
30
|
+
_this = _callSuper(this, Popup, [props]);
|
|
31
|
+
_this.portalStyles = {
|
|
32
|
+
position: 'absolute',
|
|
33
|
+
top: null,
|
|
34
|
+
bottom: null,
|
|
35
|
+
left: null,
|
|
36
|
+
zIndex: null
|
|
37
|
+
};
|
|
38
|
+
return _this;
|
|
25
39
|
}
|
|
26
40
|
(0, _inherits2.default)(Popup, _React$PureComponent);
|
|
27
41
|
return (0, _createClass2.default)(Popup, [{
|
|
42
|
+
key: "setPortalStyles",
|
|
43
|
+
value: function setPortalStyles(styles) {
|
|
44
|
+
this.portalStyles = _objectSpread(_objectSpread({}, this.portalStyles), styles);
|
|
45
|
+
}
|
|
46
|
+
}, {
|
|
28
47
|
key: "componentDidMount",
|
|
29
48
|
value: function componentDidMount() {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
49
|
+
if (!(0, _platformFeatureFlags.fg)('mentions-migrate-react-dom')) {
|
|
50
|
+
this.popup = document.createElement('div');
|
|
51
|
+
document.body.appendChild(this.popup);
|
|
52
|
+
this.popup.style.position = 'absolute';
|
|
53
|
+
}
|
|
33
54
|
this._applyAbsolutePosition();
|
|
34
55
|
this._renderContent();
|
|
35
56
|
}
|
|
@@ -41,9 +62,11 @@ var Popup = exports.default = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
41
62
|
}, {
|
|
42
63
|
key: "componentWillUnmount",
|
|
43
64
|
value: function componentWillUnmount() {
|
|
44
|
-
if (
|
|
45
|
-
|
|
46
|
-
|
|
65
|
+
if (!(0, _platformFeatureFlags.fg)('mentions-migrate-react-dom')) {
|
|
66
|
+
if (this.popup) {
|
|
67
|
+
_reactDom.default.unmountComponentAtNode(this.popup);
|
|
68
|
+
document.body.removeChild(this.popup);
|
|
69
|
+
}
|
|
47
70
|
}
|
|
48
71
|
}
|
|
49
72
|
}, {
|
|
@@ -54,10 +77,18 @@ var Popup = exports.default = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
54
77
|
var box = targetNode.getBoundingClientRect();
|
|
55
78
|
var top = box.bottom + (this.props.offsetY || 0);
|
|
56
79
|
var left = box.left + (this.props.offsetX || 0);
|
|
57
|
-
if (
|
|
58
|
-
this.
|
|
59
|
-
|
|
60
|
-
|
|
80
|
+
if ((0, _platformFeatureFlags.fg)('mentions-migrate-react-dom')) {
|
|
81
|
+
this.setPortalStyles({
|
|
82
|
+
top: "".concat(top, "px"),
|
|
83
|
+
bottom: '',
|
|
84
|
+
left: "".concat(left, "px")
|
|
85
|
+
});
|
|
86
|
+
} else {
|
|
87
|
+
if (this.popup) {
|
|
88
|
+
this.popup.style.top = "".concat(top, "px");
|
|
89
|
+
this.popup.style.bottom = '';
|
|
90
|
+
this.popup.style.left = "".concat(left, "px");
|
|
91
|
+
}
|
|
61
92
|
}
|
|
62
93
|
}
|
|
63
94
|
}
|
|
@@ -69,10 +100,18 @@ var Popup = exports.default = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
69
100
|
var box = targetNode.getBoundingClientRect();
|
|
70
101
|
var bottom = window.innerHeight - box.top + (this.props.offsetY || 0);
|
|
71
102
|
var left = box.left + (this.props.offsetX || 0);
|
|
72
|
-
if (
|
|
73
|
-
this.
|
|
74
|
-
|
|
75
|
-
|
|
103
|
+
if ((0, _platformFeatureFlags.fg)('mentions-migrate-react-dom')) {
|
|
104
|
+
this.setPortalStyles({
|
|
105
|
+
top: '',
|
|
106
|
+
bottom: "".concat(bottom, "px"),
|
|
107
|
+
left: "".concat(left, "px")
|
|
108
|
+
});
|
|
109
|
+
} else {
|
|
110
|
+
if (this.popup) {
|
|
111
|
+
this.popup.style.top = '';
|
|
112
|
+
this.popup.style.bottom = "".concat(bottom, "px");
|
|
113
|
+
this.popup.style.left = "".concat(left, "px");
|
|
114
|
+
}
|
|
76
115
|
}
|
|
77
116
|
}
|
|
78
117
|
}
|
|
@@ -95,22 +134,41 @@ var Popup = exports.default = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
95
134
|
}
|
|
96
135
|
}
|
|
97
136
|
}
|
|
98
|
-
if (
|
|
99
|
-
|
|
137
|
+
if ((0, _platformFeatureFlags.fg)('mentions-migrate-react-dom')) {
|
|
138
|
+
if (this.props.zIndex) {
|
|
139
|
+
this.setPortalStyles({
|
|
140
|
+
zIndex: this.props.zIndex
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
} else {
|
|
144
|
+
if (this.props.zIndex && this.popup) {
|
|
145
|
+
this.popup.style.zIndex = "".concat(this.props.zIndex);
|
|
146
|
+
}
|
|
100
147
|
}
|
|
101
148
|
}
|
|
102
149
|
}, {
|
|
103
150
|
key: "_renderContent",
|
|
104
151
|
value: function _renderContent() {
|
|
105
|
-
if (
|
|
106
|
-
|
|
152
|
+
if (!(0, _platformFeatureFlags.fg)('mentions-migrate-react-dom')) {
|
|
153
|
+
if (this.popup) {
|
|
154
|
+
_reactDom.default.render(this.props.children, this.popup);
|
|
155
|
+
}
|
|
107
156
|
}
|
|
108
157
|
}
|
|
109
158
|
}, {
|
|
110
159
|
key: "render",
|
|
111
160
|
value: function render() {
|
|
112
|
-
|
|
113
|
-
|
|
161
|
+
if ((0, _platformFeatureFlags.fg)('mentions-migrate-react-dom')) {
|
|
162
|
+
// https://atlassian.design/components/eslint-plugin-ui-styling-standard/migration-guide#dynamic-styles
|
|
163
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop
|
|
164
|
+
var content = /*#__PURE__*/_react.default.createElement("div", {
|
|
165
|
+
style: this.portalStyles
|
|
166
|
+
}, this.props.children);
|
|
167
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/(0, _reactDom.createPortal)(content, document.body));
|
|
168
|
+
} else {
|
|
169
|
+
// Placeholder element for react to render inplace
|
|
170
|
+
/*#__PURE__*/_react.default.createElement("div", null);
|
|
171
|
+
}
|
|
114
172
|
}
|
|
115
173
|
}]);
|
|
116
174
|
}(_react.default.PureComponent);
|
|
@@ -24,7 +24,7 @@ var Scrollable = exports.default = /*#__PURE__*/function (_React$PureComponent)
|
|
|
24
24
|
args[_key] = arguments[_key];
|
|
25
25
|
}
|
|
26
26
|
_this = _callSuper(this, Scrollable, [].concat(args));
|
|
27
|
-
//
|
|
27
|
+
// Cleanup when removing mentions-migrate-react-dom
|
|
28
28
|
(0, _defineProperty2.default)(_this, "reveal", function (child) {
|
|
29
29
|
if (child && _this.scrollableDiv) {
|
|
30
30
|
var childNode = (0, _reactDom.findDOMNode)(child);
|
|
@@ -39,6 +39,19 @@ var Scrollable = exports.default = /*#__PURE__*/function (_React$PureComponent)
|
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
});
|
|
42
|
+
(0, _defineProperty2.default)(_this, "revealRef", function (ref) {
|
|
43
|
+
if (ref && ref.current && _this.scrollableDiv) {
|
|
44
|
+
// Not using Element.scrollIntoView as it scrolls even to top/bottom of view even if
|
|
45
|
+
// already visible
|
|
46
|
+
var scrollableRect = _this.scrollableDiv.getBoundingClientRect();
|
|
47
|
+
var elementRect = ref.current.getBoundingClientRect();
|
|
48
|
+
if (elementRect.top < scrollableRect.top) {
|
|
49
|
+
_this.scrollableDiv.scrollTop += elementRect.top - scrollableRect.top;
|
|
50
|
+
} else if (elementRect.bottom > scrollableRect.bottom) {
|
|
51
|
+
_this.scrollableDiv.scrollTop += elementRect.bottom - scrollableRect.bottom;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
});
|
|
42
55
|
(0, _defineProperty2.default)(_this, "handleRef", function (ref) {
|
|
43
56
|
_this.scrollableDiv = ref;
|
|
44
57
|
});
|
|
@@ -12,7 +12,7 @@ var _types = require("../types");
|
|
|
12
12
|
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; }
|
|
13
13
|
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; }
|
|
14
14
|
var packageName = "@atlaskit/mention";
|
|
15
|
-
var packageVersion = "
|
|
15
|
+
var packageVersion = "0.0.0-development";
|
|
16
16
|
var SLI_EVENT_TYPE = exports.SLI_EVENT_TYPE = 'sli';
|
|
17
17
|
var SMART_EVENT_TYPE = exports.SMART_EVENT_TYPE = 'smart';
|
|
18
18
|
var fireAnalyticsMentionTypeaheadEvent = exports.fireAnalyticsMentionTypeaheadEvent = function fireAnalyticsMentionTypeaheadEvent(props) {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
1
2
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
3
|
import Avatar from '@atlaskit/avatar';
|
|
3
4
|
import Lozenge from '@atlaskit/lozenge';
|
|
@@ -61,7 +62,8 @@ export default class MentionItem extends React.PureComponent {
|
|
|
61
62
|
render() {
|
|
62
63
|
const {
|
|
63
64
|
mention,
|
|
64
|
-
selected
|
|
65
|
+
selected,
|
|
66
|
+
forwardedRef
|
|
65
67
|
} = this.props;
|
|
66
68
|
const {
|
|
67
69
|
id,
|
|
@@ -91,7 +93,8 @@ export default class MentionItem extends React.PureComponent {
|
|
|
91
93
|
"data-testid": `mention-item-${id}`,
|
|
92
94
|
"data-mention-id": id,
|
|
93
95
|
"data-mention-name": mentionName,
|
|
94
|
-
"data-selected": selected
|
|
96
|
+
"data-selected": selected,
|
|
97
|
+
ref: forwardedRef
|
|
95
98
|
}, /*#__PURE__*/React.createElement(RowStyle, null, /*#__PURE__*/React.createElement(AvatarStyle, {
|
|
96
99
|
restricted: restricted
|
|
97
100
|
}, fg('team-avatar-in-mention-picker') ? /*#__PURE__*/React.createElement(MentionAvatar, {
|
|
@@ -119,4 +122,9 @@ export default class MentionItem extends React.PureComponent {
|
|
|
119
122
|
label: ''
|
|
120
123
|
}))));
|
|
121
124
|
}
|
|
122
|
-
}
|
|
125
|
+
}
|
|
126
|
+
export const MentionItemWithRef = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
127
|
+
return /*#__PURE__*/React.createElement(MentionItem, _extends({}, props, {
|
|
128
|
+
forwardedRef: ref
|
|
129
|
+
}));
|
|
130
|
+
});
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
2
|
import React from 'react';
|
|
3
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
3
4
|
import debug from '../../util/logger';
|
|
4
5
|
import { actualMouseMove, mouseLocation } from '../../util/mouse';
|
|
5
|
-
import MentionItem from '../MentionItem';
|
|
6
|
+
import MentionItem, { MentionItemWithRef } from '../MentionItem';
|
|
6
7
|
import MentionListError from '../MentionListError';
|
|
7
8
|
import MessagesIntlProvider from '../MessagesIntlProvider';
|
|
8
9
|
import Scrollable from '../Scrollable';
|
|
@@ -102,8 +103,17 @@ export default class MentionList extends React.PureComponent {
|
|
|
102
103
|
_defineProperty(this, "handleScrollableRef", ref => {
|
|
103
104
|
this.scrollable = ref;
|
|
104
105
|
});
|
|
106
|
+
this.itemsRefs = new Map();
|
|
105
107
|
this.setDefaultSelectionState();
|
|
106
108
|
}
|
|
109
|
+
createItemRef(key) {
|
|
110
|
+
const itemRef = /*#__PURE__*/React.createRef();
|
|
111
|
+
this.itemsRefs.set(key, itemRef);
|
|
112
|
+
return itemRef;
|
|
113
|
+
}
|
|
114
|
+
getItemRef(key) {
|
|
115
|
+
return this.itemsRefs.get(key);
|
|
116
|
+
}
|
|
107
117
|
UNSAFE_componentWillReceiveProps(nextProps) {
|
|
108
118
|
// adjust selection
|
|
109
119
|
const {
|
|
@@ -147,9 +157,16 @@ export default class MentionList extends React.PureComponent {
|
|
|
147
157
|
|
|
148
158
|
// Internal
|
|
149
159
|
revealItem(key) {
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
this.scrollable
|
|
160
|
+
if (fg('mentions-migrate-react-dom')) {
|
|
161
|
+
const itemRef = this.getItemRef(key);
|
|
162
|
+
if (itemRef && this.scrollable) {
|
|
163
|
+
itemRef && this.scrollable.revealRef(itemRef);
|
|
164
|
+
}
|
|
165
|
+
} else {
|
|
166
|
+
const item = this.items[key];
|
|
167
|
+
if (item && this.scrollable) {
|
|
168
|
+
this.scrollable.reveal(item);
|
|
169
|
+
}
|
|
153
170
|
}
|
|
154
171
|
}
|
|
155
172
|
|
|
@@ -170,24 +187,40 @@ export default class MentionList extends React.PureComponent {
|
|
|
170
187
|
this.items = {};
|
|
171
188
|
return /*#__PURE__*/React.createElement("div", null, this.props.initialHighlightElement, mentions.map((mention, idx) => {
|
|
172
189
|
const key = mention.id;
|
|
173
|
-
const
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
190
|
+
const ref = this.createItemRef(key);
|
|
191
|
+
if (fg('mentions-migrate-react-dom')) {
|
|
192
|
+
const item = /*#__PURE__*/React.createElement(MentionItemWithRef, {
|
|
193
|
+
mention: mention,
|
|
194
|
+
selected: this.isSelectedMention(mention, idx),
|
|
195
|
+
key: key,
|
|
196
|
+
onMouseMove: this.selectIndexOnHover
|
|
197
|
+
/* Cannot use onclick, as onblur will close the element, and prevent
|
|
198
|
+
* onClick from firing.
|
|
199
|
+
*/,
|
|
200
|
+
onSelection: this.itemSelected,
|
|
201
|
+
ref: ref
|
|
202
|
+
});
|
|
203
|
+
return item;
|
|
204
|
+
} else {
|
|
205
|
+
const item = /*#__PURE__*/React.createElement(MentionItem, {
|
|
206
|
+
mention: mention,
|
|
207
|
+
selected: this.isSelectedMention(mention, idx),
|
|
208
|
+
key: key,
|
|
209
|
+
onMouseMove: this.selectIndexOnHover
|
|
210
|
+
/* Cannot use onclick, as onblur will close the element, and prevent
|
|
211
|
+
* onClick from firing.
|
|
212
|
+
*/,
|
|
213
|
+
onSelection: this.itemSelected,
|
|
214
|
+
ref: ref => {
|
|
215
|
+
if (ref) {
|
|
216
|
+
this.items[key] = ref;
|
|
217
|
+
} else {
|
|
218
|
+
delete this.items[key];
|
|
219
|
+
}
|
|
187
220
|
}
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
|
|
221
|
+
});
|
|
222
|
+
return item;
|
|
223
|
+
}
|
|
191
224
|
}));
|
|
192
225
|
}
|
|
193
226
|
return null;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
-
import { Text } from '@atlaskit/primitives/compiled';
|
|
3
|
-
import withAnalyticsEvents from '@atlaskit/analytics-next/withAnalyticsEvents';
|
|
4
2
|
import React from 'react';
|
|
5
3
|
import { IntlProvider, injectIntl } from 'react-intl-next';
|
|
4
|
+
import { Text } from '@atlaskit/primitives/compiled';
|
|
5
|
+
import withAnalyticsEvents from '@atlaskit/analytics-next/withAnalyticsEvents';
|
|
6
6
|
import { fireAnalyticsMentionTypeaheadEvent } from '../../util/analytics';
|
|
7
7
|
import uniqueId from '../../util/id';
|
|
8
8
|
import debug from '../../util/logger';
|