@atlaskit/editor-plugin-type-ahead 2.0.4 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -0
- package/dist/cjs/ui/TypeAheadList.js +27 -9
- package/dist/cjs/ui/TypeAheadMenu.js +8 -2
- package/dist/cjs/ui/TypeAheadPopup.js +33 -4
- package/dist/cjs/ui/ViewMore.js +42 -0
- package/dist/cjs/ui/modern/TypeAheadPopup.js +38 -10
- package/dist/es2019/ui/TypeAheadList.js +27 -9
- package/dist/es2019/ui/TypeAheadMenu.js +9 -3
- package/dist/es2019/ui/TypeAheadPopup.js +33 -4
- package/dist/es2019/ui/ViewMore.js +36 -0
- package/dist/es2019/ui/modern/TypeAheadPopup.js +45 -15
- package/dist/esm/ui/TypeAheadList.js +27 -9
- package/dist/esm/ui/TypeAheadMenu.js +9 -3
- package/dist/esm/ui/TypeAheadPopup.js +33 -4
- package/dist/esm/ui/ViewMore.js +34 -0
- package/dist/esm/ui/modern/TypeAheadPopup.js +42 -13
- package/dist/types/ui/TypeAheadList.d.ts +2 -0
- package/dist/types/ui/TypeAheadPopup.d.ts +1 -0
- package/dist/types/ui/ViewMore.d.ts +8 -0
- package/dist/types-ts4.5/ui/TypeAheadList.d.ts +2 -0
- package/dist/types-ts4.5/ui/TypeAheadPopup.d.ts +1 -0
- package/dist/types-ts4.5/ui/ViewMore.d.ts +8 -0
- package/package.json +6 -6
- package/dist/cjs/ui/modern/ViewAllButton.js +0 -76
- package/dist/es2019/ui/modern/ViewAllButton.js +0 -66
- package/dist/esm/ui/modern/ViewAllButton.js +0 -66
- package/dist/types/ui/modern/ViewAllButton.d.ts +0 -13
- package/dist/types-ts4.5/ui/modern/ViewAllButton.d.ts +0 -13
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# @atlaskit/editor-plugin-type-ahead
|
|
2
2
|
|
|
3
|
+
## 2.1.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#120472](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/120472)
|
|
8
|
+
[`73c800ab5f2fc`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/73c800ab5f2fc) -
|
|
9
|
+
ED-26766 update adf-schema from 47.2.1 to 47.6.0 and adf-schema-json from 1.27.0 to 1.31.0
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [#121073](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/121073)
|
|
14
|
+
[`9c197731fcbf8`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/9c197731fcbf8) -
|
|
15
|
+
[ux] [ED-26824] When platform_editor_controls is enabled, add 'View more' button to quick
|
|
16
|
+
insertpopup to open element browser modal
|
|
17
|
+
- Updated dependencies
|
|
18
|
+
|
|
19
|
+
## 2.0.5
|
|
20
|
+
|
|
21
|
+
### Patch Changes
|
|
22
|
+
|
|
23
|
+
- [#121049](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/121049)
|
|
24
|
+
[`0c8ca53dace33`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/0c8ca53dace33) -
|
|
25
|
+
[ux] Uses ViewAllButtonItem from the editor-element-browser package instead of custom Pressable
|
|
26
|
+
button
|
|
27
|
+
|
|
3
28
|
## 2.0.4
|
|
4
29
|
|
|
5
30
|
### Patch Changes
|
|
@@ -12,8 +12,10 @@ var _react2 = require("@emotion/react");
|
|
|
12
12
|
var _reactIntlNext = require("react-intl-next");
|
|
13
13
|
var _CellMeasurer = require("react-virtualized/dist/commonjs/CellMeasurer");
|
|
14
14
|
var _List = require("react-virtualized/dist/commonjs/List");
|
|
15
|
+
var _messages = require("@atlaskit/editor-common/messages");
|
|
15
16
|
var _typeAhead = require("@atlaskit/editor-common/type-ahead");
|
|
16
17
|
var _menu = require("@atlaskit/menu");
|
|
18
|
+
var _primitives = require("@atlaskit/primitives");
|
|
17
19
|
var _updateSelectedIndex = require("../pm-plugins/commands/update-selected-index");
|
|
18
20
|
var _constants = require("../pm-plugins/constants");
|
|
19
21
|
var _utils = require("../pm-plugins/utils");
|
|
@@ -60,7 +62,8 @@ var TypeAheadListComponent = /*#__PURE__*/_react.default.memo(function (_ref2) {
|
|
|
60
62
|
decorationElement = _ref2.decorationElement,
|
|
61
63
|
triggerHandler = _ref2.triggerHandler,
|
|
62
64
|
moreElementsInQuickInsertViewEnabled = _ref2.moreElementsInQuickInsertViewEnabled,
|
|
63
|
-
api = _ref2.api
|
|
65
|
+
api = _ref2.api,
|
|
66
|
+
showViewMore = _ref2.showViewMore;
|
|
64
67
|
var listRef = (0, _react.useRef)();
|
|
65
68
|
var listContainerRef = (0, _react.useRef)(null);
|
|
66
69
|
var lastVisibleIndexes = (0, _react.useRef)({
|
|
@@ -287,13 +290,21 @@ var TypeAheadListComponent = /*#__PURE__*/_react.default.memo(function (_ref2) {
|
|
|
287
290
|
return null;
|
|
288
291
|
}
|
|
289
292
|
var menuGroupId = ((_decorationElement$qu2 = decorationElement.querySelector("[role='combobox']")) === null || _decorationElement$qu2 === void 0 ? void 0 : _decorationElement$qu2.getAttribute('aria-controls')) || _constants.TYPE_AHEAD_DECORATION_ELEMENT_ID;
|
|
290
|
-
|
|
291
|
-
"
|
|
292
|
-
|
|
293
|
-
}, (0, _react2.jsx)(
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
}, (0, _react2.jsx)(
|
|
293
|
+
var EmptyResultView = (0, _react2.jsx)(_primitives.Box, {
|
|
294
|
+
paddingBlock: "space.150",
|
|
295
|
+
paddingInline: "space.250"
|
|
296
|
+
}, (0, _react2.jsx)(_primitives.Text, {
|
|
297
|
+
align: "center",
|
|
298
|
+
as: "p"
|
|
299
|
+
}, intl.formatMessage(_typeAhead.typeAheadListMessages.emptySearchResults)), (0, _react2.jsx)(_primitives.Text, {
|
|
300
|
+
align: "center",
|
|
301
|
+
as: "p"
|
|
302
|
+
}, intl.formatMessage(_typeAhead.typeAheadListMessages.emptySearchResultsSuggestion, {
|
|
303
|
+
buttonName: (0, _react2.jsx)(_primitives.Text, {
|
|
304
|
+
weight: "medium"
|
|
305
|
+
}, intl.formatMessage(_messages.toolbarInsertBlockMessages.viewMore))
|
|
306
|
+
})));
|
|
307
|
+
var ListContent = (0, _react2.jsx)(_List.List, {
|
|
297
308
|
rowRenderer: renderRow,
|
|
298
309
|
ref: listRef,
|
|
299
310
|
rowCount: items.length,
|
|
@@ -323,7 +334,14 @@ var TypeAheadListComponent = /*#__PURE__*/_react.default.memo(function (_ref2) {
|
|
|
323
334
|
}
|
|
324
335
|
}
|
|
325
336
|
}), moreElementsInQuickInsertViewEnabled && list]
|
|
326
|
-
})
|
|
337
|
+
});
|
|
338
|
+
return (0, _react2.jsx)(_menu.MenuGroup, {
|
|
339
|
+
"aria-label": popupAriaLabel,
|
|
340
|
+
"aria-relevant": "additions removals"
|
|
341
|
+
}, (0, _react2.jsx)("div", {
|
|
342
|
+
id: menuGroupId,
|
|
343
|
+
ref: listContainerRef
|
|
344
|
+
}, !showViewMore || items.length ? ListContent : EmptyResultView, (0, _react2.jsx)(TypeaheadAssistiveTextPureComponent, {
|
|
327
345
|
numberOfResults: items.length.toString()
|
|
328
346
|
})));
|
|
329
347
|
});
|
|
@@ -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 _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
|
|
11
12
|
var _updateSelectedIndex = require("../pm-plugins/commands/update-selected-index");
|
|
12
13
|
var _useItemInsert3 = require("./hooks/use-item-insert");
|
|
13
14
|
var _TypeAheadPopup = require("./TypeAheadPopup");
|
|
@@ -77,7 +78,11 @@ var TypeAheadMenu = exports.TypeAheadMenu = /*#__PURE__*/_react.default.memo(fun
|
|
|
77
78
|
return;
|
|
78
79
|
}
|
|
79
80
|
}, [isOpen, query, onItemMatch]);
|
|
80
|
-
|
|
81
|
+
|
|
82
|
+
// @ts-ignore
|
|
83
|
+
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) {
|
|
81
86
|
return null;
|
|
82
87
|
}
|
|
83
88
|
return /*#__PURE__*/_react.default.createElement(_TypeAheadPopup.TypeAheadPopup, {
|
|
@@ -95,6 +100,7 @@ var TypeAheadMenu = exports.TypeAheadMenu = /*#__PURE__*/_react.default.memo(fun
|
|
|
95
100
|
decorationSet: decorationSet,
|
|
96
101
|
isEmptyQuery: !query,
|
|
97
102
|
cancel: cancel,
|
|
98
|
-
api: api
|
|
103
|
+
api: api,
|
|
104
|
+
showViewMore: showViewMore
|
|
99
105
|
});
|
|
100
106
|
});
|
|
@@ -20,6 +20,7 @@ var _colors = require("@atlaskit/theme/colors");
|
|
|
20
20
|
var _constants = require("../pm-plugins/constants");
|
|
21
21
|
var _TypeAheadErrorFallback = require("./TypeAheadErrorFallback");
|
|
22
22
|
var _TypeAheadList = require("./TypeAheadList");
|
|
23
|
+
var _ViewMore = require("./ViewMore");
|
|
23
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); }
|
|
24
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; }
|
|
25
26
|
/**
|
|
@@ -30,6 +31,7 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
|
|
|
30
31
|
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
|
|
31
32
|
|
|
32
33
|
var DEFAULT_TYPEAHEAD_MENU_HEIGHT = 380;
|
|
34
|
+
var VIEWMORE_BUTTON_HEIGHT = 53;
|
|
33
35
|
var DEFAULT_TYPEAHEAD_MENU_HEIGHT_NEW = 480;
|
|
34
36
|
var ITEM_PADDING = 12;
|
|
35
37
|
var typeAheadContent = (0, _react2.css)({
|
|
@@ -46,6 +48,10 @@ var typeAheadContent = (0, _react2.css)({
|
|
|
46
48
|
var typeAheadContentOverride = (0, _react2.css)({
|
|
47
49
|
maxHeight: "".concat(DEFAULT_TYPEAHEAD_MENU_HEIGHT_NEW, "px")
|
|
48
50
|
});
|
|
51
|
+
var typeAheadWrapperWithViewMoreOverride = (0, _react2.css)({
|
|
52
|
+
display: 'flex',
|
|
53
|
+
flexDirection: 'column'
|
|
54
|
+
});
|
|
49
55
|
var Highlight = function Highlight(_ref) {
|
|
50
56
|
var state = _ref.state,
|
|
51
57
|
triggerHandler = _ref.triggerHandler;
|
|
@@ -68,7 +74,8 @@ var TypeAheadPopup = exports.TypeAheadPopup = /*#__PURE__*/_react.default.memo(f
|
|
|
68
74
|
onItemInsert = props.onItemInsert,
|
|
69
75
|
isEmptyQuery = props.isEmptyQuery,
|
|
70
76
|
cancel = props.cancel,
|
|
71
|
-
api = props.api
|
|
77
|
+
api = props.api,
|
|
78
|
+
showViewMore = props.showViewMore;
|
|
72
79
|
var ref = (0, _react.useRef)(null);
|
|
73
80
|
var _useSharedPluginState = (0, _hooks.useSharedPluginState)(api, ['featureFlags']),
|
|
74
81
|
featureFlagsState = _useSharedPluginState.featureFlagsState;
|
|
@@ -130,6 +137,12 @@ var TypeAheadPopup = exports.TypeAheadPopup = /*#__PURE__*/_react.default.memo(f
|
|
|
130
137
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
131
138
|
fitHeight = _useState2[0],
|
|
132
139
|
setFitHeight = _useState2[1];
|
|
140
|
+
var fitHeightWithViewMore = (0, _react.useMemo)(function () {
|
|
141
|
+
if (showViewMore) {
|
|
142
|
+
return fitHeight - VIEWMORE_BUTTON_HEIGHT;
|
|
143
|
+
}
|
|
144
|
+
return fitHeight;
|
|
145
|
+
}, [fitHeight, showViewMore]);
|
|
133
146
|
var getFitHeight = (0, _react.useCallback)(function () {
|
|
134
147
|
if (!anchorElement || !popupsMountPoint) {
|
|
135
148
|
return;
|
|
@@ -269,6 +282,19 @@ var TypeAheadPopup = exports.TypeAheadPopup = /*#__PURE__*/_react.default.memo(f
|
|
|
269
282
|
element === null || element === void 0 || element.removeEventListener('keydown', escape);
|
|
270
283
|
};
|
|
271
284
|
}, [ref, cancel]);
|
|
285
|
+
|
|
286
|
+
// @ts-ignore
|
|
287
|
+
var openElementBrowserModal = triggerHandler === null || triggerHandler === void 0 ? void 0 : triggerHandler.openElementBrowserModal;
|
|
288
|
+
var onViewMoreClick = (0, _react.useCallback)(function () {
|
|
289
|
+
// TODO: when clean up, remove config in quick insert plugin
|
|
290
|
+
// platform/packages/editor/editor-plugin-quick-insert/src/quickInsertPlugin.tsx (typeAhead.openElementBrowserModal)
|
|
291
|
+
openElementBrowserModal === null || openElementBrowserModal === void 0 || openElementBrowserModal();
|
|
292
|
+
cancel({
|
|
293
|
+
addPrefixTrigger: false,
|
|
294
|
+
setSelectionAt: _constants.CloseSelectionOptions.AFTER_TEXT_INSERTED,
|
|
295
|
+
forceFocusOnEditor: false
|
|
296
|
+
});
|
|
297
|
+
}, [openElementBrowserModal, cancel]);
|
|
272
298
|
return (0, _react2.jsx)(_ui.Popup, {
|
|
273
299
|
zIndex: _editorSharedStyles.akEditorFloatingDialogZIndex,
|
|
274
300
|
target: anchorElement,
|
|
@@ -281,7 +307,7 @@ var TypeAheadPopup = exports.TypeAheadPopup = /*#__PURE__*/_react.default.memo(f
|
|
|
281
307
|
ariaLabel: null,
|
|
282
308
|
preventOverflow: true
|
|
283
309
|
}, (0, _react2.jsx)("div", {
|
|
284
|
-
css: [typeAheadContent, moreElementsInQuickInsertViewEnabled && typeAheadContentOverride]
|
|
310
|
+
css: [typeAheadContent, moreElementsInQuickInsertViewEnabled && typeAheadContentOverride, showViewMore && typeAheadWrapperWithViewMoreOverride]
|
|
285
311
|
// eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex
|
|
286
312
|
,
|
|
287
313
|
tabIndex: 0
|
|
@@ -296,12 +322,15 @@ var TypeAheadPopup = exports.TypeAheadPopup = /*#__PURE__*/_react.default.memo(f
|
|
|
296
322
|
items: items,
|
|
297
323
|
selectedIndex: selectedIndex,
|
|
298
324
|
onItemClick: onItemInsert,
|
|
299
|
-
fitHeight:
|
|
325
|
+
fitHeight: fitHeightWithViewMore,
|
|
300
326
|
editorView: editorView,
|
|
301
327
|
decorationElement: anchorElement,
|
|
302
328
|
triggerHandler: triggerHandler,
|
|
303
329
|
moreElementsInQuickInsertViewEnabled: moreElementsInQuickInsertViewEnabled,
|
|
304
|
-
api: api
|
|
330
|
+
api: api,
|
|
331
|
+
showViewMore: showViewMore
|
|
332
|
+
}), showViewMore && (0, _react2.jsx)(_ViewMore.ViewMore, {
|
|
333
|
+
onClick: onViewMoreClick
|
|
305
334
|
}))));
|
|
306
335
|
});
|
|
307
336
|
TypeAheadPopup.displayName = 'TypeAheadPopup';
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.ViewMore = void 0;
|
|
8
|
+
var _react = require("@emotion/react");
|
|
9
|
+
var _reactIntlNext = require("react-intl-next");
|
|
10
|
+
var _messages = require("@atlaskit/editor-common/messages");
|
|
11
|
+
var _showMoreHorizontalEditorMore = _interopRequireDefault(require("@atlaskit/icon/core/migration/show-more-horizontal--editor-more"));
|
|
12
|
+
var _menu = require("@atlaskit/menu");
|
|
13
|
+
var _colors = require("@atlaskit/theme/colors");
|
|
14
|
+
/**
|
|
15
|
+
* @jsxRuntime classic
|
|
16
|
+
* @jsx jsx
|
|
17
|
+
*/
|
|
18
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
|
|
19
|
+
|
|
20
|
+
var buttonStyles = (0, _react.css)({
|
|
21
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766
|
|
22
|
+
'& > button:hover': {
|
|
23
|
+
backgroundColor: "var(--ds-background-neutral-subtle-hovered, ".concat(_colors.N30, ")")
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
var ViewMore = exports.ViewMore = function ViewMore(_ref) {
|
|
27
|
+
var onClick = _ref.onClick;
|
|
28
|
+
var _useIntl = (0, _reactIntlNext.useIntl)(),
|
|
29
|
+
formatMessage = _useIntl.formatMessage;
|
|
30
|
+
return (0, _react.jsx)(_menu.Section, {
|
|
31
|
+
hasSeparator: true
|
|
32
|
+
}, (0, _react.jsx)("span", {
|
|
33
|
+
css: buttonStyles
|
|
34
|
+
}, (0, _react.jsx)(_menu.ButtonItem, {
|
|
35
|
+
onClick: onClick,
|
|
36
|
+
iconBefore: (0, _react.jsx)(_showMoreHorizontalEditorMore.default, {
|
|
37
|
+
label: ""
|
|
38
|
+
}),
|
|
39
|
+
"aria-describedby": formatMessage(_messages.toolbarInsertBlockMessages.viewMore),
|
|
40
|
+
"data-testid": "quick-insert-view-more-elements-item"
|
|
41
|
+
}, formatMessage(_messages.toolbarInsertBlockMessages.viewMore))));
|
|
42
|
+
};
|
|
@@ -10,17 +10,20 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
|
|
|
10
10
|
var _react = _interopRequireWildcard(require("react"));
|
|
11
11
|
var _react2 = require("@emotion/react");
|
|
12
12
|
var _rafSchd = _interopRequireDefault(require("raf-schd"));
|
|
13
|
+
var _reactIntlNext = require("react-intl-next");
|
|
13
14
|
var _analytics = require("@atlaskit/editor-common/analytics");
|
|
15
|
+
var _messages = require("@atlaskit/editor-common/messages");
|
|
14
16
|
var _ui = require("@atlaskit/editor-common/ui");
|
|
15
17
|
var _editorElementBrowser = require("@atlaskit/editor-element-browser");
|
|
16
18
|
var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
|
|
19
|
+
var _add = _interopRequireDefault(require("@atlaskit/icon/core/add"));
|
|
17
20
|
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
18
21
|
var _colors = require("@atlaskit/theme/colors");
|
|
19
22
|
var _constants = require("../../pm-plugins/constants");
|
|
20
23
|
var _TypeAheadErrorFallback = require("../TypeAheadErrorFallback");
|
|
21
|
-
var _ViewAllButton = require("./ViewAllButton");
|
|
22
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); }
|
|
23
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; }
|
|
26
|
+
/* eslint-disable @atlaskit/ui-styling-standard/use-compiled */
|
|
24
27
|
/**
|
|
25
28
|
* @jsxRuntime classic
|
|
26
29
|
* @jsx jsx
|
|
@@ -32,6 +35,7 @@ var DEFAULT_TYPEAHEAD_MENU_HEIGHT = 520;
|
|
|
32
35
|
// const DEFAULT_TYPEAHEAD_MENU_HEIGHT_NEW = 480;
|
|
33
36
|
|
|
34
37
|
var ITEM_PADDING = 12;
|
|
38
|
+
var INSERT_PANEL_WIDTH = 320;
|
|
35
39
|
var typeAheadContent = (0, _react2.css)({
|
|
36
40
|
background: "var(--ds-surface-overlay, ".concat(_colors.N0, ")"),
|
|
37
41
|
borderRadius: "var(--ds-border-radius, 3px)",
|
|
@@ -63,6 +67,8 @@ var TypeAheadPopup = exports.TypeAheadPopup = /*#__PURE__*/_react.default.memo(f
|
|
|
63
67
|
query = props.query,
|
|
64
68
|
setSelectedItem = props.setSelectedItem;
|
|
65
69
|
var ref = (0, _react.useRef)(null);
|
|
70
|
+
var _useIntl = (0, _reactIntlNext.useIntl)(),
|
|
71
|
+
formatMessage = _useIntl.formatMessage;
|
|
66
72
|
var defaultMenuHeight = DEFAULT_TYPEAHEAD_MENU_HEIGHT;
|
|
67
73
|
var startTime = (0, _react.useMemo)(function () {
|
|
68
74
|
return performance.now();
|
|
@@ -264,13 +270,39 @@ var TypeAheadPopup = exports.TypeAheadPopup = /*#__PURE__*/_react.default.memo(f
|
|
|
264
270
|
element === null || element === void 0 || element.removeEventListener('keydown', escape);
|
|
265
271
|
};
|
|
266
272
|
}, [ref, cancel]);
|
|
267
|
-
var
|
|
268
|
-
|
|
273
|
+
var handleViewAllItemsClick = (0, _react.useCallback)(function () {
|
|
274
|
+
var _api$contextPanel;
|
|
275
|
+
var showContextPanel = api === null || api === void 0 || (_api$contextPanel = api.contextPanel) === null || _api$contextPanel === void 0 || (_api$contextPanel = _api$contextPanel.actions) === null || _api$contextPanel === void 0 ? void 0 : _api$contextPanel.showPanel;
|
|
276
|
+
if (!showContextPanel || !items) {
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
// Opens main editor controls side panel
|
|
281
|
+
showContextPanel({
|
|
282
|
+
id: 'editor-element-insert-sidebar-panel',
|
|
283
|
+
headerComponentElements: {
|
|
284
|
+
headerLabel: _messages.elementInsertSidePanel.title,
|
|
285
|
+
HeaderIcon: function HeaderIcon() {
|
|
286
|
+
return (0, _react2.jsx)(_add.default, {
|
|
287
|
+
label: formatMessage(_messages.elementInsertSidePanel.title)
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
},
|
|
291
|
+
BodyComponent: function BodyComponent() {
|
|
292
|
+
return (0, _react2.jsx)(_editorElementBrowser.SideInsertPanel, {
|
|
293
|
+
items: items,
|
|
294
|
+
onItemInsert: onItemInsert
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
}, 'push', INSERT_PANEL_WIDTH);
|
|
298
|
+
|
|
299
|
+
// Closes typeahead
|
|
300
|
+
cancel({
|
|
269
301
|
addPrefixTrigger: true,
|
|
270
302
|
setSelectionAt: _constants.CloseSelectionOptions.AFTER_TEXT_INSERTED,
|
|
271
303
|
forceFocusOnEditor: true
|
|
272
304
|
});
|
|
273
|
-
}, [cancel]);
|
|
305
|
+
}, [api, cancel, formatMessage, items, onItemInsert]);
|
|
274
306
|
return (0, _react2.jsx)(_ui.Popup, {
|
|
275
307
|
zIndex: _editorSharedStyles.akEditorFloatingDialogZIndex,
|
|
276
308
|
target: anchorElement,
|
|
@@ -295,12 +327,8 @@ var TypeAheadPopup = exports.TypeAheadPopup = /*#__PURE__*/_react.default.memo(f
|
|
|
295
327
|
items: items,
|
|
296
328
|
onItemInsert: onItemInsert,
|
|
297
329
|
query: query,
|
|
298
|
-
setSelectedItem: setSelectedItem
|
|
299
|
-
|
|
300
|
-
items: items,
|
|
301
|
-
editorApi: api,
|
|
302
|
-
onItemInsert: onItemInsert,
|
|
303
|
-
onPanelOpen: handlePanelOpen
|
|
330
|
+
setSelectedItem: setSelectedItem,
|
|
331
|
+
onViewAllItemsClick: Boolean(api === null || api === void 0 ? void 0 : api.contextPanel) ? handleViewAllItemsClick : undefined
|
|
304
332
|
}))));
|
|
305
333
|
});
|
|
306
334
|
TypeAheadPopup.displayName = 'TypeAheadPopup';
|
|
@@ -10,8 +10,10 @@ import { css, jsx } from '@emotion/react';
|
|
|
10
10
|
import { injectIntl, useIntl } from 'react-intl-next';
|
|
11
11
|
import { CellMeasurer, CellMeasurerCache } from 'react-virtualized/dist/commonjs/CellMeasurer';
|
|
12
12
|
import { List } from 'react-virtualized/dist/commonjs/List';
|
|
13
|
+
import { toolbarInsertBlockMessages as messages } from '@atlaskit/editor-common/messages';
|
|
13
14
|
import { SelectItemMode, typeAheadListMessages } from '@atlaskit/editor-common/type-ahead';
|
|
14
15
|
import { MenuGroup } from '@atlaskit/menu';
|
|
16
|
+
import { Text, Box } from '@atlaskit/primitives';
|
|
15
17
|
import { updateSelectedIndex } from '../pm-plugins/commands/update-selected-index';
|
|
16
18
|
import { TYPE_AHEAD_DECORATION_ELEMENT_ID } from '../pm-plugins/constants';
|
|
17
19
|
import { getTypeAheadListAriaLabels, moveSelectedIndex } from '../pm-plugins/utils';
|
|
@@ -49,7 +51,8 @@ const TypeAheadListComponent = /*#__PURE__*/React.memo(({
|
|
|
49
51
|
decorationElement,
|
|
50
52
|
triggerHandler,
|
|
51
53
|
moreElementsInQuickInsertViewEnabled,
|
|
52
|
-
api
|
|
54
|
+
api,
|
|
55
|
+
showViewMore
|
|
53
56
|
}) => {
|
|
54
57
|
var _decorationElement$qu2;
|
|
55
58
|
const listRef = useRef();
|
|
@@ -266,13 +269,21 @@ const TypeAheadListComponent = /*#__PURE__*/React.memo(({
|
|
|
266
269
|
return null;
|
|
267
270
|
}
|
|
268
271
|
const menuGroupId = ((_decorationElement$qu2 = decorationElement.querySelector(`[role='combobox']`)) === null || _decorationElement$qu2 === void 0 ? void 0 : _decorationElement$qu2.getAttribute('aria-controls')) || TYPE_AHEAD_DECORATION_ELEMENT_ID;
|
|
269
|
-
|
|
270
|
-
"
|
|
271
|
-
|
|
272
|
-
}, jsx(
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
}, jsx(
|
|
272
|
+
const EmptyResultView = jsx(Box, {
|
|
273
|
+
paddingBlock: "space.150",
|
|
274
|
+
paddingInline: "space.250"
|
|
275
|
+
}, jsx(Text, {
|
|
276
|
+
align: "center",
|
|
277
|
+
as: "p"
|
|
278
|
+
}, intl.formatMessage(typeAheadListMessages.emptySearchResults)), jsx(Text, {
|
|
279
|
+
align: "center",
|
|
280
|
+
as: "p"
|
|
281
|
+
}, intl.formatMessage(typeAheadListMessages.emptySearchResultsSuggestion, {
|
|
282
|
+
buttonName: jsx(Text, {
|
|
283
|
+
weight: "medium"
|
|
284
|
+
}, intl.formatMessage(messages.viewMore))
|
|
285
|
+
})));
|
|
286
|
+
const ListContent = jsx(List, {
|
|
276
287
|
rowRenderer: renderRow,
|
|
277
288
|
ref: listRef,
|
|
278
289
|
rowCount: items.length,
|
|
@@ -302,7 +313,14 @@ const TypeAheadListComponent = /*#__PURE__*/React.memo(({
|
|
|
302
313
|
}
|
|
303
314
|
}
|
|
304
315
|
}), moreElementsInQuickInsertViewEnabled && list]
|
|
305
|
-
})
|
|
316
|
+
});
|
|
317
|
+
return jsx(MenuGroup, {
|
|
318
|
+
"aria-label": popupAriaLabel,
|
|
319
|
+
"aria-relevant": "additions removals"
|
|
320
|
+
}, jsx("div", {
|
|
321
|
+
id: menuGroupId,
|
|
322
|
+
ref: listContainerRef
|
|
323
|
+
}, !showViewMore || items.length ? ListContent : EmptyResultView, jsx(TypeaheadAssistiveTextPureComponent, {
|
|
306
324
|
numberOfResults: items.length.toString()
|
|
307
325
|
})));
|
|
308
326
|
});
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { SelectItemMode } from '@atlaskit/editor-common/type-ahead';
|
|
2
|
+
import { SelectItemMode, TypeAheadAvailableNodes } from '@atlaskit/editor-common/type-ahead';
|
|
3
|
+
import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
|
|
3
4
|
import { updateSelectedIndex } from '../pm-plugins/commands/update-selected-index';
|
|
4
5
|
import { useItemInsert } from './hooks/use-item-insert';
|
|
5
6
|
import { TypeAheadPopup } from './TypeAheadPopup';
|
|
@@ -68,7 +69,11 @@ export const TypeAheadMenu = /*#__PURE__*/React.memo(({
|
|
|
68
69
|
return;
|
|
69
70
|
}
|
|
70
71
|
}, [isOpen, query, onItemMatch]);
|
|
71
|
-
|
|
72
|
+
|
|
73
|
+
// @ts-ignore
|
|
74
|
+
const openElementBrowserModal = triggerHandler === null || triggerHandler === void 0 ? void 0 : triggerHandler.openElementBrowserModal;
|
|
75
|
+
const showViewMore = (triggerHandler === null || triggerHandler === void 0 ? void 0 : triggerHandler.id) === TypeAheadAvailableNodes.QUICK_INSERT && !!openElementBrowserModal && editorExperiment('platform_editor_controls', 'variant1');
|
|
76
|
+
if (!isOpen || !triggerHandler || !(decorationElement instanceof HTMLElement) || !showViewMore && items.length === 0 && !errorInfo) {
|
|
72
77
|
return null;
|
|
73
78
|
}
|
|
74
79
|
return /*#__PURE__*/React.createElement(TypeAheadPopup, {
|
|
@@ -86,6 +91,7 @@ export const TypeAheadMenu = /*#__PURE__*/React.memo(({
|
|
|
86
91
|
decorationSet: decorationSet,
|
|
87
92
|
isEmptyQuery: !query,
|
|
88
93
|
cancel: cancel,
|
|
89
|
-
api: api
|
|
94
|
+
api: api,
|
|
95
|
+
showViewMore: showViewMore
|
|
90
96
|
});
|
|
91
97
|
});
|
|
@@ -17,7 +17,9 @@ import { N0, N50A, N60A } from '@atlaskit/theme/colors';
|
|
|
17
17
|
import { CloseSelectionOptions, TYPE_AHEAD_DECORATION_DATA_ATTRIBUTE, TYPE_AHEAD_POPUP_CONTENT_CLASS } from '../pm-plugins/constants';
|
|
18
18
|
import { TypeAheadErrorFallback } from './TypeAheadErrorFallback';
|
|
19
19
|
import { TypeAheadList } from './TypeAheadList';
|
|
20
|
+
import { ViewMore } from './ViewMore';
|
|
20
21
|
const DEFAULT_TYPEAHEAD_MENU_HEIGHT = 380;
|
|
22
|
+
const VIEWMORE_BUTTON_HEIGHT = 53;
|
|
21
23
|
const DEFAULT_TYPEAHEAD_MENU_HEIGHT_NEW = 480;
|
|
22
24
|
const ITEM_PADDING = 12;
|
|
23
25
|
const typeAheadContent = css({
|
|
@@ -34,6 +36,10 @@ const typeAheadContent = css({
|
|
|
34
36
|
const typeAheadContentOverride = css({
|
|
35
37
|
maxHeight: `${DEFAULT_TYPEAHEAD_MENU_HEIGHT_NEW}px`
|
|
36
38
|
});
|
|
39
|
+
const typeAheadWrapperWithViewMoreOverride = css({
|
|
40
|
+
display: 'flex',
|
|
41
|
+
flexDirection: 'column'
|
|
42
|
+
});
|
|
37
43
|
const Highlight = ({
|
|
38
44
|
state,
|
|
39
45
|
triggerHandler
|
|
@@ -58,7 +64,8 @@ export const TypeAheadPopup = /*#__PURE__*/React.memo(props => {
|
|
|
58
64
|
onItemInsert,
|
|
59
65
|
isEmptyQuery,
|
|
60
66
|
cancel,
|
|
61
|
-
api
|
|
67
|
+
api,
|
|
68
|
+
showViewMore
|
|
62
69
|
} = props;
|
|
63
70
|
const ref = useRef(null);
|
|
64
71
|
const {
|
|
@@ -115,6 +122,12 @@ export const TypeAheadPopup = /*#__PURE__*/React.memo(props => {
|
|
|
115
122
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
116
123
|
triggerHandler]);
|
|
117
124
|
const [fitHeight, setFitHeight] = useState(defaultMenuHeight);
|
|
125
|
+
const fitHeightWithViewMore = useMemo(() => {
|
|
126
|
+
if (showViewMore) {
|
|
127
|
+
return fitHeight - VIEWMORE_BUTTON_HEIGHT;
|
|
128
|
+
}
|
|
129
|
+
return fitHeight;
|
|
130
|
+
}, [fitHeight, showViewMore]);
|
|
118
131
|
const getFitHeight = useCallback(() => {
|
|
119
132
|
if (!anchorElement || !popupsMountPoint) {
|
|
120
133
|
return;
|
|
@@ -262,6 +275,19 @@ export const TypeAheadPopup = /*#__PURE__*/React.memo(props => {
|
|
|
262
275
|
element === null || element === void 0 ? void 0 : element.removeEventListener('keydown', escape);
|
|
263
276
|
};
|
|
264
277
|
}, [ref, cancel]);
|
|
278
|
+
|
|
279
|
+
// @ts-ignore
|
|
280
|
+
const openElementBrowserModal = triggerHandler === null || triggerHandler === void 0 ? void 0 : triggerHandler.openElementBrowserModal;
|
|
281
|
+
const onViewMoreClick = useCallback(() => {
|
|
282
|
+
// TODO: when clean up, remove config in quick insert plugin
|
|
283
|
+
// platform/packages/editor/editor-plugin-quick-insert/src/quickInsertPlugin.tsx (typeAhead.openElementBrowserModal)
|
|
284
|
+
openElementBrowserModal === null || openElementBrowserModal === void 0 ? void 0 : openElementBrowserModal();
|
|
285
|
+
cancel({
|
|
286
|
+
addPrefixTrigger: false,
|
|
287
|
+
setSelectionAt: CloseSelectionOptions.AFTER_TEXT_INSERTED,
|
|
288
|
+
forceFocusOnEditor: false
|
|
289
|
+
});
|
|
290
|
+
}, [openElementBrowserModal, cancel]);
|
|
265
291
|
return jsx(Popup, {
|
|
266
292
|
zIndex: akEditorFloatingDialogZIndex,
|
|
267
293
|
target: anchorElement,
|
|
@@ -274,7 +300,7 @@ export const TypeAheadPopup = /*#__PURE__*/React.memo(props => {
|
|
|
274
300
|
ariaLabel: null,
|
|
275
301
|
preventOverflow: true
|
|
276
302
|
}, jsx("div", {
|
|
277
|
-
css: [typeAheadContent, moreElementsInQuickInsertViewEnabled && typeAheadContentOverride]
|
|
303
|
+
css: [typeAheadContent, moreElementsInQuickInsertViewEnabled && typeAheadContentOverride, showViewMore && typeAheadWrapperWithViewMoreOverride]
|
|
278
304
|
// eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex
|
|
279
305
|
,
|
|
280
306
|
tabIndex: 0
|
|
@@ -289,12 +315,15 @@ export const TypeAheadPopup = /*#__PURE__*/React.memo(props => {
|
|
|
289
315
|
items: items,
|
|
290
316
|
selectedIndex: selectedIndex,
|
|
291
317
|
onItemClick: onItemInsert,
|
|
292
|
-
fitHeight:
|
|
318
|
+
fitHeight: fitHeightWithViewMore,
|
|
293
319
|
editorView: editorView,
|
|
294
320
|
decorationElement: anchorElement,
|
|
295
321
|
triggerHandler: triggerHandler,
|
|
296
322
|
moreElementsInQuickInsertViewEnabled: moreElementsInQuickInsertViewEnabled,
|
|
297
|
-
api: api
|
|
323
|
+
api: api,
|
|
324
|
+
showViewMore: showViewMore
|
|
325
|
+
}), showViewMore && jsx(ViewMore, {
|
|
326
|
+
onClick: onViewMoreClick
|
|
298
327
|
}))));
|
|
299
328
|
});
|
|
300
329
|
TypeAheadPopup.displayName = 'TypeAheadPopup';
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @jsxRuntime classic
|
|
3
|
+
* @jsx jsx
|
|
4
|
+
*/
|
|
5
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
|
|
6
|
+
import { css, jsx } from '@emotion/react';
|
|
7
|
+
import { useIntl } from 'react-intl-next';
|
|
8
|
+
import { toolbarInsertBlockMessages as messages } from '@atlaskit/editor-common/messages';
|
|
9
|
+
import ShowMoreHorizontalIcon from '@atlaskit/icon/core/migration/show-more-horizontal--editor-more';
|
|
10
|
+
import { ButtonItem, Section } from '@atlaskit/menu';
|
|
11
|
+
import { N30 } from '@atlaskit/theme/colors';
|
|
12
|
+
const buttonStyles = css({
|
|
13
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766
|
|
14
|
+
'& > button:hover': {
|
|
15
|
+
backgroundColor: `var(--ds-background-neutral-subtle-hovered, ${N30})`
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
export const ViewMore = ({
|
|
19
|
+
onClick
|
|
20
|
+
}) => {
|
|
21
|
+
const {
|
|
22
|
+
formatMessage
|
|
23
|
+
} = useIntl();
|
|
24
|
+
return jsx(Section, {
|
|
25
|
+
hasSeparator: true
|
|
26
|
+
}, jsx("span", {
|
|
27
|
+
css: buttonStyles
|
|
28
|
+
}, jsx(ButtonItem, {
|
|
29
|
+
onClick: onClick,
|
|
30
|
+
iconBefore: jsx(ShowMoreHorizontalIcon, {
|
|
31
|
+
label: ""
|
|
32
|
+
}),
|
|
33
|
+
"aria-describedby": formatMessage(messages.viewMore),
|
|
34
|
+
"data-testid": "quick-insert-view-more-elements-item"
|
|
35
|
+
}, formatMessage(messages.viewMore))));
|
|
36
|
+
};
|