@atlaskit/editor-toolbar 0.18.0 → 0.18.1

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,12 @@
1
1
  # @atlaskit/editor-toolbar
2
2
 
3
+ ## 0.18.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [`15d7f87e470d5`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/15d7f87e470d5) -
8
+ [ux] EDITOR-3749 Fix keep selection after applying text color or highlight
9
+
3
10
  ## 0.18.0
4
11
 
5
12
  ### Minor Changes
@@ -39,7 +39,7 @@ var Color = exports.Color = /*#__PURE__*/(0, _react.memo)(function (_ref) {
39
39
  }, []);
40
40
  var handleClick = (0, _react.useCallback)(function (e) {
41
41
  e.preventDefault();
42
- onClick(value, label);
42
+ onClick(value, label, e);
43
43
  }, [onClick, value, label]);
44
44
  var handleKeyDown = (0, _react.useCallback)(function (e) {
45
45
  if (!onKeyDown) {
@@ -239,7 +239,7 @@ var ColorPalette = function ColorPalette(_ref) {
239
239
  case ' ':
240
240
  {
241
241
  event.preventDefault();
242
- onClick(value, label);
242
+ onClick(value, label, event);
243
243
  break;
244
244
  }
245
245
  default:
@@ -81,7 +81,7 @@ var ToolbarDropdownItem = exports.ToolbarDropdownItem = function ToolbarDropdown
81
81
  return /*#__PURE__*/_react.default.createElement(_dropdownMenu.DropdownItem, {
82
82
  onClick: function onClick(e) {
83
83
  if (!hasNestedDropdownMenu) {
84
- parentContext === null || parentContext === void 0 || parentContext.closeMenu();
84
+ parentContext === null || parentContext === void 0 || parentContext.closeMenu(e);
85
85
  }
86
86
  _onClick === null || _onClick === void 0 || _onClick(e);
87
87
  },
@@ -36,14 +36,14 @@ var ToolbarDropdownMenuContent = function ToolbarDropdownMenuContent(_ref) {
36
36
  var handleOpenChange = (0, _react.useCallback)(function (args) {
37
37
  onDropdownOpenChanged(args);
38
38
  if (!args.isOpen) {
39
- menuContext === null || menuContext === void 0 || menuContext.closeMenu();
39
+ menuContext === null || menuContext === void 0 || menuContext.closeMenu(args.event);
40
40
  }
41
41
  }, [menuContext, onDropdownOpenChanged]);
42
- var handleClick = (0, _react.useCallback)(function () {
42
+ var handleClick = (0, _react.useCallback)(function (e) {
43
43
  if (!(menuContext !== null && menuContext !== void 0 && menuContext.isOpen)) {
44
- menuContext === null || menuContext === void 0 || menuContext.openMenu();
44
+ menuContext === null || menuContext === void 0 || menuContext.openMenu(e);
45
45
  } else {
46
- menuContext === null || menuContext === void 0 || menuContext.closeMenu();
46
+ menuContext === null || menuContext === void 0 || menuContext.closeMenu(e);
47
47
  }
48
48
  }, [menuContext]);
49
49
  return /*#__PURE__*/_react.default.createElement(_dropdownMenu.default, {
@@ -57,7 +57,7 @@ var ToolbarDropdownMenuContent = function ToolbarDropdownMenuContent(_ref) {
57
57
  onBlur: triggerProps.onBlur,
58
58
  onClick: function onClick(e) {
59
59
  _onClick && _onClick(e, !(menuContext !== null && menuContext !== void 0 && menuContext.isOpen));
60
- handleClick();
60
+ handleClick(e);
61
61
  triggerProps.onClick && triggerProps.onClick(e);
62
62
  },
63
63
  onFocus: triggerProps.onFocus,
@@ -8,6 +8,8 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.useToolbarDropdownMenu = exports.ToolbarDropdownMenuProvider = void 0;
9
9
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
10
  var _react = _interopRequireWildcard(require("react"));
11
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
12
+ var _uiContext = require("../hooks/ui-context");
11
13
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
12
14
  var ToolbarDropdownMenuContext = /*#__PURE__*/(0, _react.createContext)(undefined);
13
15
  var useToolbarDropdownMenu = exports.useToolbarDropdownMenu = function useToolbarDropdownMenu() {
@@ -21,19 +23,33 @@ var ToolbarDropdownMenuProvider = exports.ToolbarDropdownMenuProvider = function
21
23
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
22
24
  isOpenInternal = _useState2[0],
23
25
  setIsOpenInternal = _useState2[1];
24
- var openMenu = function openMenu() {
26
+ var _useToolbarUI = (0, _uiContext.useToolbarUI)(),
27
+ onDropdownOpenChanged = _useToolbarUI.onDropdownOpenChanged;
28
+ var openMenu = function openMenu(event) {
25
29
  if (setIsOpen !== undefined) {
26
30
  setIsOpen(true);
27
31
  } else {
28
32
  setIsOpenInternal(true);
29
33
  }
34
+ if ((0, _platformFeatureFlags.fg)('platform_editor_toolbar_highlight_bug_fix')) {
35
+ onDropdownOpenChanged({
36
+ isOpen: true,
37
+ event: event
38
+ });
39
+ }
30
40
  };
31
- var closeMenu = function closeMenu() {
41
+ var closeMenu = function closeMenu(event) {
32
42
  if (setIsOpen !== undefined) {
33
43
  setIsOpen(false);
34
44
  } else {
35
45
  setIsOpenInternal(false);
36
46
  }
47
+ if ((0, _platformFeatureFlags.fg)('platform_editor_toolbar_highlight_bug_fix')) {
48
+ onDropdownOpenChanged({
49
+ isOpen: false,
50
+ event: event
51
+ });
52
+ }
37
53
  };
38
54
  var contextValue = {
39
55
  openMenu: openMenu,
@@ -30,7 +30,7 @@ export const Color = /*#__PURE__*/memo(({
30
30
  }, []);
31
31
  const handleClick = useCallback(e => {
32
32
  e.preventDefault();
33
- onClick(value, label);
33
+ onClick(value, label, e);
34
34
  }, [onClick, value, label]);
35
35
  const handleKeyDown = useCallback(e => {
36
36
  if (!onKeyDown) {
@@ -235,7 +235,7 @@ const ColorPalette = ({
235
235
  case ' ':
236
236
  {
237
237
  event.preventDefault();
238
- onClick(value, label);
238
+ onClick(value, label, event);
239
239
  break;
240
240
  }
241
241
  default:
@@ -69,7 +69,7 @@ export const ToolbarDropdownItem = ({
69
69
  return /*#__PURE__*/React.createElement(DropdownItem, {
70
70
  onClick: e => {
71
71
  if (!hasNestedDropdownMenu) {
72
- parentContext === null || parentContext === void 0 ? void 0 : parentContext.closeMenu();
72
+ parentContext === null || parentContext === void 0 ? void 0 : parentContext.closeMenu(e);
73
73
  }
74
74
  onClick === null || onClick === void 0 ? void 0 : onClick(e);
75
75
  },
@@ -29,14 +29,14 @@ const ToolbarDropdownMenuContent = ({
29
29
  const handleOpenChange = useCallback(args => {
30
30
  onDropdownOpenChanged(args);
31
31
  if (!args.isOpen) {
32
- menuContext === null || menuContext === void 0 ? void 0 : menuContext.closeMenu();
32
+ menuContext === null || menuContext === void 0 ? void 0 : menuContext.closeMenu(args.event);
33
33
  }
34
34
  }, [menuContext, onDropdownOpenChanged]);
35
- const handleClick = useCallback(() => {
35
+ const handleClick = useCallback(e => {
36
36
  if (!(menuContext !== null && menuContext !== void 0 && menuContext.isOpen)) {
37
- menuContext === null || menuContext === void 0 ? void 0 : menuContext.openMenu();
37
+ menuContext === null || menuContext === void 0 ? void 0 : menuContext.openMenu(e);
38
38
  } else {
39
- menuContext === null || menuContext === void 0 ? void 0 : menuContext.closeMenu();
39
+ menuContext === null || menuContext === void 0 ? void 0 : menuContext.closeMenu(e);
40
40
  }
41
41
  }, [menuContext]);
42
42
  return /*#__PURE__*/React.createElement(DropdownMenu, {
@@ -49,7 +49,7 @@ const ToolbarDropdownMenuContent = ({
49
49
  onBlur: triggerProps.onBlur,
50
50
  onClick: e => {
51
51
  onClick && onClick(e, !(menuContext !== null && menuContext !== void 0 && menuContext.isOpen));
52
- handleClick();
52
+ handleClick(e);
53
53
  triggerProps.onClick && triggerProps.onClick(e);
54
54
  },
55
55
  onFocus: triggerProps.onFocus,
@@ -1,4 +1,6 @@
1
1
  import React, { createContext, useContext, useState } from 'react';
2
+ import { fg } from '@atlaskit/platform-feature-flags';
3
+ import { useToolbarUI } from '../hooks/ui-context';
2
4
  const ToolbarDropdownMenuContext = /*#__PURE__*/createContext(undefined);
3
5
  export const useToolbarDropdownMenu = () => {
4
6
  return useContext(ToolbarDropdownMenuContext);
@@ -9,19 +11,34 @@ export const ToolbarDropdownMenuProvider = ({
9
11
  setIsOpen
10
12
  }) => {
11
13
  const [isOpenInternal, setIsOpenInternal] = useState(false);
12
- const openMenu = () => {
14
+ const {
15
+ onDropdownOpenChanged
16
+ } = useToolbarUI();
17
+ const openMenu = event => {
13
18
  if (setIsOpen !== undefined) {
14
19
  setIsOpen(true);
15
20
  } else {
16
21
  setIsOpenInternal(true);
17
22
  }
23
+ if (fg('platform_editor_toolbar_highlight_bug_fix')) {
24
+ onDropdownOpenChanged({
25
+ isOpen: true,
26
+ event: event
27
+ });
28
+ }
18
29
  };
19
- const closeMenu = () => {
30
+ const closeMenu = event => {
20
31
  if (setIsOpen !== undefined) {
21
32
  setIsOpen(false);
22
33
  } else {
23
34
  setIsOpenInternal(false);
24
35
  }
36
+ if (fg('platform_editor_toolbar_highlight_bug_fix')) {
37
+ onDropdownOpenChanged({
38
+ isOpen: false,
39
+ event: event
40
+ });
41
+ }
25
42
  };
26
43
  const contextValue = {
27
44
  openMenu,
@@ -30,7 +30,7 @@ export var Color = /*#__PURE__*/memo(function (_ref) {
30
30
  }, []);
31
31
  var handleClick = useCallback(function (e) {
32
32
  e.preventDefault();
33
- onClick(value, label);
33
+ onClick(value, label, e);
34
34
  }, [onClick, value, label]);
35
35
  var handleKeyDown = useCallback(function (e) {
36
36
  if (!onKeyDown) {
@@ -231,7 +231,7 @@ var ColorPalette = function ColorPalette(_ref) {
231
231
  case ' ':
232
232
  {
233
233
  event.preventDefault();
234
- onClick(value, label);
234
+ onClick(value, label, event);
235
235
  break;
236
236
  }
237
237
  default:
@@ -72,7 +72,7 @@ export var ToolbarDropdownItem = function ToolbarDropdownItem(_ref2) {
72
72
  return /*#__PURE__*/React.createElement(DropdownItem, {
73
73
  onClick: function onClick(e) {
74
74
  if (!hasNestedDropdownMenu) {
75
- parentContext === null || parentContext === void 0 || parentContext.closeMenu();
75
+ parentContext === null || parentContext === void 0 || parentContext.closeMenu(e);
76
76
  }
77
77
  _onClick === null || _onClick === void 0 || _onClick(e);
78
78
  },
@@ -27,14 +27,14 @@ var ToolbarDropdownMenuContent = function ToolbarDropdownMenuContent(_ref) {
27
27
  var handleOpenChange = useCallback(function (args) {
28
28
  onDropdownOpenChanged(args);
29
29
  if (!args.isOpen) {
30
- menuContext === null || menuContext === void 0 || menuContext.closeMenu();
30
+ menuContext === null || menuContext === void 0 || menuContext.closeMenu(args.event);
31
31
  }
32
32
  }, [menuContext, onDropdownOpenChanged]);
33
- var handleClick = useCallback(function () {
33
+ var handleClick = useCallback(function (e) {
34
34
  if (!(menuContext !== null && menuContext !== void 0 && menuContext.isOpen)) {
35
- menuContext === null || menuContext === void 0 || menuContext.openMenu();
35
+ menuContext === null || menuContext === void 0 || menuContext.openMenu(e);
36
36
  } else {
37
- menuContext === null || menuContext === void 0 || menuContext.closeMenu();
37
+ menuContext === null || menuContext === void 0 || menuContext.closeMenu(e);
38
38
  }
39
39
  }, [menuContext]);
40
40
  return /*#__PURE__*/React.createElement(DropdownMenu, {
@@ -48,7 +48,7 @@ var ToolbarDropdownMenuContent = function ToolbarDropdownMenuContent(_ref) {
48
48
  onBlur: triggerProps.onBlur,
49
49
  onClick: function onClick(e) {
50
50
  _onClick && _onClick(e, !(menuContext !== null && menuContext !== void 0 && menuContext.isOpen));
51
- handleClick();
51
+ handleClick(e);
52
52
  triggerProps.onClick && triggerProps.onClick(e);
53
53
  },
54
54
  onFocus: triggerProps.onFocus,
@@ -1,5 +1,7 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
2
  import React, { createContext, useContext, useState } from 'react';
3
+ import { fg } from '@atlaskit/platform-feature-flags';
4
+ import { useToolbarUI } from '../hooks/ui-context';
3
5
  var ToolbarDropdownMenuContext = /*#__PURE__*/createContext(undefined);
4
6
  export var useToolbarDropdownMenu = function useToolbarDropdownMenu() {
5
7
  return useContext(ToolbarDropdownMenuContext);
@@ -12,19 +14,33 @@ export var ToolbarDropdownMenuProvider = function ToolbarDropdownMenuProvider(_r
12
14
  _useState2 = _slicedToArray(_useState, 2),
13
15
  isOpenInternal = _useState2[0],
14
16
  setIsOpenInternal = _useState2[1];
15
- var openMenu = function openMenu() {
17
+ var _useToolbarUI = useToolbarUI(),
18
+ onDropdownOpenChanged = _useToolbarUI.onDropdownOpenChanged;
19
+ var openMenu = function openMenu(event) {
16
20
  if (setIsOpen !== undefined) {
17
21
  setIsOpen(true);
18
22
  } else {
19
23
  setIsOpenInternal(true);
20
24
  }
25
+ if (fg('platform_editor_toolbar_highlight_bug_fix')) {
26
+ onDropdownOpenChanged({
27
+ isOpen: true,
28
+ event: event
29
+ });
30
+ }
21
31
  };
22
- var closeMenu = function closeMenu() {
32
+ var closeMenu = function closeMenu(event) {
23
33
  if (setIsOpen !== undefined) {
24
34
  setIsOpen(false);
25
35
  } else {
26
36
  setIsOpenInternal(false);
27
37
  }
38
+ if (fg('platform_editor_toolbar_highlight_bug_fix')) {
39
+ onDropdownOpenChanged({
40
+ isOpen: false,
41
+ event: event
42
+ });
43
+ }
28
44
  };
29
45
  var contextValue = {
30
46
  openMenu: openMenu,
@@ -52,7 +52,7 @@ export interface ColorPaletteProps {
52
52
  /** Number of columns in the palette grid */
53
53
  cols?: number;
54
54
  /** Callback when a color is clicked */
55
- onClick: (value: string, label: string) => void;
55
+ onClick: (value: string, label: string, event: React.MouseEvent | React.KeyboardEvent) => void;
56
56
  /** Optional callback for keyboard navigation */
57
57
  onKeyDown?: (value: string, label: string, event: React.KeyboardEvent) => void;
58
58
  /** Palette configuration options */
@@ -79,7 +79,7 @@ export interface ColorProps {
79
79
  /** Display label for accessibility */
80
80
  label: string;
81
81
  /** Click handler */
82
- onClick: (value: string, label: string) => void;
82
+ onClick: (value: string, label: string, event: React.MouseEvent) => void;
83
83
  /** Keyboard event handler */
84
84
  onKeyDown?: (value: string, label: string, event: React.KeyboardEvent) => void;
85
85
  /** Tab index for keyboard navigation */
@@ -1,8 +1,8 @@
1
- import React from 'react';
1
+ import React, { type KeyboardEvent, type MouseEvent } from 'react';
2
2
  interface ToolbarDropdownMenuContextValue {
3
- closeMenu: () => void;
3
+ closeMenu: (event: Event | MouseEvent | KeyboardEvent | null) => void;
4
4
  isOpen: boolean;
5
- openMenu: () => void;
5
+ openMenu: (event: Event | MouseEvent | KeyboardEvent | null) => void;
6
6
  }
7
7
  export declare const useToolbarDropdownMenu: () => ToolbarDropdownMenuContextValue | undefined;
8
8
  interface ToolbarDropdownMenuProviderProps {
@@ -52,7 +52,7 @@ export interface ColorPaletteProps {
52
52
  /** Number of columns in the palette grid */
53
53
  cols?: number;
54
54
  /** Callback when a color is clicked */
55
- onClick: (value: string, label: string) => void;
55
+ onClick: (value: string, label: string, event: React.MouseEvent | React.KeyboardEvent) => void;
56
56
  /** Optional callback for keyboard navigation */
57
57
  onKeyDown?: (value: string, label: string, event: React.KeyboardEvent) => void;
58
58
  /** Palette configuration options */
@@ -79,7 +79,7 @@ export interface ColorProps {
79
79
  /** Display label for accessibility */
80
80
  label: string;
81
81
  /** Click handler */
82
- onClick: (value: string, label: string) => void;
82
+ onClick: (value: string, label: string, event: React.MouseEvent) => void;
83
83
  /** Keyboard event handler */
84
84
  onKeyDown?: (value: string, label: string, event: React.KeyboardEvent) => void;
85
85
  /** Tab index for keyboard navigation */
@@ -1,8 +1,8 @@
1
- import React from 'react';
1
+ import React, { type KeyboardEvent, type MouseEvent } from 'react';
2
2
  interface ToolbarDropdownMenuContextValue {
3
- closeMenu: () => void;
3
+ closeMenu: (event: Event | MouseEvent | KeyboardEvent | null) => void;
4
4
  isOpen: boolean;
5
- openMenu: () => void;
5
+ openMenu: (event: Event | MouseEvent | KeyboardEvent | null) => void;
6
6
  }
7
7
  export declare const useToolbarDropdownMenu: () => ToolbarDropdownMenuContextValue | undefined;
8
8
  interface ToolbarDropdownMenuProviderProps {
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "registry": "https://registry.npmjs.org/"
5
5
  },
6
- "version": "0.18.0",
6
+ "version": "0.18.1",
7
7
  "description": "Common UI for Toolbars across the platform",
8
8
  "atlassian": {
9
9
  "team": "Editor: Jenga",
@@ -30,7 +30,7 @@
30
30
  "@atlaskit/platform-feature-flags": "^1.1.0",
31
31
  "@atlaskit/popup": "^4.6.0",
32
32
  "@atlaskit/primitives": "^16.4.0",
33
- "@atlaskit/tmp-editor-statsig": "^14.1.0",
33
+ "@atlaskit/tmp-editor-statsig": "^14.6.0",
34
34
  "@atlaskit/tokens": "^8.4.0",
35
35
  "@atlaskit/tooltip": "^20.10.0",
36
36
  "@babel/runtime": "^7.0.0",
@@ -89,6 +89,9 @@
89
89
  },
90
90
  "platform_editor_toolbar_aifc_undo_redo_confluence": {
91
91
  "type": "boolean"
92
+ },
93
+ "platform_editor_toolbar_highlight_bug_fix": {
94
+ "type": "boolean"
92
95
  }
93
96
  }
94
97
  }