@atlaskit/reactions 35.11.7 → 35.11.8

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,17 @@
1
1
  # @atlaskit/reactions
2
2
 
3
+ ## 35.11.8
4
+
5
+ ### Patch Changes
6
+
7
+ - [`603c0eaa6238b`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/603c0eaa6238b) -
8
+ Fix reading order of the reaction picker for assistive technologies. When the
9
+ `a11y_reactions_reading_order` gate is enabled, the expanded picker panel is rendered inline as a
10
+ DOM sibling directly after the trigger button instead of in a portal at the end of the document,
11
+ so screen readers encounter the expanded content in the correct order. Visual placement is
12
+ unchanged as the popper continues to position with `position: fixed`.
13
+ - Updated dependencies
14
+
3
15
  ## 35.11.7
4
16
 
5
17
  ### Patch Changes
@@ -61,6 +61,9 @@
61
61
  {
62
62
  "path": "../../../design-system/motion/afm-products/tsconfig.json"
63
63
  },
64
+ {
65
+ "path": "../../../platform/feature-experiments/afm-products/tsconfig.json"
66
+ },
64
67
  {
65
68
  "path": "../../../platform/feature-flags/afm-products/tsconfig.json"
66
69
  },
@@ -11,7 +11,7 @@ var _analyticsGasTypes = require("@atlaskit/analytics-gas-types");
11
11
  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; }
12
12
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } // eslint-disable-next-line @typescript-eslint/consistent-type-imports
13
13
  var packageName = "@atlaskit/reactions";
14
- var packageVersion = "35.11.6";
14
+ var packageVersion = "35.11.7";
15
15
  /**
16
16
  * TODO: move to utility package?
17
17
  * A random sampling function
@@ -241,7 +241,11 @@ var ReactionPicker = exports.ReactionPicker = /*#__PURE__*/_react.default.memo(f
241
241
  }
242
242
  onOpen();
243
243
  // ufo reactions picker opened success
244
- _ufo.PickerRender.success();
244
+ _ufo.PickerRender.success({
245
+ metadata: {
246
+ readingOrderInline: (0, _platformFeatureFlags.fg)('a11y_reactions_reading_order')
247
+ }
248
+ });
245
249
  }, [hoverableReactionPicker, isPopupTrayOpen, setIsPopupTrayOpen, isTriggerClicked, setIsTriggerClicked, isHoverableReactionPickerEmojiPickerOpen, onOpen, settings, popperPlacement]);
