@atlaskit/editor-common 78.37.1 → 78.37.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/cjs/element-browser/components/CategoryList.js +89 -8
  3. package/dist/cjs/element-browser/components/ElementList/ElementList.js +30 -4
  4. package/dist/cjs/element-browser/components/StatelessElementBrowser.js +77 -12
  5. package/dist/cjs/element-browser/hooks/use-select-and-focus-on-arrow-navigation.js +38 -4
  6. package/dist/cjs/monitoring/error.js +1 -1
  7. package/dist/cjs/ui/DropList/index.js +1 -1
  8. package/dist/es2019/element-browser/components/CategoryList.js +96 -12
  9. package/dist/es2019/element-browser/components/ElementList/ElementList.js +29 -3
  10. package/dist/es2019/element-browser/components/StatelessElementBrowser.js +78 -13
  11. package/dist/es2019/element-browser/hooks/use-select-and-focus-on-arrow-navigation.js +39 -5
  12. package/dist/es2019/monitoring/error.js +1 -1
  13. package/dist/es2019/ui/DropList/index.js +1 -1
  14. package/dist/esm/element-browser/components/CategoryList.js +89 -9
  15. package/dist/esm/element-browser/components/ElementList/ElementList.js +30 -4
  16. package/dist/esm/element-browser/components/StatelessElementBrowser.js +78 -13
  17. package/dist/esm/element-browser/hooks/use-select-and-focus-on-arrow-navigation.js +38 -4
  18. package/dist/esm/monitoring/error.js +1 -1
  19. package/dist/esm/ui/DropList/index.js +1 -1
  20. package/dist/types/element-browser/components/CategoryList.d.ts +5 -0
  21. package/dist/types/element-browser/components/ElementList/ElementList.d.ts +2 -0
  22. package/dist/types/element-browser/hooks/use-select-and-focus-on-arrow-navigation.d.ts +4 -1
  23. package/dist/types-ts4.5/element-browser/components/CategoryList.d.ts +5 -0
  24. package/dist/types-ts4.5/element-browser/components/ElementList/ElementList.d.ts +2 -0
  25. package/dist/types-ts4.5/element-browser/hooks/use-select-and-focus-on-arrow-navigation.d.ts +4 -1
  26. package/package.json +4 -1
@@ -1,7 +1,7 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
3
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
- var _excluded = ["items", "mode", "selectedItemIndex", "focusedItemIndex", "setColumnCount", "createAnalyticsEvent", "emptyStateHandler", "selectedCategory", "searchTerm"];
4
+ var _excluded = ["items", "mode", "selectedItemIndex", "focusedItemIndex", "setColumnCount", "createAnalyticsEvent", "emptyStateHandler", "selectedCategory", "selectedCategoryIndex", "searchTerm", "setFocusedCategoryIndex", "setFocusedItemIndex"];
5
5
  /** @jsx jsx */
6
6
  import React, { Fragment, memo, useCallback, useEffect, useMemo, useState } from 'react';
7
7
  import { css, jsx } from '@emotion/react';
@@ -11,6 +11,7 @@ import { withAnalyticsContext } from '@atlaskit/analytics-next';
11
11
  import { relativeFontSizeToBase16 } from '@atlaskit/editor-shared-styles';
12
12
  import { shortcutStyle } from '@atlaskit/editor-shared-styles/shortcut';
13
13
  import { ButtonItem } from '@atlaskit/menu';
14
+ import { getBooleanFF } from '@atlaskit/platform-feature-flags';
14
15
  import { B100, N200 } from '@atlaskit/theme/colors';
15
16
  import { borderRadius } from '@atlaskit/theme/constants';
16
17
  import Tooltip from '@atlaskit/tooltip';
