@atlaskit/editor-plugin-type-ahead 2.7.9 → 2.7.11

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 CHANGED
@@ -1,5 +1,21 @@
1
1
  # @atlaskit/editor-plugin-type-ahead
2
2
 
3
+ ## 2.7.11
4
+
5
+ ### Patch Changes
6
+
7
+ - [#164625](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/164625)
8
+ [`aac10c2d4c08d`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/aac10c2d4c08d) -
9
+ [ED-26900] Add a new config, getMoreOptionsButtonConfig, to TypeAheadHandler so that it can
10
+ support adding a more option button to typeahead list
11
+ - Updated dependencies
12
+
13
+ ## 2.7.10
14
+
15
+ ### Patch Changes
16
+
17
+ - Updated dependencies
18
+
3
19
  ## 2.7.9
4
20
 
5
21
  ### Patch Changes
@@ -20,8 +20,7 @@ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
20
20
  var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
21
21
  var _constants = require("../pm-plugins/constants");
22
22
  var _utils2 = require("../pm-plugins/utils");
23
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
24
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
23
+ 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); }
25
24
  /**
26
25
  * @jsxRuntime classic
27
26
  * @jsx jsx
@@ -6,8 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.ListRow = ListRow;
8
8
  var _react = _interopRequireWildcard(require("react"));
9
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
10
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
9
+ 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); }
11
10
  /**
12
11
  *
13
12
  * @param root0
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.MoreOptions = void 0;
7
+ var _react = require("react");
8
+ var _react2 = require("@emotion/react");
9
+ var _menu = require("@atlaskit/menu");
10
+ var _colors = require("@atlaskit/theme/colors");
11
+ /**
12
+ * @jsxRuntime classic
13
+ * @jsx jsx
14
+ */
15
+
16
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
17
+
18
+ var buttonStyles = (0, _react2.css)({
19
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766
20
+ '& > button:hover': {
21
+ backgroundColor: "var(--ds-background-neutral-subtle-hovered, ".concat(_colors.N30, ")")
22
+ },
23
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766
24
+ '& > button:focus': {
25
+ backgroundColor: "var(--ds-background-neutral-subtle-hovered, ".concat(_colors.N30, ")")
26
+ }
27
+ });
28
+ var MoreOptions = exports.MoreOptions = function MoreOptions(_ref) {
29
+ var onClick = _ref.onClick,
30
+ isFocused = _ref.isFocused,
31
+ title = _ref.title,
32
+ ariaLabel = _ref.ariaLabel,
33
+ iconBefore = _ref.iconBefore;
34
+ var ref = (0, _react.useRef)(null);
35
+ (0, _react.useEffect)(function () {
36
+ if (isFocused && ref.current) {
37
+ ref.current.focus();
38
+ }
39
+ }, [isFocused]);
40
+ (0, _react.useEffect)(function () {
41
+ if (!ref.current) {
42
+ return;
43
+ }
44
+ var element = ref.current;
45
+ var handleEnter = function handleEnter(e) {
46
+ if (e.key === 'Enter') {
47
+ onClick();
48
+ // Prevent keydown listener in TypeaheadList from handling Enter pressed
49
+ e.stopPropagation();
50
+ } else if (e.key === 'Tab') {
51
+ // TypeaheadList will try to insert selected item on Tab press
52
+ // hence stop propagation to prevent that and treat this as noop
53
+ e.stopPropagation();
54
+ e.preventDefault();
55
+ }
56
+ };
57
+
58
+ // Ignored via go/ees005
59
+ // eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
60
+ element === null || element === void 0 || element.addEventListener('keydown', handleEnter);
61
+ return function () {
62
+ // Ignored via go/ees005
63
+ // eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
64
+ element === null || element === void 0 || element.removeEventListener('keydown', handleEnter);
65
+ };
66
+ });
67
+ return (0, _react2.jsx)(_menu.Section, {
68
+ hasSeparator: true
69
+ }, (0, _react2.jsx)("span", {
70
+ css: buttonStyles
71
+ }, (0, _react2.jsx)(_menu.ButtonItem, {
72
+ ref: ref,
73
+ onClick: onClick,
74
+ iconBefore: iconBefore,
75
+ "aria-label": ariaLabel,
76
+ testId: "type-ahead-more-options-button"
77
+ }, title)));
78
+ };
@@ -17,8 +17,7 @@ var _excluded = ["minHeight"];
17
17
  * @jsx jsx