246
250
  var handleTriggerMouseEnter = (0, _react.useCallback)(function () {
247
251
  if (hoverableReactionPicker) {
@@ -284,6 +288,33 @@ var ReactionPicker = exports.ReactionPicker = /*#__PURE__*/_react.default.memo(f
284
288
  close();
285
289
  onCancel();
286
290
  };
291
+ var pickerPanel = /*#__PURE__*/_react.default.createElement(PopperWrapper, {
292
+ settings: settings,
293
+ popperModifiers: popperModifiers,
294
+ isOpen: isPopupTrayOpen,
295
+ onClose: onClose,
296
+ triggerRef: triggerRef,
297
+ zIndex: reactionPickerPopperZIndex || _constants.layers.flag()
298
+ }, settings.showFullPicker || hoverableReactionPicker && isHoverableReactionPickerEmojiPickerOpen ? /*#__PURE__*/_react.default.createElement(_compiled.Box, {
299
+ xcss: additionalStyles.selectorContainer,
300
+ onMouseEnter: handlePopupMouseEnter,
301
+ onMouseLeave: handlePopupMouseLeave
302
+ }, /*#__PURE__*/_react.default.createElement(_picker.EmojiPicker, {
303
+ emojiProvider: emojiProvider,
304
+ onSelection: onEmojiSelected,
305
+ size: emojiPickerSize
306
+ })) : /*#__PURE__*/_react.default.createElement(_compiled.Box, {
307
+ xcss: additionalStyles.selectorContainer,
308
+ onMouseEnter: handlePopupMouseEnter,
309
+ onMouseLeave: handlePopupMouseLeave
310
+ }, /*#__PURE__*/_react.default.createElement(_Selector.Selector, {
311
+ emojiProvider: emojiProvider,
312
+ onSelection: onEmojiSelected,
313
+ showMore: allowAllEmojis,
314
+ onMoreClick: onSelectMoreClick,
315
+ pickerQuickReactionEmojiIds: pickerQuickReactionEmojiIds,
316
+ hoverableReactionPickerSelector: hoverableReactionPicker
317
+ })));
287
318
  return /*#__PURE__*/_react.default.createElement("div", {
288
319
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
289
320
  className: (0, _runtime.ax)(["_s7n4nkob _1pra1o8l", wrapperClassName]),
@@ -328,35 +359,14 @@ var ReactionPicker = exports.ReactionPicker = /*#__PURE__*/_react.default.memo(f
328
359
  emojiPickerSize: emojiPickerSize
329
360
  }))
330
361
  );
331
- }), isPopupTrayOpen && /*#__PURE__*/_react.default.createElement(_portal.default, {
332
- zIndex: reactionPickerPopperZIndex || _constants.layers.flag()
333
- }, /*#__PURE__*/_react.default.createElement(PopperWrapper, {
334
- settings: settings,
335
- popperModifiers: popperModifiers,
336
- isOpen: isPopupTrayOpen,
337
- onClose: onClose,
338
- triggerRef: triggerRef,
362
+ }), isPopupTrayOpen && ((0, _platformFeatureFlags.fg)('a11y_reactions_reading_order') ?
363
+ // Render the picker panel inline (a DOM sibling directly after the trigger)
364
+ // so assistive technologies encounter the expanded content in the correct
365
+ // reading order. The popper still positions with `position: fixed`, so the
366
+ // visual placement is unchanged.
367
+ pickerPanel : /*#__PURE__*/_react.default.createElement(_portal.default, {
339
368
  zIndex: reactionPickerPopperZIndex || _constants.layers.flag()
340
- }, settings.showFullPicker || hoverableReactionPicker && isHoverableReactionPickerEmojiPickerOpen ? /*#__PURE__*/_react.default.createElement(_compiled.Box, {
341
- xcss: additionalStyles.selectorContainer,
342
- onMouseEnter: handlePopupMouseEnter,
343
- onMouseLeave: handlePopupMouseLeave
344
- }, /*#__PURE__*/_react.default.createElement(_picker.EmojiPicker, {
345
- emojiProvider: emojiProvider,
346
- onSelection: onEmojiSelected,
347
- size: emojiPickerSize
348
- })) : /*#__PURE__*/_react.default.createElement(_compiled.Box, {
349
- xcss: additionalStyles.selectorContainer,
350
- onMouseEnter: handlePopupMouseEnter,
351
- onMouseLeave: handlePopupMouseLeave
352
- }, /*#__PURE__*/_react.default.createElement(_Selector.Selector, {
353
- emojiProvider: emojiProvider,
354
- onSelection: onEmojiSelected,
355
- showMore: allowAllEmojis,
356
- onMoreClick: onSelectMoreClick,
357
- pickerQuickReactionEmojiIds: pickerQuickReactionEmojiIds,
358
- hoverableReactionPickerSelector: hoverableReactionPicker
359
- }))))));
369
+ }, pickerPanel))));
360
370
  });
361
371
  var PopperWrapper = exports.PopperWrapper = function PopperWrapper(props) {
362
372
  var triggerRef = props.triggerRef,
@@ -2,7 +2,7 @@
2
2
  import { createAndFireEvent } from '@atlaskit/analytics-next';
3
3
  import { UI_EVENT_TYPE, OPERATIONAL_EVENT_TYPE } from '@atlaskit/analytics-gas-types';
4
4
  const packageName = "@atlaskit/reactions";
5
- const packageVersion = "35.11.6";
5
+ const packageVersion = "35.11.7";
6
6
  /**
7
7
  * TODO: move to utility package?
8
8
  * A random sampling function
@@ -198,7 +198,11 @@ export const ReactionPicker = /*#__PURE__*/React.memo(props => {
198
198
  }
199
199
  onOpen();
200
200
  // ufo reactions picker opened success
201
- PickerRender.success();
201
+ PickerRender.success({
202
+ metadata: {
203
+ readingOrderInline: fg('a11y_reactions_reading_order')
204
+ }
205
+ });
202
206
  }, [hoverableReactionPicker, isPopupTrayOpen, setIsPopupTrayOpen, isTriggerClicked, setIsTriggerClicked, isHoverableReactionPickerEmojiPickerOpen, onOpen, settings, popperPlacement]);