@@ -49,7 +50,10 @@ function ElementList(_ref) {
49
50
  createAnalyticsEvent = _ref.createAnalyticsEvent,
50
51
  emptyStateHandler = _ref.emptyStateHandler,
51
52
  selectedCategory = _ref.selectedCategory,
53
+ selectedCategoryIndex = _ref.selectedCategoryIndex,
52
54
  searchTerm = _ref.searchTerm,
55
+ setFocusedCategoryIndex = _ref.setFocusedCategoryIndex,
56
+ setFocusedItemIndex = _ref.setFocusedItemIndex,
53
57
  props = _objectWithoutProperties(_ref, _excluded);
54
58
  var _useContainerWidth = useContainerWidth(),
55
59
  containerWidth = _useContainerWidth.containerWidth,
@@ -93,16 +97,38 @@ function ElementList(_ref) {
93
97
  style: style,
94
98
  key: key,
95
99
  className: "element-item-wrapper",
96
- css: elementItemWrapper
100
+ css: elementItemWrapper,
101
+ onKeyDown: getBooleanFF('platform.editor.a11y-focus-order-for-element-browser-categories_ztiw1') ? function (e) {
102
+ if (e.key === 'Tab') {
103
+ if (e.shiftKey && index === 0) {
104
+ if (setFocusedCategoryIndex) {
105
+ if (!!selectedCategoryIndex) {
106
+ setFocusedCategoryIndex(selectedCategoryIndex);
107
+ } else {
108
+ setFocusedCategoryIndex(0);
109
+ }
110
+ e.preventDefault();
111
+ }
112
+ }
113
+ // before focus jumps from elements list we need to rerender react-virtualized collection.
114
+ // Otherwise on the next render 'scrollToCell' will have same cached value
115
+ // and collection will not be scrolled to top.
116
+ // So Tab press on category will not work anymore due to invisible 1-t element.
117
+ else if (index === items.length - 2) {
118
+ setFocusedItemIndex(items.length - 1);
119
+ }
120
+ }
121
+ } : undefined
97
122
  }, jsx(MemoizedElementItem, _extends({
98
123
  inlineMode: !fullMode,
99
124
  index: index,
100
125
  item: items[index],
101
126
  selected: selectedItemIndex === index,
102
- focus: focusedItemIndex === index
127
+ focus: focusedItemIndex === index,
128
+ setFocusedItemIndex: setFocusedItemIndex
103
129
  }, props)));
104
130
  };