18
18
  */
19
19
  // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
20
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
21
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
20
+ 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
21
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-exported-styles -- Ignored via go/DSP-18766
23
22
  var minHeightComponentStyles = exports.minHeightComponentStyles = (0, _react2.css)({
24
23
  display: 'flex',
@@ -19,14 +19,15 @@ var _ui = require("@atlaskit/editor-common/ui");
19
19
  var _menu = require("@atlaskit/menu");
20
20
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
21
21
  var _compiled = require("@atlaskit/primitives/compiled");
22
+ var _closeTypeAhead = require("../pm-plugins/commands/close-type-ahead");
22
23
  var _updateSelectedIndex = require("../pm-plugins/commands/update-selected-index");
23
24
  var _constants = require("../pm-plugins/constants");
24
25
  var _utils = require("../pm-plugins/utils");
25
26
  var _ListRow = require("./ListRow");
27
+ var _MoreOptions = require("./MoreOptions");
26
28
  var _TypeAheadListItem = require("./TypeAheadListItem");
27
29
  var _ViewMore = require("./ViewMore");
28
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
29
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
30
+ 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); }
30
31
  /**
31
32
  * @jsxRuntime classic
32
33
  * @jsx jsx
@@ -56,7 +57,7 @@ var TypeaheadAssistiveTextPureComponent = /*#__PURE__*/_react.default.memo(funct
56
57
  });
57
58
  });