203
207
  const handleTriggerMouseEnter = useCallback(() => {
204
208
  if (hoverableReactionPicker) {
@@ -241,6 +245,33 @@ export const ReactionPicker = /*#__PURE__*/React.memo(props => {
241
245
  close();
242
246
  onCancel();
243
247
  };
248
+ const pickerPanel = /*#__PURE__*/React.createElement(PopperWrapper, {
249
+ settings: settings,
250
+ popperModifiers: popperModifiers,
251
+ isOpen: isPopupTrayOpen,
252
+ onClose: onClose,
253
+ triggerRef: triggerRef,
254
+ zIndex: reactionPickerPopperZIndex || layers.flag()
255
+ }, settings.showFullPicker || hoverableReactionPicker && isHoverableReactionPickerEmojiPickerOpen ? /*#__PURE__*/React.createElement(Box, {
256
+ xcss: additionalStyles.selectorContainer,
257
+ onMouseEnter: handlePopupMouseEnter,
258
+ onMouseLeave: handlePopupMouseLeave
259
+ }, /*#__PURE__*/React.createElement(EmojiPicker, {
260
+ emojiProvider: emojiProvider,
261
+ onSelection: onEmojiSelected,
262
+ size: emojiPickerSize
263
+ })) : /*#__PURE__*/React.createElement(Box, {
264
+ xcss: additionalStyles.selectorContainer,
265
+ onMouseEnter: handlePopupMouseEnter,
266
+ onMouseLeave: handlePopupMouseLeave
267
+ }, /*#__PURE__*/React.createElement(Selector, {
268
+ emojiProvider: emojiProvider,
269
+ onSelection: onEmojiSelected,
270
+ showMore: allowAllEmojis,
271
+ onMoreClick: onSelectMoreClick,
272
+ pickerQuickReactionEmojiIds: pickerQuickReactionEmojiIds,
273
+ hoverableReactionPickerSelector: hoverableReactionPicker
274
+ })));
244
275
  return /*#__PURE__*/React.createElement("div", {
245
276
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
246
277
  className: ax(["_s7n4nkob _1pra1o8l", wrapperClassName]),
@@ -284,35 +315,14 @@ export const ReactionPicker = /*#__PURE__*/React.memo(props => {
284
315
  reactionPickerTriggerText: reactionPickerTriggerText,
285
316
  isListItem: isListItem,
286
317
  emojiPickerSize: emojiPickerSize
287
- }))), isPopupTrayOpen && /*#__PURE__*/React.createElement(Portal, {
288
- zIndex: reactionPickerPopperZIndex || layers.flag()
289
- }, /*#__PURE__*/React.createElement(PopperWrapper, {
290
- settings: settings,
291
- popperModifiers: popperModifiers,
292
- isOpen: isPopupTrayOpen,
293
- onClose: onClose,
294
- triggerRef: triggerRef,
318
+ }))), isPopupTrayOpen && (fg('a11y_reactions_reading_order') ?
319
+ // Render the picker panel inline (a DOM sibling directly after the trigger)
320
+ // so assistive technologies encounter the expanded content in the correct
321
+ // reading order. The popper still positions with `position: fixed`, so the
322
+ // visual placement is unchanged.
323
+ pickerPanel : /*#__PURE__*/React.createElement(Portal, {
295
324
  zIndex: reactionPickerPopperZIndex || layers.flag()
296
- }, settings.showFullPicker || hoverableReactionPicker && isHoverableReactionPickerEmojiPickerOpen ? /*#__PURE__*/React.createElement(Box, {
297
- xcss: additionalStyles.selectorContainer,
298
- onMouseEnter: handlePopupMouseEnter,
299
- onMouseLeave: handlePopupMouseLeave
300
- }, /*#__PURE__*/React.createElement(EmojiPicker, {
301
- emojiProvider: emojiProvider,
302
- onSelection: onEmojiSelected,
303
- size: emojiPickerSize
304
- })) : /*#__PURE__*/React.createElement(Box, {
305
- xcss: additionalStyles.selectorContainer,
306
- onMouseEnter: handlePopupMouseEnter,
307
- onMouseLeave: handlePopupMouseLeave
308
- }, /*#__PURE__*/React.createElement(Selector, {
309
- emojiProvider: emojiProvider,
310
- onSelection: onEmojiSelected,
311
- showMore: allowAllEmojis,
312
- onMoreClick: onSelectMoreClick,
313
- pickerQuickReactionEmojiIds: pickerQuickReactionEmojiIds,
314
- hoverableReactionPickerSelector: hoverableReactionPicker
315
- }))))));
325
+ }, pickerPanel))));
316
326
  });