105
- }, [items, fullMode, selectedItemIndex, focusedItemIndex, props]);
131
+ }, [items, fullMode, selectedItemIndex, focusedItemIndex, selectedCategoryIndex, setFocusedCategoryIndex, setFocusedItemIndex, props]);
106
132
  return jsx(Fragment, null, jsx(ContainerWidthMonitor, null), jsx("div", {
107
133
  css: elementItemsWrapper,
108
134
  "data-testid": "element-items",
@@ -1,10 +1,11 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
3
  /** @jsx jsx */
4
- import React, { memo, useCallback, useEffect, useState } from 'react';
4
+ import React, { memo, useCallback, useEffect, useRef, useState } from 'react';
5
5
  import { css, jsx } from '@emotion/react';
6
6
  import { FormattedMessage } from 'react-intl-next';
7
7
  import { withAnalyticsContext, withAnalyticsEvents } from '@atlaskit/analytics-next';
8
+ import { getBooleanFF } from '@atlaskit/platform-feature-flags';
8
9
  import { ACTION, ACTION_SUBJECT, EVENT_TYPE, fireAnalyticsEvent } from '../../analytics';
9
10
  import { DEVICE_BREAKPOINT_NUMBERS, GRID_SIZE, INLINE_SIDEBAR_HEIGHT, SIDEBAR_HEADING_WRAPPER_HEIGHT, SIDEBAR_WIDTH } from '../constants';
10
11
  import useContainerWidth from '../hooks/use-container-width';
@@ -90,18 +91,43 @@ function StatelessElementBrowser(props) {
90
91
  var items = props.items,
91
92
  onSelectItem = props.onSelectItem,
92
93
  onInsertItem = props.onInsertItem,
93
- viewMoreItem = props.viewMoreItem;
94
+ viewMoreItem = props.viewMoreItem,
95
+ selectedCategory = props.selectedCategory,
96
+ onSelectCategory = props.onSelectCategory,
97
+ searchTerm = props.searchTerm,
98
+ showCategories = props.showCategories;
94
99
  var _useContainerWidth = useContainerWidth(),
95
100
  containerWidth = _useContainerWidth.containerWidth,
96
101
  ContainerWidthMonitor = _useContainerWidth.ContainerWidthMonitor;
102
+ var categoryBeenChosen = useRef(false);
97
103
  var _useState = useState(1),
98
104
  _useState2 = _slicedToArray(_useState, 2),
99
105
  columnCount = _useState2[0],
100
106
  setColumnCount = _useState2[1];
101
- var _useSelectAndFocusOnA = useSelectAndFocusOnArrowNavigation(items.length - 1, columnCount, !!viewMoreItem),
107
+ var selectedCategoryIndex;
108
+ var isFocusSearch;
109
+ if (getBooleanFF('platform.editor.a11y-focus-order-for-element-browser-categories_ztiw1')) {
110
+ var _props$categories;
111
+ selectedCategoryIndex = (_props$categories = props.categories) === null || _props$categories === void 0 ? void 0 : _props$categories.findIndex(function (category) {
112
+ return category.name === selectedCategory;
113
+ });
114
+ if (showCategories) {
115
+ var isEmptySearchTerm = !searchTerm || (searchTerm === null || searchTerm === void 0 ? void 0 : searchTerm.length) === 0;
116
+ if (!isEmptySearchTerm) {
117
+ // clear the flag if the search happens after a user has chosen the category
118
+ categoryBeenChosen.current = false;
119
+ }
120
+ // A11Y: if categories exists, on the initial render search element should receive focus.
121
+ // After user pick some category the category should stay focused.
122
+ isFocusSearch = !categoryBeenChosen.current || !isEmptySearchTerm;
123
+ }
124
+ }
125
+ var _useSelectAndFocusOnA = useSelectAndFocusOnArrowNavigation(items.length - 1, columnCount, !!viewMoreItem, isFocusSearch),
102
126
  selectedItemIndex = _useSelectAndFocusOnA.selectedItemIndex,
103
127
  focusedItemIndex = _useSelectAndFocusOnA.focusedItemIndex,
104
128
  setFocusedItemIndex = _useSelectAndFocusOnA.setFocusedItemIndex,
129
+ setFocusedCategoryIndex = _useSelectAndFocusOnA.setFocusedCategoryIndex,
130
+ focusedCategoryIndex = _useSelectAndFocusOnA.focusedCategoryIndex,
105
131
  focusOnSearch = _useSelectAndFocusOnA.focusOnSearch,
106
132
  focusOnViewMore = _useSelectAndFocusOnA.focusOnViewMore,
107
133
  onKeyDown = _useSelectAndFocusOnA.onKeyDown,
@@ -135,15 +161,29 @@ function StatelessElementBrowser(props) {
135
161
  * The actual enter key press is handled on individual items level.
136
162
  */
137
163
  var selectedItem = selectedItemIndex !== undefined ? items[selectedItemIndex] : null;
138
- var onItemsEnterKeyPress = useCallback(function (e) {
139
- if (e.key !== 'Enter') {
140
- return;
164
+ var onItemsEnterTabKeyPress = useCallback(function (e) {
165
+ if (getBooleanFF('platform.editor.a11y-focus-order-for-element-browser-categories_ztiw1')) {
166
+ if (e.key !== 'Enter' && (e.key !== 'Tab' || !showCategories)) {
167
+ return;
168
+ }
169
+ } else {
170
+ if (e.key !== 'Enter') {
171
+ return;
172
+ }
173
+ }
174
+ if (getBooleanFF('platform.editor.a11y-focus-order-for-element-browser-categories_ztiw1')) {
175
+ if (showCategories && e.key === 'Tab' && selectedCategoryIndex !== undefined) {
176
+ // A11Y: Set focus on first category if tab pressed on search
177
+ setFocusedCategoryIndex(selectedCategoryIndex);
178
+ e.preventDefault();
179
+ return;
180
+ }
141
181
  }
142
182
  if (onInsertItem && selectedItem != null) {
143
183
  onInsertItem(selectedItem);
144
184
  }
145
185
  e.preventDefault();
146
- }, [onInsertItem, selectedItem]);
186
+ }, [onInsertItem, selectedItem, setFocusedCategoryIndex, showCategories, selectedCategoryIndex]);
147
187
 
148
188
  /**
149
189
  * On arrow key selection and clicks the selectedItemIndex will change.
@@ -154,6 +194,10 @@ function StatelessElementBrowser(props) {
154
194
  onSelectItem(selectedItem);
155
195
  }
156
196
  }, [onSelectItem, selectedItem]);
197
+ var onSelectCategoryCB = useCallback(function (category) {
198
+ onSelectCategory(category);
199
+ categoryBeenChosen.current = true;
200
+ }, [categoryBeenChosen, onSelectCategory]);
157
201
  return jsx("div", {
158
202
  css: wrapper,
159
203
  "data-testid": "element-browser"
@@ -161,10 +205,12 @@ function StatelessElementBrowser(props) {
161
205
  selectedItemIndex: selectedItemIndex,
162
206
  focusedItemIndex: focusedItemIndex,
163
207
  setFocusedItemIndex: setFocusedItemIndex,
208
+ focusedCategoryIndex: focusedCategoryIndex,
209
+ setFocusedCategoryIndex: setFocusedCategoryIndex,
164
210
  focusOnSearch: focusOnSearch,
165
211
  setColumnCount: setColumnCount,
166
212
  setFocusOnSearch: setFocusOnSearch,
167
- onKeyPress: onItemsEnterKeyPress,
213
+ onKeyPress: onItemsEnterTabKeyPress,
168
214
  onKeyDown: onKeyDown,
169
215
  viewMoreItem: viewMoreItem,
170
216
  focusOnViewMore: focusOnViewMore
@@ -175,8 +221,12 @@ function StatelessElementBrowser(props) {
175
221
  focusOnSearch: focusOnSearch,
176
222
  setColumnCount: setColumnCount,
177
223
  setFocusOnSearch: setFocusOnSearch,
178
- onKeyPress: onItemsEnterKeyPress,
179
- onKeyDown: onKeyDown
224
+ onKeyPress: onItemsEnterTabKeyPress,
225
+ onKeyDown: onKeyDown,
226
+ focusedCategoryIndex: focusedCategoryIndex,
227
+ setFocusedCategoryIndex: setFocusedCategoryIndex,
228
+ selectedCategoryIndex: selectedCategoryIndex,
229
+ onSelectCategory: getBooleanFF('platform.editor.a11y-focus-order-for-element-browser-categories_ztiw1') ? onSelectCategoryCB : onSelectCategory
180
230
  })));
181
231
  }
182
232
  function MobileBrowser(_ref) {
@@ -192,6 +242,8 @@ function MobileBrowser(_ref) {
192
242
  selectedItemIndex = _ref.selectedItemIndex,
193
243
  focusedItemIndex = _ref.focusedItemIndex,
194
244
  setFocusedItemIndex = _ref.setFocusedItemIndex,
245
+ focusedCategoryIndex = _ref.focusedCategoryIndex,
246
+ setFocusedCategoryIndex = _ref.setFocusedCategoryIndex,
195
247
  focusOnSearch = _ref.focusOnSearch,
196
248
  focusOnViewMore = _ref.focusOnViewMore,
197
249
  setColumnCount = _ref.setColumnCount,
@@ -223,7 +275,11 @@ function MobileBrowser(_ref) {
223
275
  }, jsx(CategoryList, {
224
276
  categories: categories,
225
277
  onSelectCategory: onSelectCategory,
226
- selectedCategory: selectedCategory
278
+ selectedCategory: selectedCategory,
279
+ focusedCategoryIndex: focusedCategoryIndex,
280
+ setFocusedCategoryIndex: setFocusedCategoryIndex,
281
+ setFocusedItemIndex: setFocusedItemIndex,
282
+ setFocusOnSearch: setFocusOnSearch
227
283
  }))), jsx("div", {
228
284
  css: mobileMainContent
229
285
  }, jsx(ElementList, {
@@ -256,6 +312,9 @@ function DesktopBrowser(_ref2) {
256
312
  selectedItemIndex = _ref2.selectedItemIndex,
257
313
  focusedItemIndex = _ref2.focusedItemIndex,
258
314
  setFocusedItemIndex = _ref2.setFocusedItemIndex,
315
+ focusedCategoryIndex = _ref2.focusedCategoryIndex,
316
+ setFocusedCategoryIndex = _ref2.setFocusedCategoryIndex,
317
+ selectedCategoryIndex = _ref2.selectedCategoryIndex,
259
318
  focusOnSearch = _ref2.focusOnSearch,
260
319
  setColumnCount = _ref2.setColumnCount,
261
320
  setFocusOnSearch = _ref2.setFocusOnSearch,
@@ -285,7 +344,11 @@ function DesktopBrowser(_ref2) {
285
344
  categories: categories,
286
345
  onSelectCategory: onSelectCategory,
287
346
  selectedCategory: selectedCategory,
288
- createAnalyticsEvent: createAnalyticsEvent
347
+ createAnalyticsEvent: createAnalyticsEvent,
348
+ focusedCategoryIndex: focusedCategoryIndex,
349
+ setFocusedCategoryIndex: setFocusedCategoryIndex,
350
+ setFocusedItemIndex: setFocusedItemIndex,
351
+ setFocusOnSearch: setFocusOnSearch
289
352
  }))), jsx("div", {
290
353
  css: mainContent,
291
354
  onKeyDown: onKeyDown,
@@ -314,7 +377,9 @@ function DesktopBrowser(_ref2) {
314
377
  createAnalyticsEvent: createAnalyticsEvent,
315
378
  emptyStateHandler: emptyStateHandler,
316
379
  selectedCategory: selectedCategory,
317
- searchTerm: searchTerm
380
+ selectedCategoryIndex: selectedCategoryIndex,
381
+ searchTerm: searchTerm,
382
+ setFocusedCategoryIndex: showCategories ? setFocusedCategoryIndex : undefined
318
383
  })));
319
384
  }
320
385
  var MemoizedElementBrowser = /*#__PURE__*/memo(withAnalyticsContext({
@@ -3,6 +3,7 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
3
  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; }
4
4
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5
5
  import { useCallback, useEffect, useReducer, useRef } from 'react';
6
+ import { getBooleanFF } from '@atlaskit/platform-feature-flags';
6
7
 
7
8
  /**
8
9
  * a custom hook that handles keyboard navigation for Arrow keys based on a
@@ -57,6 +58,7 @@ var reducer = function reducer(state, action) {
57
58
  case ACTIONS.FOCUS_SEARCH:
58
59
  return _objectSpread(_objectSpread({}, state), {}, {
59
60
  focusedItemIndex: undefined,
61
+ focusedCategoryIndex: undefined,
60
62
  focusOnSearch: true,
61
63
  focusOnViewMore: false
62
64
  });
@@ -166,7 +168,7 @@ var getInitialState = function getInitialState(listSize, canFocusViewMore) {
166
168
  });
167
169
  };
168
170
  };
169
- function useSelectAndFocusOnArrowNavigation(listSize, step, canFocusViewMore) {
171
+ function useSelectAndFocusOnArrowNavigation(listSize, step, canFocusViewMore, isFocusSearch) {
170
172
  var _useReducer = useReducer(reducer, initialState, getInitialState(listSize, canFocusViewMore)),
171
173
  _useReducer2 = _slicedToArray(_useReducer, 2),
172
174
  state = _useReducer2[0],
@@ -182,16 +184,26 @@ function useSelectAndFocusOnArrowNavigation(listSize, step, canFocusViewMore) {
182
184
  var selectedItemIndex = state.selectedItemIndex,
183
185
  focusedItemIndex = state.focusedItemIndex,
184
186
  focusOnSearch = state.focusOnSearch,
185
- focusOnViewMore = state.focusOnViewMore;
187
+ focusOnViewMore = state.focusOnViewMore,
188
+ focusedCategoryIndex = state.focusedCategoryIndex;
189
+
190
+ // calls if items size changed
186
191
  var reset = useCallback(function (listSize) {
187
192
  var payload = _objectSpread(_objectSpread({}, initialState), {}, {
188
193
  listSize: listSize
189
194
  });
195
+ if (getBooleanFF('platform.editor.a11y-focus-order-for-element-browser-categories_ztiw1')) {
196
+ // A11Y: if categories exist ,on the initial render search element should receive focus.
197
+ // After user pick some category the category should stay focused.
198
+ payload = Object.assign(payload, {
199
+ focusOnSearch: isFocusSearch !== null && isFocusSearch !== void 0 ? isFocusSearch : initialState.focusOnSearch
200
+ });
201
+ }
190
202
  dispatch({
191
203
  type: ACTIONS.UPDATE_STATE,
192
204
  payload: payload
193
205
  });
194
- }, []);
206
+ }, [isFocusSearch]);
195
207
  var removeFocusFromSearchAndSetOnItem = useCallback(function (index) {
196
208
  var payload = {
197
209
  focusedItemIndex: index,
@@ -199,6 +211,26 @@ function useSelectAndFocusOnArrowNavigation(listSize, step, canFocusViewMore) {
199
211
  focusOnSearch: false,
200
212
  focusOnViewMore: false
201
213
  };
214
+ if (getBooleanFF('platform.editor.a11y-focus-order-for-element-browser-categories_ztiw1')) {
215
+ payload = Object.assign(payload, {
216
+ focusedCategoryIndex: undefined
217
+ });
218
+ }
219
+ dispatch({
220
+ type: ACTIONS.UPDATE_STATE,
221
+ payload: payload
222
+ });
223
+ }, [dispatch]);
224
+ var setFocusedCategoryIndex = useCallback(function (index) {
225
+ if (!getBooleanFF('platform.editor.a11y-focus-order-for-element-browser-categories_ztiw1')) {
226
+ return;
227
+ }
228
+ var payload = {
229
+ focusOnSearch: false,
230
+ focusOnViewMore: false,
231
+ focusedCategoryIndex: index,
232
+ focusedItemIndex: undefined
233
+ };
202
234
  dispatch({
203
235
  type: ACTIONS.UPDATE_STATE,
204
236
  payload: payload
@@ -263,7 +295,9 @@ function useSelectAndFocusOnArrowNavigation(listSize, step, canFocusViewMore) {
263
295
  focusOnViewMore: focusOnViewMore,
264
296
  setFocusOnSearch: setFocusOnSearch,
265
297
  focusedItemIndex: focusedItemIndex,
266
- setFocusedItemIndex: removeFocusFromSearchAndSetOnItem
298
+ setFocusedItemIndex: removeFocusFromSearchAndSetOnItem,
299
+ focusedCategoryIndex: focusedCategoryIndex,
300
+ setFocusedCategoryIndex: setFocusedCategoryIndex
267
301
  };
268
302
  }
269
303
  export var ensureSafeIndex = function ensureSafeIndex(index, listSize) {
@@ -6,7 +6,7 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
6
6
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
7
7
  var SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
8
8
  var packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
9
- var packageVersion = "78.37.1";
9
+ var packageVersion = "78.37.2";
10
10
  var sanitiseSentryEvents = function sanitiseSentryEvents(data, _hint) {
11
11
  // Remove URL as it has UGC
12
12
  // TODO: Sanitise the URL instead of just removing it
@@ -15,7 +15,7 @@ import { createAndFireEvent, withAnalyticsContext, withAnalyticsEvents } from '@
15
15
  import { N0, N50A, N60A, N900 } from '@atlaskit/theme/colors';
16
16
  import Layer from '../Layer';
17
17
  var packageName = "@atlaskit/editor-common";
18
- var packageVersion = "78.37.1";
18
+ var packageVersion = "78.37.2";
19
19
  var halfFocusRing = 1;
20
20
  var dropOffset = '0, 8';
21
21
  var DropList = /*#__PURE__*/function (_Component) {
@@ -1,3 +1,4 @@
1
+ /** @jsx jsx */
1
2
  import React from 'react';
2
3
  import type { WithAnalyticsEventsProps } from '@atlaskit/analytics-next';
3
4
  import type { Category } from '../types';
@@ -5,6 +6,10 @@ interface Props {
5
6
  categories?: Category[];
6
7
  onSelectCategory: (category: Category) => void;
7
8
  selectedCategory?: string;
9
+ focusedCategoryIndex?: number;
10
+ setFocusedCategoryIndex: (index: number) => void;
11
+ setFocusedItemIndex: (index: number) => void;
12
+ setFocusOnSearch?: () => void;
8
13
  }
9
14
  declare const MemoizedCategoryListWithAnalytics: React.MemoExoticComponent<React.ForwardRefExoticComponent<Pick<Props & WithAnalyticsEventsProps & import("@atlaskit/analytics-next").WithContextProps, "createAnalyticsEvent" | "analyticsContext" | keyof Props> & React.RefAttributes<any>>>;
10
15
  export default MemoizedCategoryListWithAnalytics;
@@ -15,8 +15,10 @@ export interface Props {
15
15
  onInsertItem: (item: QuickInsertItem) => void;
16
16
  setColumnCount: (columnCount: number) => void;
17
17
  setFocusedItemIndex: (index: number) => void;
18
+ setFocusedCategoryIndex?: (index: number) => void;
18
19
  emptyStateHandler?: EmptyStateHandler;
19
20
  selectedCategory?: string;
21
+ selectedCategoryIndex?: number;
20
22
  searchTerm?: string;
21
23
  }
22
24
  type ElementItemType = {
@@ -45,6 +45,7 @@ type ReducerState = {
45
45
  focusedItemIndex?: number;
46
46
  listSize: number;
47
47
  canFocusViewMore?: boolean;
48
+ focusedCategoryIndex?: number;
48
49
  };
49
50
  export declare enum ACTIONS {
50
51
  FOCUS_SEARCH = "focusOnSearch",
@@ -64,9 +65,11 @@ export type useSelectAndFocusReturnType = {
64
65
  focusOnSearch: boolean;
65
66
  focusOnViewMore: boolean;
66
67
  focusedItemIndex?: number;
68
+ focusedCategoryIndex?: number;
67
69
  setFocusedItemIndex: (index?: number) => void;
70
+ setFocusedCategoryIndex: (index?: number) => void;
68
71
  setFocusOnSearch: () => void;
69
72
  };
70
- declare function useSelectAndFocusOnArrowNavigation(listSize: number, step: number, canFocusViewMore: boolean): useSelectAndFocusReturnType;
73
+ declare function useSelectAndFocusOnArrowNavigation(listSize: number, step: number, canFocusViewMore: boolean, isFocusSearch?: boolean): useSelectAndFocusReturnType;
71
74
  export declare const ensureSafeIndex: (index: number, listSize: number) => number;
72
75
  export default useSelectAndFocusOnArrowNavigation;
@@ -1,3 +1,4 @@
1
+ /** @jsx jsx */
1
2
  import React from 'react';
2
3
  import type { WithAnalyticsEventsProps } from '@atlaskit/analytics-next';
3
4
  import type { Category } from '../types';
@@ -5,6 +6,10 @@ interface Props {
5
6
  categories?: Category[];
6
7
  onSelectCategory: (category: Category) => void;
7
8
  selectedCategory?: string;
9
+ focusedCategoryIndex?: number;
10
+ setFocusedCategoryIndex: (index: number) => void;
11
+ setFocusedItemIndex: (index: number) => void;
12
+ setFocusOnSearch?: () => void;
8
13
  }
9
14
  declare const MemoizedCategoryListWithAnalytics: React.MemoExoticComponent<React.ForwardRefExoticComponent<Pick<Props & WithAnalyticsEventsProps & import("@atlaskit/analytics-next").WithContextProps, "createAnalyticsEvent" | "analyticsContext" | keyof Props> & React.RefAttributes<any>>>;
10
15
  export default MemoizedCategoryListWithAnalytics;
@@ -15,8 +15,10 @@ export interface Props {
15
15
  onInsertItem: (item: QuickInsertItem) => void;
16
16
  setColumnCount: (columnCount: number) => void;
17
17
  setFocusedItemIndex: (index: number) => void;
18
+ setFocusedCategoryIndex?: (index: number) => void;
18
19
  emptyStateHandler?: EmptyStateHandler;
19
20
  selectedCategory?: string;
21
+ selectedCategoryIndex?: number;
20
22
  searchTerm?: string;
21
23
  }
22
24
  type ElementItemType = {
@@ -45,6 +45,7 @@ type ReducerState = {
45
45
  focusedItemIndex?: number;
46
46
  listSize: number;
47
47
  canFocusViewMore?: boolean;
48
+ focusedCategoryIndex?: number;
48
49
  };
49
50
  export declare enum ACTIONS {
50
51
  FOCUS_SEARCH = "focusOnSearch",
@@ -64,9 +65,11 @@ export type useSelectAndFocusReturnType = {
64
65
  focusOnSearch: boolean;
65
66
  focusOnViewMore: boolean;
66
67
  focusedItemIndex?: number;
68
+ focusedCategoryIndex?: number;
67
69
  setFocusedItemIndex: (index?: number) => void;
70
+ setFocusedCategoryIndex: (index?: number) => void;
68
71
  setFocusOnSearch: () => void;
69
72
  };
70
- declare function useSelectAndFocusOnArrowNavigation(listSize: number, step: number, canFocusViewMore: boolean): useSelectAndFocusReturnType;
73
+ declare function useSelectAndFocusOnArrowNavigation(listSize: number, step: number, canFocusViewMore: boolean, isFocusSearch?: boolean): useSelectAndFocusReturnType;
71
74
  export declare const ensureSafeIndex: (index: number, listSize: number) => number;
72
75
  export default useSelectAndFocusOnArrowNavigation;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-common",
3
- "version": "78.37.1",
3
+ "version": "78.37.2",
4
4
  "description": "A package that contains common classes and components for editor and renderer",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -249,6 +249,9 @@
249
249
  "platform.editor.mbe-update-params-change": {
250
250
  "type": "boolean"
251
251
  },
252
+ "platform.editor.a11y-focus-order-for-element-browser-categories_ztiw1": {
253
+ "type": "boolean"
254
+ },
252
255
  "platform.editor.explicit-html-element-check": {
253
256
  "type": "boolean"
254
257
  }