@atlaskit/editor-plugin-media 10.0.9 → 10.0.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 +17 -0
- package/dist/cjs/nodeviews/mediaSingleNext.js +1 -4
- package/dist/cjs/ui/ImageBorder/index.js +77 -25
- package/dist/cjs/ui/MediaViewer/MediaViewerContainer.js +4 -11
- package/dist/es2019/nodeviews/mediaSingleNext.js +1 -4
- package/dist/es2019/ui/ImageBorder/index.js +79 -23
- package/dist/es2019/ui/MediaViewer/MediaViewerContainer.js +4 -11
- package/dist/esm/nodeviews/mediaSingleNext.js +1 -4
- package/dist/esm/ui/ImageBorder/index.js +77 -25
- package/dist/esm/ui/MediaViewer/MediaViewerContainer.js +4 -11
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# @atlaskit/editor-plugin-media
|
|
2
2
|
|
|
3
|
+
## 10.0.11
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`0d04e250bdf4b`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/0d04e250bdf4b) -
|
|
8
|
+
[ux] Making submenus for media (color/size) and table (background color) consistent with ADS and
|
|
9
|
+
fixing incorrect gate mocking in editor-plugin-ai-tests
|
|
10
|
+
- Updated dependencies
|
|
11
|
+
|
|
12
|
+
## 10.0.10
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- [`46ff42199054d`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/46ff42199054d) -
|
|
17
|
+
Cleans up experiment platform_editor_eslint_suppression_fix
|
|
18
|
+
- Updated dependencies
|
|
19
|
+
|
|
3
20
|
## 10.0.9
|
|
4
21
|
|
|
5
22
|
### Patch Changes
|
|
@@ -448,9 +448,6 @@ var MediaSingleNodeNext = exports.MediaSingleNodeNext = function MediaSingleNode
|
|
|
448
448
|
(_captionPlaceHolderRe = captionPlaceHolderRef.current) === null || _captionPlaceHolderRe === void 0 || _captionPlaceHolderRe.click();
|
|
449
449
|
}, [mediaSingleWrapperRef, captionPlaceHolderRef]);
|
|
450
450
|
var onMediaSingleKeyDown = _react.default.useCallback(function (event) {
|
|
451
|
-
if (!(0, _expValEquals.expValEquals)('platform_editor_eslint_suppression_fix', 'isEnabled', true)) {
|
|
452
|
-
return;
|
|
453
|
-
}
|
|
454
451
|
if (mediaSingleWrapperRef.current !== event.target) {
|
|
455
452
|
return;
|
|
456
453
|
}
|
|
@@ -479,7 +476,7 @@ var MediaSingleNodeNext = exports.MediaSingleNodeNext = function MediaSingleNode
|
|
|
479
476
|
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
|
|
480
477
|
,
|
|
481
478
|
className: _styles.MediaSingleNodeSelector,
|
|
482
|
-
onClick: notIos
|
|
479
|
+
onClick: notIos ? undefined : onMediaSingleClicked,
|
|
483
480
|
onKeyDown: notIos ? undefined : onMediaSingleKeyDown
|
|
484
481
|
}, (0, _react2.jsx)(_mediaSingle.MediaBadges, {
|
|
485
482
|
mediaElement: currentMediaElement(),
|
|
@@ -97,12 +97,20 @@ var ImageBorder = function ImageBorder(_ref) {
|
|
|
97
97
|
ref.style.left = "-".concat(rect.width, "px");
|
|
98
98
|
}
|
|
99
99
|
};
|
|
100
|
-
var handleTriggerByKeyboard = function handleTriggerByKeyboard(event, callback) {
|
|
101
|
-
if (
|
|
102
|
-
|
|
103
|
-
callback();
|
|
104
|
-
setIsOpenedByKeyboard(true);
|
|
100
|
+
var handleTriggerByKeyboard = function handleTriggerByKeyboard(event, allowedKeys, callback) {
|
|
101
|
+
if (!allowedKeys.includes(event.key)) {
|
|
102
|
+
return;
|
|
105
103
|
}
|
|
104
|
+
event.preventDefault();
|
|
105
|
+
callback();
|
|
106
|
+
setIsOpenedByKeyboard(true);
|
|
107
|
+
};
|
|
108
|
+
var handleTriggerToolbarByKeyboard = function handleTriggerToolbarByKeyboard(event, callback) {
|
|
109
|
+
handleTriggerByKeyboard(event, ['Enter', ' '], callback);
|
|
110
|
+
};
|
|
111
|
+
var handleTriggerSubmenuByKeyboard = function handleTriggerSubmenuByKeyboard(event, callback) {
|
|
112
|
+
var keys = (0, _expValEquals.expValEquals)('platform_editor_toolbar_submenu_open_click', 'isEnabled', true) ? ['Enter', 'ArrowRight'] : ['Enter', ' '];
|
|
113
|
+
handleTriggerByKeyboard(event, keys, callback);
|
|
106
114
|
};
|
|
107
115
|
(0, _react.useEffect)(function () {
|
|
108
116
|
var focusFirstOption = function focusFirstOption(submenuRef, isOpen) {
|
|
@@ -149,8 +157,18 @@ var ImageBorder = function ImageBorder(_ref) {
|
|
|
149
157
|
_styles2.dropdownOptionButton,
|
|
150
158
|
"aria-expanded": isColorSubmenuOpen,
|
|
151
159
|
onKeyDown: function onKeyDown(e) {
|
|
152
|
-
return
|
|
153
|
-
|
|
160
|
+
return handleTriggerSubmenuByKeyboard(e, function () {
|
|
161
|
+
if ((0, _expValEquals.expValEquals)('platform_editor_toolbar_submenu_open_click', 'isEnabled', true)) {
|
|
162
|
+
setIsColorSubmenuOpen(function (prev) {
|
|
163
|
+
var next = !prev;
|
|
164
|
+
if (next) {
|
|
165
|
+
setIsSizeSubmenuOpen(false);
|
|
166
|
+
}
|
|
167
|
+
return next;
|
|
168
|
+
});
|
|
169
|
+
} else {
|
|
170
|
+
setIsColorSubmenuOpen(!isColorSubmenuOpen);
|
|
171
|
+
}
|
|
154
172
|
});
|
|
155
173
|
}
|
|
156
174
|
}, (0, _react2.jsx)(_compiled.Text, null, formatMessage(_media.imageBorderMessages.borderColor)), (0, _react2.jsx)("div", {
|
|
@@ -216,8 +234,18 @@ var ImageBorder = function ImageBorder(_ref) {
|
|
|
216
234
|
"aria-expanded": isSizeSubmenuOpen,
|
|
217
235
|
ref: dropDownSizeOptionButton,
|
|
218
236
|
onKeyDown: function onKeyDown(e) {
|
|
219
|
-
return
|
|
220
|
-
|
|
237
|
+
return handleTriggerSubmenuByKeyboard(e, function () {
|
|
238
|
+
if ((0, _expValEquals.expValEquals)('platform_editor_toolbar_submenu_open_click', 'isEnabled', true)) {
|
|
239
|
+
setIsSizeSubmenuOpen(function (prev) {
|
|
240
|
+
var next = !prev;
|
|
241
|
+
if (next) {
|
|
242
|
+
setIsColorSubmenuOpen(false);
|
|
243
|
+
}
|
|
244
|
+
return next;
|
|
245
|
+
});
|
|
246
|
+
} else {
|
|
247
|
+
setIsSizeSubmenuOpen(!isSizeSubmenuOpen);
|
|
248
|
+
}
|
|
221
249
|
});
|
|
222
250
|
}
|
|
223
251
|
}, (0, _react2.jsx)(_compiled.Text, null, formatMessage(_media.imageBorderMessages.borderSize)), (0, _react2.jsx)("div", {
|
|
@@ -346,7 +374,7 @@ var ImageBorder = function ImageBorder(_ref) {
|
|
|
346
374
|
setIsOpenedByKeyboard(false);
|
|
347
375
|
},
|
|
348
376
|
onKeyDown: function onKeyDown(e) {
|
|
349
|
-
return
|
|
377
|
+
return handleTriggerToolbarByKeyboard(e, function () {
|
|
350
378
|
return setIsOpen(!isOpen);
|
|
351
379
|
});
|
|
352
380
|
}
|
|
@@ -357,7 +385,7 @@ var ImageBorder = function ImageBorder(_ref) {
|
|
|
357
385
|
forcePlacement: true,
|
|
358
386
|
stick: true
|
|
359
387
|
}, (0, _react2.jsx)("div", {
|
|
360
|
-
onMouseLeave: (0, _expValEquals.expValEquals)('
|
|
388
|
+
onMouseLeave: (0, _expValEquals.expValEquals)('platform_editor_toolbar_submenu_open_click', 'isEnabled', true) ? undefined : function () {
|
|
361
389
|
setIsColorSubmenuOpen(false);
|
|
362
390
|
setIsSizeSubmenuOpen(false);
|
|
363
391
|
}
|
|
@@ -395,30 +423,54 @@ var ImageBorder = function ImageBorder(_ref) {
|
|
|
395
423
|
onItemActivated: function onItemActivated(_ref3) {
|
|
396
424
|
var item = _ref3.item;
|
|
397
425
|
if (item.value.name === 'color') {
|
|
398
|
-
|
|
426
|
+
if ((0, _expValEquals.expValEquals)('platform_editor_toolbar_submenu_open_click', 'isEnabled', true)) {
|
|
427
|
+
setIsColorSubmenuOpen(function (prev) {
|
|
428
|
+
var next = !prev;
|
|
429
|
+
if (next) {
|
|
430
|
+
setIsSizeSubmenuOpen(false);
|
|
431
|
+
}
|
|
432
|
+
return next;
|
|
433
|
+
});
|
|
434
|
+
} else {
|
|
435
|
+
setIsColorSubmenuOpen(!isColorSubmenuOpen);
|
|
436
|
+
}
|
|
399
437
|
}
|
|
400
438
|
if (item.value.name === 'size') {
|
|
401
|
-
|
|
439
|
+
if ((0, _expValEquals.expValEquals)('platform_editor_toolbar_submenu_open_click', 'isEnabled', true)) {
|
|
440
|
+
setIsSizeSubmenuOpen(function (prev) {
|
|
441
|
+
var next = !prev;
|
|
442
|
+
if (next) {
|
|
443
|
+
setIsColorSubmenuOpen(false);
|
|
444
|
+
}
|
|
445
|
+
return next;
|
|
446
|
+
});
|
|
447
|
+
} else {
|
|
448
|
+
setIsSizeSubmenuOpen(!isSizeSubmenuOpen);
|
|
449
|
+
}
|
|
402
450
|
}
|
|
403
451
|
},
|
|
404
452
|
onMouseEnter: function onMouseEnter(_ref4) {
|
|
405
453
|
var item = _ref4.item;
|
|
406
|
-
if (
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
454
|
+
if (!(0, _expValEquals.expValEquals)('platform_editor_toolbar_submenu_open_click', 'isEnabled', true)) {
|
|
455
|
+
if (item.value.name === 'color') {
|
|
456
|
+
setIsColorSubmenuOpen(true);
|
|
457
|
+
setIsOpenedByKeyboard(false);
|
|
458
|
+
}
|
|
459
|
+
if (item.value.name === 'size') {
|
|
460
|
+
setIsSizeSubmenuOpen(true);
|
|
461
|
+
setIsOpenedByKeyboard(false);
|
|
462
|
+
}
|
|
413
463
|
}
|
|
414
464
|
},
|
|
415
465
|
onMouseLeave: function onMouseLeave(_ref5) {
|
|
416
466
|
var item = _ref5.item;
|
|
417
|
-
if (
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
467
|
+
if (!(0, _expValEquals.expValEquals)('platform_editor_toolbar_submenu_open_click', 'isEnabled', true)) {
|
|
468
|
+
if (item.value.name === 'color') {
|
|
469
|
+
setIsColorSubmenuOpen(false);
|
|
470
|
+
}
|
|
471
|
+
if (item.value.name === 'size') {
|
|
472
|
+
setIsSizeSubmenuOpen(false);
|
|
473
|
+
}
|
|
422
474
|
}
|
|
423
475
|
},
|
|
424
476
|
fitWidth: fitWidth + fitTolerance,
|
|
@@ -9,7 +9,6 @@ exports.MediaViewerContainer = void 0;
|
|
|
9
9
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
10
|
var _react = _interopRequireWildcard(require("react"));
|
|
11
11
|
var _react2 = require("@emotion/react");
|
|
12
|
-
var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
|
|
13
12
|
var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
|
|
14
13
|
var _isType = require("../../pm-plugins/utils/is-type");
|
|
15
14
|
var _utils = require("../../ui/toolbar/utils");
|
|
@@ -54,22 +53,16 @@ var MediaViewerContainer = exports.MediaViewerContainer = function MediaViewerCo
|
|
|
54
53
|
};
|
|
55
54
|
var isVideoMedia = (0, _isType.isVideo)((_mediaNode$firstChild = mediaNode.firstChild) === null || _mediaNode$firstChild === void 0 ? void 0 : _mediaNode$firstChild.attrs.__fileMimeType);
|
|
56
55
|
var shouldShowViewer = isEditorViewMode && showViewer && selectedNodeAttrs && mediaClientConfig && !isVideoMedia && (0, _experiments.editorExperiment)('platform_editor_controls', 'control');
|
|
57
|
-
return (0, _react2.jsx)(_react.Fragment, null, isEditorViewMode ? (0, _react2.jsx)(_react.Fragment, null, isInline ?
|
|
58
|
-
// remove eslint disable when platform_editor_eslint_suppression_fix has been cleaned up
|
|
59
|
-
// eslint-disable-next-line @atlassian/a11y/click-events-have-key-events, @atlassian/a11y/interactive-element-not-keyboard-focusable, @atlassian/a11y/no-static-element-interactions
|
|
60
|
-
(0, _react2.jsx)("span", {
|
|
56
|
+
return (0, _react2.jsx)(_react.Fragment, null, isEditorViewMode ? (0, _react2.jsx)(_react.Fragment, null, isInline ? (0, _react2.jsx)("span", {
|
|
61
57
|
onClick: showMediaViewer,
|
|
62
58
|
css: interactiveStyles,
|
|
63
59
|
"data-testid": mediaViewerContainerTestID,
|
|
64
|
-
role:
|
|
65
|
-
}, children) :
|
|
66
|
-
// remove eslint disable when platform_editor_eslint_suppression_fix has been cleaned up
|
|
67
|
-
// eslint-disable-next-line @atlassian/a11y/click-events-have-key-events, @atlassian/a11y/interactive-element-not-keyboard-focusable, @atlassian/a11y/no-static-element-interactions
|
|
68
|
-
(0, _react2.jsx)("div", {
|
|
60
|
+
role: "none"
|
|
61
|
+
}, children) : (0, _react2.jsx)("div", {
|
|
69
62
|
onClick: showMediaViewer,
|
|
70
63
|
css: interactiveStyles,
|
|
71
64
|
"data-testid": mediaViewerContainerTestID,
|
|
72
|
-
role:
|
|
65
|
+
role: "none"
|
|
73
66
|
}, children), shouldShowViewer && (0, _react2.jsx)(_PortalWrapper.RenderMediaViewer, {
|
|
74
67
|
selectedNodeAttrs: selectedNodeAttrs,
|
|
75
68
|
mediaClientConfig: mediaClientConfig,
|
|
@@ -408,9 +408,6 @@ export const MediaSingleNodeNext = mediaSingleNodeNextProps => {
|
|
|
408
408
|
(_captionPlaceHolderRe = captionPlaceHolderRef.current) === null || _captionPlaceHolderRe === void 0 ? void 0 : _captionPlaceHolderRe.click();
|
|
409
409
|
}, [mediaSingleWrapperRef, captionPlaceHolderRef]);
|
|
410
410
|
const onMediaSingleKeyDown = React.useCallback(event => {
|
|
411
|
-
if (!expValEquals('platform_editor_eslint_suppression_fix', 'isEnabled', true)) {
|
|
412
|
-
return;
|
|
413
|
-
}
|
|
414
411
|
if (mediaSingleWrapperRef.current !== event.target) {
|
|
415
412
|
return;
|
|
416
413
|
}
|
|
@@ -439,7 +436,7 @@ export const MediaSingleNodeNext = mediaSingleNodeNextProps => {
|
|
|
439
436
|
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
|
|
440
437
|
,
|
|
441
438
|
className: MediaSingleNodeSelector,
|
|
442
|
-
onClick: notIos
|
|
439
|
+
onClick: notIos ? undefined : onMediaSingleClicked,
|
|
443
440
|
onKeyDown: notIos ? undefined : onMediaSingleKeyDown
|
|
444
441
|
}, jsx(MediaBadges, {
|
|
445
442
|
mediaElement: currentMediaElement(),
|
|
@@ -79,12 +79,20 @@ const ImageBorder = ({
|
|
|
79
79
|
ref.style.left = `-${rect.width}px`;
|
|
80
80
|
}
|
|
81
81
|
};
|
|
82
|
-
const handleTriggerByKeyboard = (event, callback) => {
|
|
83
|
-
if (
|
|
84
|
-
|
|
85
|
-
callback();
|
|
86
|
-
setIsOpenedByKeyboard(true);
|
|
82
|
+
const handleTriggerByKeyboard = (event, allowedKeys, callback) => {
|
|
83
|
+
if (!allowedKeys.includes(event.key)) {
|
|
84
|
+
return;
|
|
87
85
|
}
|
|
86
|
+
event.preventDefault();
|
|
87
|
+
callback();
|
|
88
|
+
setIsOpenedByKeyboard(true);
|
|
89
|
+
};
|
|
90
|
+
const handleTriggerToolbarByKeyboard = (event, callback) => {
|
|
91
|
+
handleTriggerByKeyboard(event, ['Enter', ' '], callback);
|
|
92
|
+
};
|
|
93
|
+
const handleTriggerSubmenuByKeyboard = (event, callback) => {
|
|
94
|
+
const keys = expValEquals('platform_editor_toolbar_submenu_open_click', 'isEnabled', true) ? ['Enter', 'ArrowRight'] : ['Enter', ' '];
|
|
95
|
+
handleTriggerByKeyboard(event, keys, callback);
|
|
88
96
|
};
|
|
89
97
|
useEffect(() => {
|
|
90
98
|
const focusFirstOption = (submenuRef, isOpen) => {
|
|
@@ -130,7 +138,19 @@ const ImageBorder = ({
|
|
|
130
138
|
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values, @atlaskit/design-system/consistent-css-prop-usage -- Ignored via go/DSP-18766
|
|
131
139
|
dropdownOptionButton,
|
|
132
140
|
"aria-expanded": isColorSubmenuOpen,
|
|
133
|
-
onKeyDown: e =>
|
|
141
|
+
onKeyDown: e => handleTriggerSubmenuByKeyboard(e, () => {
|
|
142
|
+
if (expValEquals('platform_editor_toolbar_submenu_open_click', 'isEnabled', true)) {
|
|
143
|
+
setIsColorSubmenuOpen(prev => {
|
|
144
|
+
const next = !prev;
|
|
145
|
+
if (next) {
|
|
146
|
+
setIsSizeSubmenuOpen(false);
|
|
147
|
+
}
|
|
148
|
+
return next;
|
|
149
|
+
});
|
|
150
|
+
} else {
|
|
151
|
+
setIsColorSubmenuOpen(!isColorSubmenuOpen);
|
|
152
|
+
}
|
|
153
|
+
})
|
|
134
154
|
}, jsx(Text, null, formatMessage(messages.borderColor)), jsx("div", {
|
|
135
155
|
css: contextualMenuArrow
|
|
136
156
|
})), jsx("div", {
|
|
@@ -193,7 +213,19 @@ const ImageBorder = ({
|
|
|
193
213
|
dropdownOptionButton,
|
|
194
214
|
"aria-expanded": isSizeSubmenuOpen,
|
|
195
215
|
ref: dropDownSizeOptionButton,
|
|
196
|
-
onKeyDown: e =>
|
|
216
|
+
onKeyDown: e => handleTriggerSubmenuByKeyboard(e, () => {
|
|
217
|
+
if (expValEquals('platform_editor_toolbar_submenu_open_click', 'isEnabled', true)) {
|
|
218
|
+
setIsSizeSubmenuOpen(prev => {
|
|
219
|
+
const next = !prev;
|
|
220
|
+
if (next) {
|
|
221
|
+
setIsColorSubmenuOpen(false);
|
|
222
|
+
}
|
|
223
|
+
return next;
|
|
224
|
+
});
|
|
225
|
+
} else {
|
|
226
|
+
setIsSizeSubmenuOpen(!isSizeSubmenuOpen);
|
|
227
|
+
}
|
|
228
|
+
})
|
|
197
229
|
}, jsx(Text, null, formatMessage(messages.borderSize)), jsx("div", {
|
|
198
230
|
css: contextualMenuArrow
|
|
199
231
|
})), jsx("div", {
|
|
@@ -320,7 +352,7 @@ const ImageBorder = ({
|
|
|
320
352
|
setIsOpen(!isOpen);
|
|
321
353
|
setIsOpenedByKeyboard(false);
|
|
322
354
|
},
|
|
323
|
-
onKeyDown: e =>
|
|
355
|
+
onKeyDown: e => handleTriggerToolbarByKeyboard(e, () => setIsOpen(!isOpen))
|
|
324
356
|
}))), jsx(Popup, {
|
|
325
357
|
target: popupTarget.current ? popupTarget.current : undefined,
|
|
326
358
|
fitWidth: fitWidth + fitTolerance,
|
|
@@ -328,7 +360,7 @@ const ImageBorder = ({
|
|
|
328
360
|
forcePlacement: true,
|
|
329
361
|
stick: true
|
|
330
362
|
}, jsx("div", {
|
|
331
|
-
onMouseLeave: expValEquals('
|
|
363
|
+
onMouseLeave: expValEquals('platform_editor_toolbar_submenu_open_click', 'isEnabled', true) ? undefined : () => {
|
|
332
364
|
setIsColorSubmenuOpen(false);
|
|
333
365
|
setIsSizeSubmenuOpen(false);
|
|
334
366
|
}
|
|
@@ -365,32 +397,56 @@ const ImageBorder = ({
|
|
|
365
397
|
item
|
|
366
398
|
}) => {
|
|
367
399
|
if (item.value.name === 'color') {
|
|
368
|
-
|
|
400
|
+
if (expValEquals('platform_editor_toolbar_submenu_open_click', 'isEnabled', true)) {
|
|
401
|
+
setIsColorSubmenuOpen(prev => {
|
|
402
|
+
const next = !prev;
|
|
403
|
+
if (next) {
|
|
404
|
+
setIsSizeSubmenuOpen(false);
|
|
405
|
+
}
|
|
406
|
+
return next;
|
|
407
|
+
});
|
|
408
|
+
} else {
|
|
409
|
+
setIsColorSubmenuOpen(!isColorSubmenuOpen);
|
|
410
|
+
}
|
|
369
411
|
}
|
|
370
412
|
if (item.value.name === 'size') {
|
|
371
|
-
|
|
413
|
+
if (expValEquals('platform_editor_toolbar_submenu_open_click', 'isEnabled', true)) {
|
|
414
|
+
setIsSizeSubmenuOpen(prev => {
|
|
415
|
+
const next = !prev;
|
|
416
|
+
if (next) {
|
|
417
|
+
setIsColorSubmenuOpen(false);
|
|
418
|
+
}
|
|
419
|
+
return next;
|
|
420
|
+
});
|
|
421
|
+
} else {
|
|
422
|
+
setIsSizeSubmenuOpen(!isSizeSubmenuOpen);
|
|
423
|
+
}
|
|
372
424
|
}
|
|
373
425
|
},
|
|
374
426
|
onMouseEnter: ({
|
|
375
427
|
item
|
|
376
428
|
}) => {
|
|
377
|
-
if (
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
429
|
+
if (!expValEquals('platform_editor_toolbar_submenu_open_click', 'isEnabled', true)) {
|
|
430
|
+
if (item.value.name === 'color') {
|
|
431
|
+
setIsColorSubmenuOpen(true);
|
|
432
|
+
setIsOpenedByKeyboard(false);
|
|
433
|
+
}
|
|
434
|
+
if (item.value.name === 'size') {
|
|
435
|
+
setIsSizeSubmenuOpen(true);
|
|
436
|
+
setIsOpenedByKeyboard(false);
|
|
437
|
+
}
|
|
384
438
|
}
|
|
385
439
|
},
|
|
386
440
|
onMouseLeave: ({
|
|
387
441
|
item
|
|
388
442
|
}) => {
|
|
389
|
-
if (
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
443
|
+
if (!expValEquals('platform_editor_toolbar_submenu_open_click', 'isEnabled', true)) {
|
|
444
|
+
if (item.value.name === 'color') {
|
|
445
|
+
setIsColorSubmenuOpen(false);
|
|
446
|
+
}
|
|
447
|
+
if (item.value.name === 'size') {
|
|
448
|
+
setIsSizeSubmenuOpen(false);
|
|
449
|
+
}
|
|
394
450
|
}
|
|
395
451
|
},
|
|
396
452
|
fitWidth: fitWidth + fitTolerance,
|
|
@@ -6,7 +6,6 @@ import React, { Fragment, useEffect, useState } from 'react';
|
|
|
6
6
|
|
|
7
7
|
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled, @typescript-eslint/consistent-type-imports
|
|
8
8
|
import { css, jsx } from '@emotion/react';
|
|
9
|
-
import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
|
|
10
9
|
import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
|
|
11
10
|
import { isVideo } from '../../pm-plugins/utils/is-type';
|
|
12
11
|
import { getSelectedNearestMediaContainerNodeAttrsFunction } from '../../ui/toolbar/utils';
|
|
@@ -38,22 +37,16 @@ export const MediaViewerContainer = ({
|
|
|
38
37
|
};
|
|
39
38
|
const isVideoMedia = isVideo((_mediaNode$firstChild = mediaNode.firstChild) === null || _mediaNode$firstChild === void 0 ? void 0 : _mediaNode$firstChild.attrs.__fileMimeType);
|
|
40
39
|
const shouldShowViewer = isEditorViewMode && showViewer && selectedNodeAttrs && mediaClientConfig && !isVideoMedia && editorExperiment('platform_editor_controls', 'control');
|
|
41
|
-
return jsx(Fragment, null, isEditorViewMode ? jsx(Fragment, null, isInline ?
|
|
42
|
-
// remove eslint disable when platform_editor_eslint_suppression_fix has been cleaned up
|
|
43
|
-
// eslint-disable-next-line @atlassian/a11y/click-events-have-key-events, @atlassian/a11y/interactive-element-not-keyboard-focusable, @atlassian/a11y/no-static-element-interactions
|
|
44
|
-
jsx("span", {
|
|
40
|
+
return jsx(Fragment, null, isEditorViewMode ? jsx(Fragment, null, isInline ? jsx("span", {
|
|
45
41
|
onClick: showMediaViewer,
|
|
46
42
|
css: interactiveStyles,
|
|
47
43
|
"data-testid": mediaViewerContainerTestID,
|
|
48
|
-
role:
|
|
49
|
-
}, children) :
|
|
50
|
-
// remove eslint disable when platform_editor_eslint_suppression_fix has been cleaned up
|
|
51
|
-
// eslint-disable-next-line @atlassian/a11y/click-events-have-key-events, @atlassian/a11y/interactive-element-not-keyboard-focusable, @atlassian/a11y/no-static-element-interactions
|
|
52
|
-
jsx("div", {
|
|
44
|
+
role: "none"
|
|
45
|
+
}, children) : jsx("div", {
|
|
53
46
|
onClick: showMediaViewer,
|
|
54
47
|
css: interactiveStyles,
|
|
55
48
|
"data-testid": mediaViewerContainerTestID,
|
|
56
|
-
role:
|
|
49
|
+
role: "none"
|
|
57
50
|
}, children), shouldShowViewer && jsx(RenderMediaViewer, {
|
|
58
51
|
selectedNodeAttrs: selectedNodeAttrs,
|
|
59
52
|
mediaClientConfig: mediaClientConfig,
|
|
@@ -442,9 +442,6 @@ export var MediaSingleNodeNext = function MediaSingleNodeNext(mediaSingleNodeNex
|
|
|
442
442
|
(_captionPlaceHolderRe = captionPlaceHolderRef.current) === null || _captionPlaceHolderRe === void 0 || _captionPlaceHolderRe.click();
|
|
443
443
|
}, [mediaSingleWrapperRef, captionPlaceHolderRef]);
|
|
444
444
|
var onMediaSingleKeyDown = React.useCallback(function (event) {
|
|
445
|
-
if (!expValEquals('platform_editor_eslint_suppression_fix', 'isEnabled', true)) {
|
|
446
|
-
return;
|
|
447
|
-
}
|
|
448
445
|
if (mediaSingleWrapperRef.current !== event.target) {
|
|
449
446
|
return;
|
|
450
447
|
}
|
|
@@ -473,7 +470,7 @@ export var MediaSingleNodeNext = function MediaSingleNodeNext(mediaSingleNodeNex
|
|
|
473
470
|
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
|
|
474
471
|
,
|
|
475
472
|
className: MediaSingleNodeSelector,
|
|
476
|
-
onClick: notIos
|
|
473
|
+
onClick: notIos ? undefined : onMediaSingleClicked,
|
|
477
474
|
onKeyDown: notIos ? undefined : onMediaSingleKeyDown
|
|
478
475
|
}, jsx(MediaBadges, {
|
|
479
476
|
mediaElement: currentMediaElement(),
|
|
@@ -89,12 +89,20 @@ var ImageBorder = function ImageBorder(_ref) {
|
|
|
89
89
|
ref.style.left = "-".concat(rect.width, "px");
|
|
90
90
|
}
|
|
91
91
|
};
|
|
92
|
-
var handleTriggerByKeyboard = function handleTriggerByKeyboard(event, callback) {
|
|
93
|
-
if (
|
|
94
|
-
|
|
95
|
-
callback();
|
|
96
|
-
setIsOpenedByKeyboard(true);
|
|
92
|
+
var handleTriggerByKeyboard = function handleTriggerByKeyboard(event, allowedKeys, callback) {
|
|
93
|
+
if (!allowedKeys.includes(event.key)) {
|
|
94
|
+
return;
|
|
97
95
|
}
|
|
96
|
+
event.preventDefault();
|
|
97
|
+
callback();
|
|
98
|
+
setIsOpenedByKeyboard(true);
|
|
99
|
+
};
|
|
100
|
+
var handleTriggerToolbarByKeyboard = function handleTriggerToolbarByKeyboard(event, callback) {
|
|
101
|
+
handleTriggerByKeyboard(event, ['Enter', ' '], callback);
|
|
102
|
+
};
|
|
103
|
+
var handleTriggerSubmenuByKeyboard = function handleTriggerSubmenuByKeyboard(event, callback) {
|
|
104
|
+
var keys = expValEquals('platform_editor_toolbar_submenu_open_click', 'isEnabled', true) ? ['Enter', 'ArrowRight'] : ['Enter', ' '];
|
|
105
|
+
handleTriggerByKeyboard(event, keys, callback);
|
|
98
106
|
};
|
|
99
107
|
useEffect(function () {
|
|
100
108
|
var focusFirstOption = function focusFirstOption(submenuRef, isOpen) {
|
|
@@ -141,8 +149,18 @@ var ImageBorder = function ImageBorder(_ref) {
|
|
|
141
149
|
dropdownOptionButton,
|
|
142
150
|
"aria-expanded": isColorSubmenuOpen,
|
|
143
151
|
onKeyDown: function onKeyDown(e) {
|
|
144
|
-
return
|
|
145
|
-
|
|
152
|
+
return handleTriggerSubmenuByKeyboard(e, function () {
|
|
153
|
+
if (expValEquals('platform_editor_toolbar_submenu_open_click', 'isEnabled', true)) {
|
|
154
|
+
setIsColorSubmenuOpen(function (prev) {
|
|
155
|
+
var next = !prev;
|
|
156
|
+
if (next) {
|
|
157
|
+
setIsSizeSubmenuOpen(false);
|
|
158
|
+
}
|
|
159
|
+
return next;
|
|
160
|
+
});
|
|
161
|
+
} else {
|
|
162
|
+
setIsColorSubmenuOpen(!isColorSubmenuOpen);
|
|
163
|
+
}
|
|
146
164
|
});
|
|
147
165
|
}
|
|
148
166
|
}, jsx(Text, null, formatMessage(messages.borderColor)), jsx("div", {
|
|
@@ -208,8 +226,18 @@ var ImageBorder = function ImageBorder(_ref) {
|
|
|
208
226
|
"aria-expanded": isSizeSubmenuOpen,
|
|
209
227
|
ref: dropDownSizeOptionButton,
|
|
210
228
|
onKeyDown: function onKeyDown(e) {
|
|
211
|
-
return
|
|
212
|
-
|
|
229
|
+
return handleTriggerSubmenuByKeyboard(e, function () {
|
|
230
|
+
if (expValEquals('platform_editor_toolbar_submenu_open_click', 'isEnabled', true)) {
|
|
231
|
+
setIsSizeSubmenuOpen(function (prev) {
|
|
232
|
+
var next = !prev;
|
|
233
|
+
if (next) {
|
|
234
|
+
setIsColorSubmenuOpen(false);
|
|
235
|
+
}
|
|
236
|
+
return next;
|
|
237
|
+
});
|
|
238
|
+
} else {
|
|
239
|
+
setIsSizeSubmenuOpen(!isSizeSubmenuOpen);
|
|
240
|
+
}
|
|
213
241
|
});
|
|
214
242
|
}
|
|
215
243
|
}, jsx(Text, null, formatMessage(messages.borderSize)), jsx("div", {
|
|
@@ -338,7 +366,7 @@ var ImageBorder = function ImageBorder(_ref) {
|
|
|
338
366
|
setIsOpenedByKeyboard(false);
|
|
339
367
|
},
|
|
340
368
|
onKeyDown: function onKeyDown(e) {
|
|
341
|
-
return
|
|
369
|
+
return handleTriggerToolbarByKeyboard(e, function () {
|
|
342
370
|
return setIsOpen(!isOpen);
|
|
343
371
|
});
|
|
344
372
|
}
|
|
@@ -349,7 +377,7 @@ var ImageBorder = function ImageBorder(_ref) {
|
|
|
349
377
|
forcePlacement: true,
|
|
350
378
|
stick: true
|
|
351
379
|
}, jsx("div", {
|
|
352
|
-
onMouseLeave: expValEquals('
|
|
380
|
+
onMouseLeave: expValEquals('platform_editor_toolbar_submenu_open_click', 'isEnabled', true) ? undefined : function () {
|
|
353
381
|
setIsColorSubmenuOpen(false);
|
|
354
382
|
setIsSizeSubmenuOpen(false);
|
|
355
383
|
}
|
|
@@ -387,30 +415,54 @@ var ImageBorder = function ImageBorder(_ref) {
|
|
|
387
415
|
onItemActivated: function onItemActivated(_ref3) {
|
|
388
416
|
var item = _ref3.item;
|
|
389
417
|
if (item.value.name === 'color') {
|
|
390
|
-
|
|
418
|
+
if (expValEquals('platform_editor_toolbar_submenu_open_click', 'isEnabled', true)) {
|
|
419
|
+
setIsColorSubmenuOpen(function (prev) {
|
|
420
|
+
var next = !prev;
|
|
421
|
+
if (next) {
|
|
422
|
+
setIsSizeSubmenuOpen(false);
|
|
423
|
+
}
|
|
424
|
+
return next;
|
|
425
|
+
});
|
|
426
|
+
} else {
|
|
427
|
+
setIsColorSubmenuOpen(!isColorSubmenuOpen);
|
|
428
|
+
}
|
|
391
429
|
}
|
|
392
430
|
if (item.value.name === 'size') {
|
|
393
|
-
|
|
431
|
+
if (expValEquals('platform_editor_toolbar_submenu_open_click', 'isEnabled', true)) {
|
|
432
|
+
setIsSizeSubmenuOpen(function (prev) {
|
|
433
|
+
var next = !prev;
|
|
434
|
+
if (next) {
|
|
435
|
+
setIsColorSubmenuOpen(false);
|
|
436
|
+
}
|
|
437
|
+
return next;
|
|
438
|
+
});
|
|
439
|
+
} else {
|
|
440
|
+
setIsSizeSubmenuOpen(!isSizeSubmenuOpen);
|
|
441
|
+
}
|
|
394
442
|
}
|
|
395
443
|
},
|
|
396
444
|
onMouseEnter: function onMouseEnter(_ref4) {
|
|
397
445
|
var item = _ref4.item;
|
|
398
|
-
if (
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
446
|
+
if (!expValEquals('platform_editor_toolbar_submenu_open_click', 'isEnabled', true)) {
|
|
447
|
+
if (item.value.name === 'color') {
|
|
448
|
+
setIsColorSubmenuOpen(true);
|
|
449
|
+
setIsOpenedByKeyboard(false);
|
|
450
|
+
}
|
|
451
|
+
if (item.value.name === 'size') {
|
|
452
|
+
setIsSizeSubmenuOpen(true);
|
|
453
|
+
setIsOpenedByKeyboard(false);
|
|
454
|
+
}
|
|
405
455
|
}
|
|
406
456
|
},
|
|
407
457
|
onMouseLeave: function onMouseLeave(_ref5) {
|
|
408
458
|
var item = _ref5.item;
|
|
409
|
-
if (
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
459
|
+
if (!expValEquals('platform_editor_toolbar_submenu_open_click', 'isEnabled', true)) {
|
|
460
|
+
if (item.value.name === 'color') {
|
|
461
|
+
setIsColorSubmenuOpen(false);
|
|
462
|
+
}
|
|
463
|
+
if (item.value.name === 'size') {
|
|
464
|
+
setIsSizeSubmenuOpen(false);
|
|
465
|
+
}
|
|
414
466
|
}
|
|
415
467
|
},
|
|
416
468
|
fitWidth: fitWidth + fitTolerance,
|
|
@@ -7,7 +7,6 @@ import React, { Fragment, useEffect, useState } from 'react';
|
|
|
7
7
|
|
|
8
8
|
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled, @typescript-eslint/consistent-type-imports
|
|
9
9
|
import { css, jsx } from '@emotion/react';
|
|
10
|
-
import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
|
|
11
10
|
import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
|
|
12
11
|
import { isVideo } from '../../pm-plugins/utils/is-type';
|
|
13
12
|
import { getSelectedNearestMediaContainerNodeAttrsFunction } from '../../ui/toolbar/utils';
|
|
@@ -44,22 +43,16 @@ export var MediaViewerContainer = function MediaViewerContainer(_ref) {
|
|
|
44
43
|
};
|
|
45
44
|
var isVideoMedia = isVideo((_mediaNode$firstChild = mediaNode.firstChild) === null || _mediaNode$firstChild === void 0 ? void 0 : _mediaNode$firstChild.attrs.__fileMimeType);
|
|
46
45
|
var shouldShowViewer = isEditorViewMode && showViewer && selectedNodeAttrs && mediaClientConfig && !isVideoMedia && editorExperiment('platform_editor_controls', 'control');
|
|
47
|
-
return jsx(Fragment, null, isEditorViewMode ? jsx(Fragment, null, isInline ?
|
|
48
|
-
// remove eslint disable when platform_editor_eslint_suppression_fix has been cleaned up
|
|
49
|
-
// eslint-disable-next-line @atlassian/a11y/click-events-have-key-events, @atlassian/a11y/interactive-element-not-keyboard-focusable, @atlassian/a11y/no-static-element-interactions
|
|
50
|
-
jsx("span", {
|
|
46
|
+
return jsx(Fragment, null, isEditorViewMode ? jsx(Fragment, null, isInline ? jsx("span", {
|
|
51
47
|
onClick: showMediaViewer,
|
|
52
48
|
css: interactiveStyles,
|
|
53
49
|
"data-testid": mediaViewerContainerTestID,
|
|
54
|
-
role:
|
|
55
|
-
}, children) :
|
|
56
|
-
// remove eslint disable when platform_editor_eslint_suppression_fix has been cleaned up
|
|
57
|
-
// eslint-disable-next-line @atlassian/a11y/click-events-have-key-events, @atlassian/a11y/interactive-element-not-keyboard-focusable, @atlassian/a11y/no-static-element-interactions
|
|
58
|
-
jsx("div", {
|
|
50
|
+
role: "none"
|
|
51
|
+
}, children) : jsx("div", {
|
|
59
52
|
onClick: showMediaViewer,
|
|
60
53
|
css: interactiveStyles,
|
|
61
54
|
"data-testid": mediaViewerContainerTestID,
|
|
62
|
-
role:
|
|
55
|
+
role: "none"
|
|
63
56
|
}, children), shouldShowViewer && jsx(RenderMediaViewer, {
|
|
64
57
|
selectedNodeAttrs: selectedNodeAttrs,
|
|
65
58
|
mediaClientConfig: mediaClientConfig,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/editor-plugin-media",
|
|
3
|
-
"version": "10.0.
|
|
3
|
+
"version": "10.0.11",
|
|
4
4
|
"description": "Media plugin for @atlaskit/editor-core",
|
|
5
5
|
"author": "Atlassian Pty Ltd",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
"@atlaskit/primitives": "^18.0.0",
|
|
67
67
|
"@atlaskit/textfield": "^8.2.0",
|
|
68
68
|
"@atlaskit/theme": "^22.0.0",
|
|
69
|
-
"@atlaskit/tmp-editor-statsig": "^
|
|
69
|
+
"@atlaskit/tmp-editor-statsig": "^43.0.0",
|
|
70
70
|
"@atlaskit/tokens": "^11.1.0",
|
|
71
71
|
"@atlaskit/tooltip": "^21.0.0",
|
|
72
72
|
"@babel/runtime": "^7.0.0",
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
"uuid": "^3.1.0"
|
|
79
79
|
},
|
|
80
80
|
"peerDependencies": {
|
|
81
|
-
"@atlaskit/editor-common": "^112.
|
|
81
|
+
"@atlaskit/editor-common": "^112.7.0",
|
|
82
82
|
"@atlaskit/media-core": "^37.0.0",
|
|
83
83
|
"react": "^18.2.0",
|
|
84
84
|
"react-dom": "^18.2.0",
|