317
327
  export const PopperWrapper = props => {
318
328
  const {
@@ -5,7 +5,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
5
5
  import { createAndFireEvent } from '@atlaskit/analytics-next';
6
6
  import { UI_EVENT_TYPE, OPERATIONAL_EVENT_TYPE } from '@atlaskit/analytics-gas-types';
7
7
  var packageName = "@atlaskit/reactions";
8
- var packageVersion = "35.11.6";
8
+ var packageVersion = "35.11.7";
9
9
  /**
10
10
  * TODO: move to utility package?
11
11
  * A random sampling function
@@ -232,7 +232,11 @@ export var ReactionPicker = /*#__PURE__*/React.memo(function (props) {
232
232
  }
233
233
  onOpen();
234
234
  // ufo reactions picker opened success
235
- PickerRender.success();
235
+ PickerRender.success({
236
+ metadata: {
237
+ readingOrderInline: fg('a11y_reactions_reading_order')
238
+ }
239
+ });
236
240
  }, [hoverableReactionPicker, isPopupTrayOpen, setIsPopupTrayOpen, isTriggerClicked, setIsTriggerClicked, isHoverableReactionPickerEmojiPickerOpen, onOpen, settings, popperPlacement]);
237
241
  var handleTriggerMouseEnter = useCallback(function () {
238
242
  if (hoverableReactionPicker) {
@@ -275,6 +279,33 @@ export var ReactionPicker = /*#__PURE__*/React.memo(function (props) {
275
279
  close();
276
280
  onCancel();
277
281
  };
282
+ var pickerPanel = /*#__PURE__*/React.createElement(PopperWrapper, {
283
+ settings: settings,
284
+ popperModifiers: popperModifiers,
285
+ isOpen: isPopupTrayOpen,
286
+ onClose: onClose,
287
+ triggerRef: triggerRef,
288
+ zIndex: reactionPickerPopperZIndex || layers.flag()
289
+ }, settings.showFullPicker || hoverableReactionPicker && isHoverableReactionPickerEmojiPickerOpen ? /*#__PURE__*/React.createElement(Box, {
290
+ xcss: additionalStyles.selectorContainer,
291
+ onMouseEnter: handlePopupMouseEnter,
292
+ onMouseLeave: handlePopupMouseLeave
293
+ }, /*#__PURE__*/React.createElement(EmojiPicker, {
294
+ emojiProvider: emojiProvider,
295
+ onSelection: onEmojiSelected,
296
+ size: emojiPickerSize
297
+ })) : /*#__PURE__*/React.createElement(Box, {
298
+ xcss: additionalStyles.selectorContainer,
299
+ onMouseEnter: handlePopupMouseEnter,
300
+ onMouseLeave: handlePopupMouseLeave
301
+ }, /*#__PURE__*/React.createElement(Selector, {
302
+ emojiProvider: emojiProvider,
303
+ onSelection: onEmojiSelected,
304
+ showMore: allowAllEmojis,
305
+ onMoreClick: onSelectMoreClick,
306
+ pickerQuickReactionEmojiIds: pickerQuickReactionEmojiIds,
307
+ hoverableReactionPickerSelector: hoverableReactionPicker
308
+ })));
278
309
  return /*#__PURE__*/React.createElement("div", {
279
310
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
280
311
  className: ax(["_s7n4nkob _1pra1o8l", wrapperClassName]),
@@ -319,35 +350,14 @@ export var ReactionPicker = /*#__PURE__*/React.memo(function (props) {
319
350
  emojiPickerSize: emojiPickerSize
320
351
  }))
321
352
  );
322
- }), isPopupTrayOpen && /*#__PURE__*/React.createElement(Portal, {
323
- zIndex: reactionPickerPopperZIndex || layers.flag()
324
- }, /*#__PURE__*/React.createElement(PopperWrapper, {
325
- settings: settings,
326
- popperModifiers: popperModifiers,
327
- isOpen: isPopupTrayOpen,
328
- onClose: onClose,
329
- triggerRef: triggerRef,
353
+ }), isPopupTrayOpen && (fg('a11y_reactions_reading_order') ?
354
+ // Render the picker panel inline (a DOM sibling directly after the trigger)
355
+ // so assistive technologies encounter the expanded content in the correct
356
+ // reading order. The popper still positions with `position: fixed`, so the
357
+ // visual placement is unchanged.
358
+ pickerPanel : /*#__PURE__*/React.createElement(Portal, {
330
359
  zIndex: reactionPickerPopperZIndex || layers.flag()
331
- }, settings.showFullPicker || hoverableReactionPicker && isHoverableReactionPickerEmojiPickerOpen ? /*#__PURE__*/React.createElement(Box, {
332
- xcss: additionalStyles.selectorContainer,
333
- onMouseEnter: handlePopupMouseEnter,
334
- onMouseLeave: handlePopupMouseLeave
335
- }, /*#__PURE__*/React.createElement(EmojiPicker, {
336
- emojiProvider: emojiProvider,
337
- onSelection: onEmojiSelected,
338
- size: emojiPickerSize
339
- })) : /*#__PURE__*/React.createElement(Box, {
340
- xcss: additionalStyles.selectorContainer,
341
- onMouseEnter: handlePopupMouseEnter,
342
- onMouseLeave: handlePopupMouseLeave
343
- }, /*#__PURE__*/React.createElement(Selector, {
344
- emojiProvider: emojiProvider,
345
- onSelection: onEmojiSelected,
346
- showMore: allowAllEmojis,
347
- onMoreClick: onSelectMoreClick,
348
- pickerQuickReactionEmojiIds: pickerQuickReactionEmojiIds,
349
- hoverableReactionPickerSelector: hoverableReactionPicker
350
- }))))));
360
+ }, pickerPanel))));
351
361
  });