58
59
  var TypeAheadListComponent = /*#__PURE__*/_react.default.memo(function (_ref2) {
59
- var _decorationElement$qu2;
60
+ var _triggerHandler$getMo, _decorationElement$qu2;
60
61
  var items = _ref2.items,
61
62
  selectedIndex = _ref2.selectedIndex,
62
63
  editorView = _ref2.editorView,
@@ -67,8 +68,8 @@ var TypeAheadListComponent = /*#__PURE__*/_react.default.memo(function (_ref2) {
67
68
  triggerHandler = _ref2.triggerHandler,
68
69
  moreElementsInQuickInsertViewEnabled = _ref2.moreElementsInQuickInsertViewEnabled,
69
70
  api = _ref2.api,
70
- showViewMore = _ref2.showViewMore,
71
- onViewMoreClick = _ref2.onViewMoreClick;
71
+ showMoreOptionsButton = _ref2.showMoreOptionsButton,
72
+ onMoreOptionsClicked = _ref2.onMoreOptionsClicked;
72
73
  var listRef = (0, _react.useRef)();
73
74
  var listContainerRef = (0, _react.useRef)(null);
74
75
  var lastVisibleIndexes = (0, _react.useRef)({
@@ -79,7 +80,7 @@ var TypeAheadListComponent = /*#__PURE__*/_react.default.memo(function (_ref2) {
79
80
  });
80
81
 
81
82
  // Exclude view more item from the count
82
- var itemsLength = showViewMore ? items.length - 1 : items.length;
83
+ var itemsLength = showMoreOptionsButton ? Math.max(items.length - 1, 0) : items.length;
83
84
  var estimatedHeight = itemsLength * LIST_ITEM_ESTIMATED_HEIGHT;
84
85
  var _useState = (0, _react.useState)(Math.min(estimatedHeight, fitHeight)),
85
86
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
@@ -146,7 +147,7 @@ var TypeAheadListComponent = /*#__PURE__*/_react.default.memo(function (_ref2) {
146
147
  // to calculate each height. THen, we can schedule a new frame when this one finishs.
147
148
  requestAnimationFrame(function () {
148
149
  requestAnimationFrame(function () {
149
- var isViewMoreSelected = showViewMore && selectedIndex === itemsLength;
150
+ var isViewMoreSelected = showMoreOptionsButton && selectedIndex === itemsLength;
150
151
  var isSelectedItemVisible = selectedIndex >= lastVisibleStartIndex && selectedIndex <= lastVisibleStopIndex ||
151
152
  // view more is always visible, hence no scrolling
152
153
  isViewMoreSelected;
@@ -159,7 +160,7 @@ var TypeAheadListComponent = /*#__PURE__*/_react.default.memo(function (_ref2) {
159
160
  }
160
161
  });
161
162
  });
162
- }, [selectedIndex, lastVisibleStartIndex, lastVisibleStopIndex, itemsLength, showViewMore]);
163
+ }, [selectedIndex, lastVisibleStartIndex, lastVisibleStopIndex, itemsLength, showMoreOptionsButton]);
163
164
  var _onMouseMove = function onMouseMove(event, index) {
164
165
  event.preventDefault();
165
166
  event.stopPropagation();
@@ -172,7 +173,7 @@ var TypeAheadListComponent = /*#__PURE__*/_react.default.memo(function (_ref2) {
172
173
  if (!listRef.current) {
173
174
  return;
174
175
  }
175
- var isViewMoreSelected = showViewMore && selectedIndex === itemsLength;
176
+ var isViewMoreSelected = showMoreOptionsButton && selectedIndex === itemsLength;
176
177
  var isSelectedItemVisible = selectedIndex >= lastVisibleStartIndex && selectedIndex <= lastVisibleStopIndex ||
177
178
  // view more is always visible, hence no scrolling
178
179
  isViewMoreSelected;
@@ -183,7 +184,7 @@ var TypeAheadListComponent = /*#__PURE__*/_react.default.memo(function (_ref2) {
183
184
  } else if (selectedIndex === -1) {
184
185
  listRef.current.scrollToRow(0);
185
186
  }
186
- }, [selectedIndex, lastVisibleStartIndex, lastVisibleStopIndex, itemsLength, showViewMore]);
187
+ }, [selectedIndex, lastVisibleStartIndex, lastVisibleStopIndex, itemsLength, showMoreOptionsButton]);
187
188
  (0, _react.useLayoutEffect)(function () {
188
189
  setCache(new _CellMeasurer.CellMeasurerCache({
189
190
  fixedWidth: true,
@@ -202,14 +203,14 @@ var TypeAheadListComponent = /*#__PURE__*/_react.default.memo(function (_ref2) {
202
203
  }, [items]);
203
204
  (0, _react.useLayoutEffect)(function () {
204
205
  // Exclude view more item from the count
205
- var itemsToRender = showViewMore ? items.slice(0, -1) : items;
206
+ var itemsToRender = showMoreOptionsButton ? items.slice(0, -1) : items;
206
207
  var height = Math.min(itemsToRender.reduce(function (prevValue, currentValue, index) {
207
208
  return prevValue + cache.rowHeight({
208
209
  index: index
209
210
  });
210
211
  }, 0), fitHeight);
211
212
  setHeight(height);
212
- }, [items, cache, fitHeight, showViewMore]);
213
+ }, [items, cache, fitHeight, showMoreOptionsButton]);
213
214
  (0, _react.useLayoutEffect)(function () {
214
215
  if (!listContainerRef.current) {
215
216
  return;
@@ -269,13 +270,27 @@ var TypeAheadListComponent = /*#__PURE__*/_react.default.memo(function (_ref2) {
269
270
  return item.isDisabledOffline !== true;
270
271
  });
271
272
  }, [items]);
272
- var renderRow = function renderRow(_ref4) {
273
- var index = _ref4.index,
274
- key = _ref4.key,
275
- style = _ref4.style,
276
- parent = _ref4.parent,
277
- isScrolling = _ref4.isScrolling,
278
- isVisible = _ref4.isVisible;
273
+ var config = triggerHandler === null || triggerHandler === void 0 || (_triggerHandler$getMo = triggerHandler.getMoreOptionsButtonConfig) === null || _triggerHandler$getMo === void 0 ? void 0 : _triggerHandler$getMo.call(triggerHandler, intl);
274
+ var handleClick = function handleClick() {
275
+ if (onMoreOptionsClicked) {
276
+ onMoreOptionsClicked();
277
+ }
278
+ api === null || api === void 0 || api.core.actions.execute(function (_ref4) {
279
+ var tr = _ref4.tr;
280
+ (0, _closeTypeAhead.closeTypeAhead)(tr);
281
+ config === null || config === void 0 || config.onClick({
282
+ tr: tr
283
+ });
284
+ return tr;
285
+ });
286
+ };
287
+ var renderRow = function renderRow(_ref5) {
288
+ var index = _ref5.index,
289
+ key = _ref5.key,
290
+ style = _ref5.style,
291
+ parent = _ref5.parent,
292
+ isScrolling = _ref5.isScrolling,
293
+ isVisible = _ref5.isVisible;
279
294
  var currentItem = items[index];
280
295
  return (0, _react2.jsx)(_CellMeasurer.CellMeasurer, {
281
296
  key: key,
@@ -283,9 +298,9 @@ var TypeAheadListComponent = /*#__PURE__*/_react.default.memo(function (_ref2) {
283
298
  parent: parent,
284
299
  columnIndex: 0,
285
300
  rowIndex: index
286
- }, (0, _platformFeatureFlags.fg)('platform_editor_typeahead_dynamic_height_fix') ? function (_ref5) {
287
- var measure = _ref5.measure,
288
- registerChild = _ref5.registerChild;
301
+ }, (0, _platformFeatureFlags.fg)('platform_editor_typeahead_dynamic_height_fix') ? function (_ref6) {
302
+ var measure = _ref6.measure,
303
+ registerChild = _ref6.registerChild;
289
304
  return (0, _react2.jsx)(_ListRow.ListRow, {
290
305
  registerChild: registerChild,
291
306
  measure: measure,
@@ -394,8 +409,14 @@ var TypeAheadListComponent = /*#__PURE__*/_react.default.memo(function (_ref2) {
394
409
  }, (0, _react2.jsx)("div", {
395
410
  id: menuGroupId,
396
411
  ref: listContainerRef
397
- }, !showViewMore || itemsLength ? ListContent : EmptyResultView, showViewMore && onViewMoreClick && (0, _react2.jsx)(_ViewMore.ViewMore, {
398
- onClick: onViewMoreClick,
412
+ }, !showMoreOptionsButton || itemsLength ? ListContent : EmptyResultView, (0, _platformFeatureFlags.fg)('platform_editor_controls_patch_12') ? showMoreOptionsButton && config && (0, _react2.jsx)(_MoreOptions.MoreOptions, {
413
+ title: config.title,
414
+ ariaLabel: config.ariaLabel,
415
+ onClick: handleClick,
416
+ isFocused: selectedIndex === itemsLength,
417
+ iconBefore: config.iconBefore
418
+ }) : showMoreOptionsButton && onMoreOptionsClicked && (0, _react2.jsx)(_ViewMore.ViewMore, {
419
+ onClick: onMoreOptionsClicked,
399
420
  isFocused: selectedIndex === itemsLength
400
421
  }), (0, _react2.jsx)(TypeaheadAssistiveTextPureComponent, {
401
422
  numberOfResults: itemsLength.toString()
@@ -24,8 +24,7 @@ var _templateObject, _templateObject2, _templateObject3, _templateObject4;
24
24
  * @jsx jsx
25
25
  */
26
26
  // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
27
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
28
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
27
+ 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); }
29
28
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-exported-styles -- Ignored via go/DSP-18766
30
29
  var itemIcon = exports.itemIcon = (0, _react2.css)({
31
30
  width: "var(--ds-space-500, 40px)",
@@ -8,6 +8,7 @@ exports.TypeAheadMenu = void 0;
8
8
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
9
  var _react = _interopRequireDefault(require("react"));
10
10
  var _typeAhead = require("@atlaskit/editor-common/type-ahead");
11
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
11
12
  var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
12
13
  var _updateSelectedIndex = require("../pm-plugins/commands/update-selected-index");
13
14
  var _useItemInsert3 = require("./hooks/use-item-insert");
@@ -81,8 +82,15 @@ var TypeAheadMenu = exports.TypeAheadMenu = /*#__PURE__*/_react.default.memo(fun
81
82
 
82
83
  // @ts-ignore
83
84
  var openElementBrowserModal = triggerHandler === null || triggerHandler === void 0 ? void 0 : triggerHandler.openElementBrowserModal;
84
- var showViewMore = (triggerHandler === null || triggerHandler === void 0 ? void 0 : triggerHandler.id) === _typeAhead.TypeAheadAvailableNodes.QUICK_INSERT && !!openElementBrowserModal && (0, _experiments.editorExperiment)('platform_editor_controls', 'variant1');
85
- if (!isOpen || !triggerHandler || !(decorationElement instanceof HTMLElement) || !showViewMore && items.length === 0 && !errorInfo) {
85
+ var showMoreOptionsButton = false;
86
+ if ((0, _experiments.editorExperiment)('platform_editor_controls', 'variant1')) {
87
+ if ((0, _platformFeatureFlags.fg)('platform_editor_controls_patch_12')) {
88
+ showMoreOptionsButton = !!(triggerHandler !== null && triggerHandler !== void 0 && triggerHandler.getMoreOptionsButtonConfig);
89
+ } else {
90
+ showMoreOptionsButton = (triggerHandler === null || triggerHandler === void 0 ? void 0 : triggerHandler.id) === _typeAhead.TypeAheadAvailableNodes.QUICK_INSERT && !!openElementBrowserModal;
91
+ }
92
+ }
93
+ if (!isOpen || !triggerHandler || !(decorationElement instanceof HTMLElement) || !openElementBrowserModal && items.length === 0 && !errorInfo) {
86
94
  return null;
87
95
  }
88
96
  return /*#__PURE__*/_react.default.createElement(_TypeAheadPopup.TypeAheadPopup, {
@@ -101,6 +109,6 @@ var TypeAheadMenu = exports.TypeAheadMenu = /*#__PURE__*/_react.default.memo(fun
101
109
  isEmptyQuery: !query,
102
110
  cancel: cancel,
103
111
  api: api,
104
- showViewMore: showViewMore
112
+ showMoreOptionsButton: showMoreOptionsButton
105
113
  });
106
114
  });
@@ -25,8 +25,7 @@ var _constants = require("../pm-plugins/constants");
25
25
  var _utils = require("../pm-plugins/utils");
26
26
  var _TypeAheadErrorFallback = require("./TypeAheadErrorFallback");
27
27
  var _TypeAheadList = require("./TypeAheadList");
28
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
29
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
28
+ 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); }
30
29
  /**
31
30
  * @jsxRuntime classic
32
31
  * @jsx jsx
@@ -92,7 +91,7 @@ var TypeAheadPopup = exports.TypeAheadPopup = /*#__PURE__*/_react.default.memo(f
92
91
  isEmptyQuery = props.isEmptyQuery,
93
92
  cancel = props.cancel,
94
93
  api = props.api,
95
- showViewMore = props.showViewMore;
94
+ showMoreOptionsButton = props.showMoreOptionsButton;
96
95
  var ref = (0, _react.useRef)(null);
97
96
  var _useSharedState = useSharedState(api),
98
97
  moreElementsInQuickInsertView = _useSharedState.moreElementsInQuickInsertView;
@@ -161,11 +160,11 @@ var TypeAheadPopup = exports.TypeAheadPopup = /*#__PURE__*/_react.default.memo(f
161
160
  fitHeight = _useState2[0],
162
161
  setFitHeight = _useState2[1];
163
162
  var fitHeightWithViewMore = (0, _react.useMemo)(function () {
164
- if (showViewMore) {
163
+ if (showMoreOptionsButton) {
165
164
  return fitHeight - VIEWMORE_BUTTON_HEIGHT;
166
165
  }
167
166
  return fitHeight;
168
- }, [fitHeight, showViewMore]);
167
+ }, [fitHeight, showMoreOptionsButton]);
169
168
  var getFitHeight = (0, _react.useCallback)(function () {
170
169
  if (!anchorElement || !popupsMountPoint) {
171
170
  return;
@@ -314,20 +313,21 @@ var TypeAheadPopup = exports.TypeAheadPopup = /*#__PURE__*/_react.default.memo(f
314
313
  (0, _closeTypeAhead.closeTypeAhead)(tr);
315
314
  editorView.dispatch(tr);
316
315
  };
317
- var onViewMoreClick = (0, _react.useCallback)(function () {
318
- close(editorView);
319
- if (openElementBrowserModal && (0, _experiments.editorExperiment)('platform_editor_controls', 'variant1') && (0, _platformFeatureFlags.fg)('platform_editor_controls_patch_4')) {
316
+ var onMoreOptionsClicked = (0, _react.useCallback)(function () {
317
+ if (
318
+ // eslint-disable-next-line @atlaskit/platform/no-preconditioning
319
+ openElementBrowserModal && (0, _experiments.editorExperiment)('platform_editor_controls', 'variant1') && (0, _platformFeatureFlags.fg)('platform_editor_controls_patch_4') && (!(0, _platformFeatureFlags.fg)('platform_editor_controls_patch_12') || triggerHandler.id === _typeAhead.TypeAheadAvailableNodes.QUICK_INSERT)) {
320
320
  activityStateRef.current = {
321
321
  inputMethod: _analytics.INPUT_METHOD.MOUSE,
322
322
  closeAction: _analytics.ACTION.VIEW_MORE,
323
323
  invocationMethod: activityStateRef.current.invocationMethod
324
324
  };
325
325
  }
326
-
327
- // TODO: ED-26959 - when clean up, remove config in quick insert plugin
328
- // platform/packages/editor/editor-plugin-quick-insert/src/quickInsertPlugin.tsx (typeAhead.openElementBrowserModal)
329
- openElementBrowserModal === null || openElementBrowserModal === void 0 || openElementBrowserModal();
330
- }, [editorView, openElementBrowserModal]);
326
+ if (!(0, _platformFeatureFlags.fg)('platform_editor_controls_patch_12')) {
327
+ close(editorView);
328
+ openElementBrowserModal === null || openElementBrowserModal === void 0 || openElementBrowserModal();
329
+ }
330
+ }, [editorView, openElementBrowserModal, triggerHandler.id]);
331
331
  return (0, _react2.jsx)(_ui.Popup, {
332
332
  zIndex: _editorSharedStyles.akEditorFloatingDialogZIndex,
333
333
  target: anchorElement,
@@ -354,7 +354,7 @@ var TypeAheadPopup = exports.TypeAheadPopup = /*#__PURE__*/_react.default.memo(f
354
354
  }
355
355
  }
356
356
  }, (0, _react2.jsx)("div", {
357
- css: [typeAheadContent, moreElementsInQuickInsertViewEnabled && typeAheadContentOverride, showViewMore && typeAheadWrapperWithViewMoreOverride]
357
+ css: [typeAheadContent, moreElementsInQuickInsertViewEnabled && typeAheadContentOverride, showMoreOptionsButton && typeAheadWrapperWithViewMoreOverride]
358
358
  // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex
359
359
  ,
360
360
  tabIndex: 0
@@ -384,8 +384,8 @@ var TypeAheadPopup = exports.TypeAheadPopup = /*#__PURE__*/_react.default.memo(f
384
384
  triggerHandler: triggerHandler,
385
385
  moreElementsInQuickInsertViewEnabled: moreElementsInQuickInsertViewEnabled,
386
386
  api: api,
387
- showViewMore: showViewMore,
388
- onViewMoreClick: onViewMoreClick
387
+ showMoreOptionsButton: showMoreOptionsButton,
388
+ onMoreOptionsClicked: onMoreOptionsClicked
389
389
  }))));
390
390
  });
391
391
  TypeAheadPopup.displayName = 'TypeAheadPopup';
@@ -20,8 +20,7 @@ var _useItemInsert3 = require("./hooks/use-item-insert");
20
20
  var _useLoadItems = require("./hooks/use-load-items");
21
21
  var _useOnForceSelect = require("./hooks/use-on-force-select");
22
22
  var _InputQuery = require("./InputQuery");
23
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
24
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
23
+ 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); }
25
24
  var WrapperTypeAhead = exports.WrapperTypeAhead = /*#__PURE__*/_react.default.memo(function (_ref) {
26
25
  var triggerHandler = _ref.triggerHandler,
27
26
  editorView = _ref.editorView,
@@ -37,7 +36,14 @@ var WrapperTypeAhead = exports.WrapperTypeAhead = /*#__PURE__*/_react.default.me
37
36
  api = _ref.api;
38
37
  // @ts-ignore
39
38
  var openElementBrowserModal = triggerHandler === null || triggerHandler === void 0 ? void 0 : triggerHandler.openElementBrowserModal;
40
- var showViewMore = (triggerHandler === null || triggerHandler === void 0 ? void 0 : triggerHandler.id) === _typeAhead.TypeAheadAvailableNodes.QUICK_INSERT && !!openElementBrowserModal && (0, _experiments.editorExperiment)('platform_editor_controls', 'variant1');
39
+ var showMoreOptionsButton = false;
40
+ if ((0, _experiments.editorExperiment)('platform_editor_controls', 'variant1')) {
41
+ if ((0, _platformFeatureFlags.fg)('platform_editor_controls_patch_12')) {
42
+ showMoreOptionsButton = !!(triggerHandler !== null && triggerHandler !== void 0 && triggerHandler.getMoreOptionsButtonConfig);
43
+ } else {
44
+ showMoreOptionsButton = (triggerHandler === null || triggerHandler === void 0 ? void 0 : triggerHandler.id) === _typeAhead.TypeAheadAvailableNodes.QUICK_INSERT && !!openElementBrowserModal;
45
+ }
46
+ }
41
47
  var _useState = (0, _react.useState)(false),
42
48
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
43
49
  closed = _useState2[0],
@@ -48,7 +54,7 @@ var WrapperTypeAhead = exports.WrapperTypeAhead = /*#__PURE__*/_react.default.me
48
54
  setQuery = _useState4[1];
49
55
  var queryRef = (0, _react.useRef)(query);
50
56
  var editorViewRef = (0, _react.useRef)(editorView);
51
- var items = (0, _useLoadItems.useLoadItems)(triggerHandler, editorView, query, showViewMore);
57
+ var items = (0, _useLoadItems.useLoadItems)(triggerHandler, editorView, query, showMoreOptionsButton);
52
58
  (0, _react.useEffect)(function () {
53
59
  if (!closed && (0, _platformFeatureFlags.fg)('platform_editor_ease_of_use_metrics')) {
54
60
  var _api$metrics;
@@ -21,8 +21,7 @@ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
21
21
  var _colors = require("@atlaskit/theme/colors");
22
22
  var _constants = require("../../pm-plugins/constants");
23
23
  var _TypeAheadErrorFallback = require("../TypeAheadErrorFallback");
24
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
25
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
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); }
26
25
  /* eslint-disable @atlaskit/ui-styling-standard/use-compiled */
27
26
  /**
28
27
  * @jsxRuntime classic
@@ -0,0 +1,74 @@
1
+ /**
2
+ * @jsxRuntime classic
3
+ * @jsx jsx
4
+ */
5
+ import { useEffect, useRef } from 'react';
6
+
7
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
8
+ import { css, jsx } from '@emotion/react';
9
+ import { ButtonItem, Section } from '@atlaskit/menu';
10
+ import { N30 } from '@atlaskit/theme/colors';
11
+ const buttonStyles = css({
12
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766
13
+ '& > button:hover': {
14
+ backgroundColor: `var(--ds-background-neutral-subtle-hovered, ${N30})`
15
+ },
16
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766
17
+ '& > button:focus': {
18
+ backgroundColor: `var(--ds-background-neutral-subtle-hovered, ${N30})`
19
+ }
20
+ });
21
+ export const MoreOptions = ({
22
+ onClick,
23
+ isFocused,
24
+ title,
25
+ ariaLabel,
26
+ iconBefore
27
+ }) => {
28
+ const ref = useRef(null);
29
+ useEffect(() => {
30
+ if (isFocused && ref.current) {
31
+ ref.current.focus();
32
+ }
33
+ }, [isFocused]);
34
+ useEffect(() => {
35
+ if (!ref.current) {
36
+ return;
37
+ }
38
+ const {
39
+ current: element
40
+ } = ref;
41
+ const handleEnter = e => {
42
+ if (e.key === 'Enter') {
43
+ onClick();
44
+ // Prevent keydown listener in TypeaheadList from handling Enter pressed
45
+ e.stopPropagation();
46
+ } else if (e.key === 'Tab') {
47
+ // TypeaheadList will try to insert selected item on Tab press
48
+ // hence stop propagation to prevent that and treat this as noop
49
+ e.stopPropagation();
50
+ e.preventDefault();
51
+ }
52
+ };
53
+
54
+ // Ignored via go/ees005
55
+ // eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
56
+ element === null || element === void 0 ? void 0 : element.addEventListener('keydown', handleEnter);
57
+ return () => {
58
+ // Ignored via go/ees005
59
+ // eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
60
+ element === null || element === void 0 ? void 0 : element.removeEventListener('keydown', handleEnter);
61
+ };
62
+ });
63
+ return jsx(Section, {
64
+ hasSeparator: true
65
+ }, jsx("span", {
66
+ css: buttonStyles
67
+ }, jsx(ButtonItem, {
68
+ ref: ref,
69
+ onClick: onClick,
70
+ iconBefore: iconBefore,
71
+ "aria-label": ariaLabel,
72
+ testId: "type-ahead-more-options-button"
73
+ }, title)));
74
+ };