352
362
  export var PopperWrapper = function PopperWrapper(props) {
353
363
  var triggerRef = props.triggerRef,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/reactions",
3
- "version": "35.11.7",
3
+ "version": "35.11.8",
4
4
  "description": "Reactions component",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -40,7 +40,7 @@
40
40
  "@atlaskit/emoji": "^71.15.0",
41
41
  "@atlaskit/feature-gate-js-client": "^6.0.0",
42
42
  "@atlaskit/heading": "^7.0.0",
43
- "@atlaskit/icon": "^37.2.0",
43
+ "@atlaskit/icon": "^37.3.0",
44
44
  "@atlaskit/link": "^5.0.0",
45
45
  "@atlaskit/modal-dialog": "^16.2.0",
46
46
  "@atlaskit/motion": "^8.0.0",
@@ -48,7 +48,7 @@
48
48
  "@atlaskit/platform-feature-flags": "^2.1.0",
49
49
  "@atlaskit/popper": "^9.0.0",
50
50
  "@atlaskit/popup": "^6.0.0",
51
- "@atlaskit/portal": "^6.1.0",
51
+ "@atlaskit/portal": "^6.2.0",
52
52
  "@atlaskit/primitives": "^22.2.0",
53
53
  "@atlaskit/react-compiler-gating": "^0.2.0",
54
54
  "@atlaskit/react-ufo": "^7.3.0",
@@ -141,6 +141,9 @@
141
141
  },
142
142
  "platform_a11y_fixes_reaction_emoji": {
143
143
  "type": "boolean"
144
+ },
145
+ "a11y_reactions_reading_order": {
146
+ "type": "boolean"
144
147
  }
145
148
  },
146
149
  "platform-experiments": {