@atlaskit/editor-toolbar 0.1.1 → 0.2.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.
Files changed (61) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/afm-passionfruit/tsconfig.json +54 -0
  3. package/dist/cjs/hooks/ui-context.js +35 -0
  4. package/dist/cjs/index.js +42 -2
  5. package/dist/cjs/ui/Toolbar.compiled.css +6 -2
  6. package/dist/cjs/ui/Toolbar.js +22 -3
  7. package/dist/cjs/ui/ToolbarButton.js +9 -1
  8. package/dist/cjs/ui/ToolbarDropdownMenu.js +5 -1
  9. package/dist/cjs/ui/ToolbarSection.js +4 -2
  10. package/dist/cjs/ui/icons/AlignTextCenterIcon.js +13 -0
  11. package/dist/cjs/ui/icons/AlignTextLeftIcon.js +13 -0
  12. package/dist/cjs/ui/icons/AlignTextRightIcon.js +13 -0
  13. package/dist/es2019/hooks/ui-context.js +28 -0
  14. package/dist/es2019/index.js +7 -3
  15. package/dist/es2019/ui/Toolbar.compiled.css +6 -2
  16. package/dist/es2019/ui/Toolbar.js +22 -2
  17. package/dist/es2019/ui/ToolbarButton.js +10 -1
  18. package/dist/es2019/ui/ToolbarDropdownMenu.js +6 -1
  19. package/dist/es2019/ui/ToolbarSection.js +4 -2
  20. package/dist/es2019/ui/icons/AlignTextCenterIcon.js +2 -0
  21. package/dist/es2019/ui/icons/AlignTextLeftIcon.js +2 -0
  22. package/dist/es2019/ui/icons/AlignTextRightIcon.js +2 -0
  23. package/dist/esm/hooks/ui-context.js +27 -0
  24. package/dist/esm/index.js +7 -3
  25. package/dist/esm/ui/Toolbar.compiled.css +6 -2
  26. package/dist/esm/ui/Toolbar.js +21 -2
  27. package/dist/esm/ui/ToolbarButton.js +9 -1
  28. package/dist/esm/ui/ToolbarDropdownMenu.js +5 -1
  29. package/dist/esm/ui/ToolbarSection.js +4 -2
  30. package/dist/esm/ui/icons/AlignTextCenterIcon.js +2 -0
  31. package/dist/esm/ui/icons/AlignTextLeftIcon.js +2 -0
  32. package/dist/esm/ui/icons/AlignTextRightIcon.js +2 -0
  33. package/dist/types/hooks/ui-context.d.ts +23 -0
  34. package/dist/types/index.d.ts +6 -2
  35. package/dist/types/types.d.ts +0 -1
  36. package/dist/types/ui/Toolbar.d.ts +7 -0
  37. package/dist/types/ui/ToolbarDropdownDivider.d.ts +0 -1
  38. package/dist/types/ui/ToolbarSection.d.ts +2 -1
  39. package/dist/types/ui/icons/AlignTextCenterIcon.d.ts +1 -0
  40. package/dist/types/ui/icons/AlignTextLeftIcon.d.ts +1 -0
  41. package/dist/types/ui/icons/AlignTextRightIcon.d.ts +1 -0
  42. package/dist/types-ts4.5/hooks/ui-context.d.ts +23 -0
  43. package/dist/types-ts4.5/index.d.ts +6 -2
  44. package/dist/types-ts4.5/types.d.ts +0 -1
  45. package/dist/types-ts4.5/ui/Toolbar.d.ts +7 -0
  46. package/dist/types-ts4.5/ui/ToolbarDropdownDivider.d.ts +0 -1
  47. package/dist/types-ts4.5/ui/ToolbarSection.d.ts +2 -1
  48. package/dist/types-ts4.5/ui/icons/AlignTextCenterIcon.d.ts +1 -0
  49. package/dist/types-ts4.5/ui/icons/AlignTextLeftIcon.d.ts +1 -0
  50. package/dist/types-ts4.5/ui/icons/AlignTextRightIcon.d.ts +1 -0
  51. package/examples/toolbar/examples/ExampleManuallyComposedToolbar.tsx +11 -11
  52. package/package.json +2 -2
  53. package/src/hooks/ui-context.tsx +51 -0
  54. package/src/index.ts +7 -2
  55. package/src/ui/Toolbar.tsx +31 -8
  56. package/src/ui/ToolbarButton.tsx +8 -0
  57. package/src/ui/ToolbarDropdownMenu.tsx +4 -0
  58. package/src/ui/ToolbarSection.tsx +7 -2
  59. package/src/ui/icons/AlignTextCenterIcon.tsx +2 -0
  60. package/src/ui/icons/AlignTextLeftIcon.tsx +2 -0
  61. package/src/ui/icons/AlignTextRightIcon.tsx +2 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,33 @@
1
1
  # @atlaskit/editor-toolbar
2
2
 
3
+ ## 0.2.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [`f22ce89845e1e`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/f22ce89845e1e) -
8
+ [ED-28686] Register alignment toolbar component
9
+
10
+ ## 0.2.0
11
+
12
+ ### Minor Changes
13
+
14
+ - [#199353](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/199353)
15
+ [`22cab8325fc62`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/22cab8325fc62) -
16
+ [ux] [ED-28760] Fix editor lose focus and hence editing flow is interrupted. This is done for 2
17
+ components
18
+
19
+ - Dropdown
20
+ - Create context ToolbarUIContext for toolbar consumers to access consumer specific state and
21
+ callbacks
22
+ - Define onDropdownOpenChanged callback for selection toolbars so that editor regains focus
23
+ after dropdown is closed
24
+ - Button
25
+ - Call preventDefault on mouseDown to prevent button takes away focus
26
+
27
+ - [#199487](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/199487)
28
+ [`54098ba4cc83c`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/54098ba4cc83c) -
29
+ Add new PrimaryToolbar export which removes box shadows, export toolbar types
30
+
3
31
  ## 0.1.1
4
32
 
5
33
  ### Patch Changes
@@ -0,0 +1,54 @@
1
+ {
2
+ "extends": "../../../../tsconfig.entry-points.passionfruit.json",
3
+ "compilerOptions": {
4
+ "declaration": true,
5
+ "target": "es5",
6
+ "outDir": "../../../../../passionfruit/tsDist/@atlaskit__editor-toolbar/app",
7
+ "rootDir": "../",
8
+ "composite": true
9
+ },
10
+ "include": [
11
+ "../src/**/*.ts",
12
+ "../src/**/*.tsx"
13
+ ],
14
+ "exclude": [
15
+ "../src/**/__tests__/*",
16
+ "../src/**/*.test.*",
17
+ "../src/**/test.*"
18
+ ],
19
+ "references": [
20
+ {
21
+ "path": "../../../design-system/badge/afm-passionfruit/tsconfig.json"
22
+ },
23
+ {
24
+ "path": "../../../design-system/button/afm-passionfruit/tsconfig.json"
25
+ },
26
+ {
27
+ "path": "../../../design-system/css/afm-passionfruit/tsconfig.json"
28
+ },
29
+ {
30
+ "path": "../../../design-system/dropdown-menu/afm-passionfruit/tsconfig.json"
31
+ },
32
+ {
33
+ "path": "../../../design-system/icon/afm-passionfruit/tsconfig.json"
34
+ },
35
+ {
36
+ "path": "../../../design-system/icon-lab/afm-passionfruit/tsconfig.json"
37
+ },
38
+ {
39
+ "path": "../../../design-system/logo/afm-passionfruit/tsconfig.json"
40
+ },
41
+ {
42
+ "path": "../../../design-system/popup/afm-passionfruit/tsconfig.json"
43
+ },
44
+ {
45
+ "path": "../../../design-system/primitives/afm-passionfruit/tsconfig.json"
46
+ },
47
+ {
48
+ "path": "../../../design-system/tokens/afm-passionfruit/tsconfig.json"
49
+ },
50
+ {
51
+ "path": "../../../design-system/tooltip/afm-passionfruit/tsconfig.json"
52
+ }
53
+ ]
54
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useToolbarUI = exports.ToolbarUIProvider = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ 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); }
10
+ var ToolbarUIContext = /*#__PURE__*/(0, _react.createContext)({
11
+ onDropdownOpenChanged: function onDropdownOpenChanged() {},
12
+ preventDefaultOnMouseDown: false
13
+ });
14
+
15
+ /**
16
+ * Access consumer specific config and state within a toolbar component
17
+ */
18
+ var useToolbarUI = exports.useToolbarUI = function useToolbarUI() {
19
+ var context = (0, _react.useContext)(ToolbarUIContext);
20
+ if (!context) {
21
+ throw new Error('useToolbarUI must be used within ToolbarUIContext');
22
+ }
23
+ return context;
24
+ };
25
+ var ToolbarUIProvider = exports.ToolbarUIProvider = function ToolbarUIProvider(_ref) {
26
+ var children = _ref.children,
27
+ onDropdownOpenChanged = _ref.onDropdownOpenChanged,
28
+ preventDefaultOnMouseDown = _ref.preventDefaultOnMouseDown;
29
+ return /*#__PURE__*/_react.default.createElement(ToolbarUIContext.Provider, {
30
+ value: {
31
+ onDropdownOpenChanged: onDropdownOpenChanged,
32
+ preventDefaultOnMouseDown: preventDefaultOnMouseDown
33
+ }
34
+ }, children);
35
+ };
package/dist/cjs/index.js CHANGED
@@ -81,6 +81,24 @@ Object.defineProperty(exports, "AddIcon", {
81
81
  return _AddIcon.AddIcon;
82
82
  }
83
83
  });
84
+ Object.defineProperty(exports, "AlignTextCenterIcon", {
85
+ enumerable: true,
86
+ get: function get() {
87
+ return _AlignTextCenterIcon.AlignTextCenterIcon;
88
+ }
89
+ });
90
+ Object.defineProperty(exports, "AlignTextLeftIcon", {
91
+ enumerable: true,
92
+ get: function get() {
93
+ return _AlignTextLeftIcon.AlignTextLeftIcon;
94
+ }
95
+ });
96
+ Object.defineProperty(exports, "AlignTextRightIcon", {
97
+ enumerable: true,
98
+ get: function get() {
99
+ return _AlignTextRightIcon.AlignTextRightIcon;
100
+ }
101
+ });
84
102
  Object.defineProperty(exports, "AppsIcon", {
85
103
  enumerable: true,
86
104
  get: function get() {
@@ -195,6 +213,12 @@ Object.defineProperty(exports, "PinnedIcon", {
195
213
  return _PinnedIcon.PinnedIcon;
196
214
  }
197
215
  });
216
+ Object.defineProperty(exports, "PrimaryToolbar", {
217
+ enumerable: true,
218
+ get: function get() {
219
+ return _Toolbar.PrimaryToolbar;
220
+ }
221
+ });
198
222
  Object.defineProperty(exports, "QuoteIcon", {
199
223
  enumerable: true,
200
224
  get: function get() {
@@ -309,22 +333,34 @@ Object.defineProperty(exports, "ToolbarTooltip", {
309
333
  return _ToolbarTooltip.ToolbarTooltip;
310
334
  }
311
335
  });
336
+ Object.defineProperty(exports, "ToolbarUIProvider", {
337
+ enumerable: true,
338
+ get: function get() {
339
+ return _uiContext.ToolbarUIProvider;
340
+ }
341
+ });
312
342
  Object.defineProperty(exports, "UnderlineIcon", {
313
343
  enumerable: true,
314
344
  get: function get() {
315
345
  return _UnderlineIcon.UnderlineIcon;
316
346
  }
317
347
  });
348
+ Object.defineProperty(exports, "useToolbarUI", {
349
+ enumerable: true,
350
+ get: function get() {
351
+ return _uiContext.useToolbarUI;
352
+ }
353
+ });
318
354
  var _Toolbar = require("./ui/Toolbar");
319
355
  var _ToolbarButton = require("./ui/ToolbarButton");
320
356
  var _ToolbarButtonGroup = require("./ui/ToolbarButtonGroup");
321
357
  var _ToolbarDropdownMenu = require("./ui/ToolbarDropdownMenu");
322
358
  var _ToolbarDropdownItem = require("./ui/ToolbarDropdownItem");
323
359
  var _ToolbarDropdownItemSection = require("./ui/ToolbarDropdownItemSection");
360
+ var _ToolbarNestedDropdownMenu = require("./ui/ToolbarNestedDropdownMenu");
324
361
  var _ToolbarKeyboardShortcutHint = require("./ui/ToolbarKeyboardShortcutHint");
325
362
  var _ToolbarSection = require("./ui/ToolbarSection");
326
363
  var _ToolbarTooltip = require("./ui/ToolbarTooltip");
327
- var _ToolbarNestedDropdownMenu = require("./ui/ToolbarNestedDropdownMenu");
328
364
  var _ToolbarDropdownDivider = require("./ui/ToolbarDropdownDivider");
329
365
  var _ToolbarColorSwatch = require("./ui/ToolbarColorSwatch");
330
366
  var _AIAdjustLengthIcon = require("./ui/icons/AIAdjustLengthIcon");
@@ -366,4 +402,8 @@ var _StrikeThroughIcon = require("./ui/icons/StrikeThroughIcon");
366
402
  var _CodeIcon = require("./ui/icons/CodeIcon");
367
403
  var _SubscriptIcon = require("./ui/icons/SubscriptIcon");
368
404
  var _SuperscriptIcon = require("./ui/icons/SuperscriptIcon");
369
- var _ShowMoreHorizontal = require("./ui/icons/ShowMoreHorizontal");
405
+ var _ShowMoreHorizontal = require("./ui/icons/ShowMoreHorizontal");
406
+ var _AlignTextLeftIcon = require("./ui/icons/AlignTextLeftIcon");
407
+ var _AlignTextCenterIcon = require("./ui/icons/AlignTextCenterIcon");
408
+ var _AlignTextRightIcon = require("./ui/icons/AlignTextRightIcon");
409
+ var _uiContext = require("./hooks/ui-context");
@@ -1,9 +1,13 @@
1
1
 
2
2
  ._2rkoi2wt{border-radius:6px}._16qs1cd0{box-shadow:var(--ds-shadow-overlay,0 8px 9pt #091e4226,0 0 1px #091e424f)}
3
3
  ._19bv1b66{padding-left:var(--ds-space-050,4px)}
4
- ._1bsb184x{width:min-content}
4
+ ._19bvutpp{padding-left:var(--ds-space-150,9pt)}
5
5
  ._1e0c1txw{display:flex}
6
+ ._1tkezwfg{min-height:2pc}
6
7
  ._4cvr1h6o{align-items:center}
7
8
  ._4t3i14no{height:36px}
8
9
  ._bfhkvuon{background-color:var(--ds-surface,#fff)}
9
- ._u5f31b66{padding-right:var(--ds-space-050,4px)}
10
+ ._ca0q12x7{padding-top:var(--ds-space-075,6px)}
11
+ ._n3td12x7{padding-bottom:var(--ds-space-075,6px)}
12
+ ._u5f31b66{padding-right:var(--ds-space-050,4px)}
13
+ ._u5f3utpp{padding-right:var(--ds-space-150,9pt)}
@@ -5,19 +5,38 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.Toolbar = void 0;
8
+ exports.Toolbar = exports.PrimaryToolbar = void 0;
9
9
  require("./Toolbar.compiled.css");
10
10
  var _runtime = require("@compiled/react/runtime");
11
11
  var _react = _interopRequireDefault(require("react"));
12
+ var _css = require("@atlaskit/css");
12
13
  var _compiled = require("@atlaskit/primitives/compiled");
13
14
  var styles = {
14
- toolbar: "_2rkoi2wt _bfhkvuon _u5f31b66 _19bv1b66 _16qs1cd0 _4t3i14no _1bsb184x _1e0c1txw _4cvr1h6o"
15
+ toolbarBase: "_2rkoi2wt _bfhkvuon _1e0c1txw _4cvr1h6o",
16
+ toolbar: "_4t3i14no _u5f31b66 _19bv1b66 _16qs1cd0",
17
+ primaryToolbar: "_bfhkvuon _1tkezwfg _ca0q12x7 _n3td12x7 _19bvutpp _u5f3utpp"
15
18
  };
19
+ /**
20
+ * A simple component representing a toolbar with box shadows - used to represent a secondary/floating toolbar
21
+ */
16
22
  var Toolbar = exports.Toolbar = function Toolbar(_ref) {
17
23
  var children = _ref.children,
18
24
  label = _ref.label;
19
25
  return /*#__PURE__*/_react.default.createElement(_compiled.Box, {
20
- xcss: styles.toolbar,
26
+ xcss: (0, _css.cx)(styles.toolbarBase, styles.toolbar),
27
+ role: "toolbar",
28
+ "aria-label": label
29
+ }, children);
30
+ };
31
+
32
+ /**
33
+ * A simple component representing a toolbar without box shadows - used to represent a primary toolbar
34
+ */
35
+ var PrimaryToolbar = exports.PrimaryToolbar = function PrimaryToolbar(_ref2) {
36
+ var children = _ref2.children,
37
+ label = _ref2.label;
38
+ return /*#__PURE__*/_react.default.createElement(_compiled.Box, {
39
+ xcss: (0, _css.cx)(styles.toolbarBase, styles.primaryToolbar),
21
40
  role: "toolbar",
22
41
  "aria-label": label
23
42
  }, children);
@@ -11,6 +11,7 @@ var _runtime = require("@compiled/react/runtime");
11
11
  var _react = _interopRequireWildcard(require("react"));
12
12
  var _css = require("@atlaskit/css");
13
13
  var _compiled = require("@atlaskit/primitives/compiled");
14
+ var _uiContext = require("../hooks/ui-context");
14
15
  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); }
15
16
  var styles = {
16
17
  button: "_zulp12x7 _2rkoiti9 _1e0c1txw _bfhksm61 _o5721q9c _4cvr1h6o _1bah1h6o _1tke1f4h _syaz1gjq _k48p1wq8 _19bvu2gc _u5f3u2gc _1ah3idpf _g0pbkb7n _oh03h2mm",
@@ -37,6 +38,8 @@ var ToolbarButton = exports.ToolbarButton = /*#__PURE__*/(0, _react.forwardRef)(
37
38
  isDisabled = _ref.isDisabled,
38
39
  ariaKeyshortcuts = _ref.ariaKeyshortcuts,
39
40
  label = _ref.label;
41
+ var _useToolbarUI = (0, _uiContext.useToolbarUI)(),
42
+ preventDefaultOnMouseDown = _useToolbarUI.preventDefaultOnMouseDown;
40
43
  return /*#__PURE__*/_react.default.createElement(_compiled.Pressable, {
41
44
  ref: ref,
42
45
  xcss: (0, _css.cx)(styles.button, isDisabled ? styles.disabled : isSelected ? styles.selected : styles.enabled, groupLocation === 'start' && styles.groupStart, groupLocation === 'middle' && styles.groupMiddle, groupLocation === 'end' && styles.groupEnd),
@@ -51,6 +54,11 @@ var ToolbarButton = exports.ToolbarButton = /*#__PURE__*/(0, _react.forwardRef)(
51
54
  onBlur: onBlur,
52
55
  onFocus: onFocus,
53
56
  testId: testId,
54
- isDisabled: isDisabled
57
+ isDisabled: isDisabled,
58
+ onMouseDown: function onMouseDown(event) {
59
+ if (preventDefaultOnMouseDown) {
60
+ event.preventDefault();
61
+ }
62
+ }
55
63
  }, iconBefore, children);
56
64
  });
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.ToolbarDropdownMenu = void 0;
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
  var _dropdownMenu = _interopRequireDefault(require("@atlaskit/dropdown-menu"));
10
+ var _uiContext = require("../hooks/ui-context");
10
11
  var _ToolbarButton = require("./ToolbarButton");
11
12
  var ToolbarDropdownMenu = exports.ToolbarDropdownMenu = function ToolbarDropdownMenu(_ref) {
12
13
  var iconBefore = _ref.iconBefore,
@@ -15,6 +16,8 @@ var ToolbarDropdownMenu = exports.ToolbarDropdownMenu = function ToolbarDropdown
15
16
  isDisabled = _ref.isDisabled,
16
17
  testId = _ref.testId,
17
18
  label = _ref.label;
19
+ var _useToolbarUI = (0, _uiContext.useToolbarUI)(),
20
+ onDropdownOpenChanged = _useToolbarUI.onDropdownOpenChanged;
18
21
  return /*#__PURE__*/_react.default.createElement(_dropdownMenu.default, {
19
22
  trigger: function trigger(triggerProps) {
20
23
  return /*#__PURE__*/_react.default.createElement(_ToolbarButton.ToolbarButton, {
@@ -32,6 +35,7 @@ var ToolbarDropdownMenu = exports.ToolbarDropdownMenu = function ToolbarDropdown
32
35
  isDisabled: isDisabled,
33
36
  label: label
34
37
  });
35
- }
38
+ },
39
+ onOpenChange: onDropdownOpenChanged
36
40
  }, children);
37
41
  };
@@ -14,8 +14,10 @@ var styles = {
14
14
  container: "_1e0c1txw _4cvr1h6o"
15
15
  };
16
16
  var ToolbarSection = exports.ToolbarSection = function ToolbarSection(_ref) {
17
- var children = _ref.children;
17
+ var children = _ref.children,
18
+ testId = _ref.testId;
18
19
  return /*#__PURE__*/_react.default.createElement(_compiled.Box, {
19
- xcss: styles.container
20
+ xcss: styles.container,
21
+ testId: testId
20
22
  }, children);
21
23
  };
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ Object.defineProperty(exports, "AlignTextCenterIcon", {
8
+ enumerable: true,
9
+ get: function get() {
10
+ return _alignTextCenter.default;
11
+ }
12
+ });
13
+ var _alignTextCenter = _interopRequireDefault(require("@atlaskit/icon/core/align-text-center"));
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ Object.defineProperty(exports, "AlignTextLeftIcon", {
8
+ enumerable: true,
9
+ get: function get() {
10
+ return _alignTextLeft.default;
11
+ }
12
+ });
13
+ var _alignTextLeft = _interopRequireDefault(require("@atlaskit/icon/core/align-text-left"));
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ Object.defineProperty(exports, "AlignTextRightIcon", {
8
+ enumerable: true,
9
+ get: function get() {
10
+ return _alignTextRight.default;
11
+ }
12
+ });
13
+ var _alignTextRight = _interopRequireDefault(require("@atlaskit/icon/core/align-text-right"));
@@ -0,0 +1,28 @@
1
+ import React, { createContext, useContext } from 'react';
2
+ const ToolbarUIContext = /*#__PURE__*/createContext({
3
+ onDropdownOpenChanged: () => {},
4
+ preventDefaultOnMouseDown: false
5
+ });
6
+
7
+ /**
8
+ * Access consumer specific config and state within a toolbar component
9
+ */
10
+ export const useToolbarUI = () => {
11
+ const context = useContext(ToolbarUIContext);
12
+ if (!context) {
13
+ throw new Error('useToolbarUI must be used within ToolbarUIContext');
14
+ }
15
+ return context;
16
+ };
17
+ export const ToolbarUIProvider = ({
18
+ children,
19
+ onDropdownOpenChanged,
20
+ preventDefaultOnMouseDown
21
+ }) => {
22
+ return /*#__PURE__*/React.createElement(ToolbarUIContext.Provider, {
23
+ value: {
24
+ onDropdownOpenChanged,
25
+ preventDefaultOnMouseDown
26
+ }
27
+ }, children);
28
+ };
@@ -1,14 +1,14 @@
1
1
  /* eslint-disable @atlaskit/editor/no-re-export */
2
- export { Toolbar } from './ui/Toolbar';
2
+ export { Toolbar, PrimaryToolbar } from './ui/Toolbar';
3
3
  export { ToolbarButton } from './ui/ToolbarButton';
4
4
  export { ToolbarButtonGroup } from './ui/ToolbarButtonGroup';
5
5
  export { ToolbarDropdownMenu } from './ui/ToolbarDropdownMenu';
6
6
  export { ToolbarDropdownItem } from './ui/ToolbarDropdownItem';
7
7
  export { ToolbarDropdownItemSection } from './ui/ToolbarDropdownItemSection';
8
+ export { ToolbarNestedDropdownMenu } from './ui/ToolbarNestedDropdownMenu';
8
9
  export { ToolbarKeyboardShortcutHint } from './ui/ToolbarKeyboardShortcutHint';
9
10
  export { ToolbarSection } from './ui/ToolbarSection';
10
11
  export { ToolbarTooltip } from './ui/ToolbarTooltip';
11
- export { ToolbarNestedDropdownMenu } from './ui/ToolbarNestedDropdownMenu';
12
12
  export { ToolbarDropdownDivider } from './ui/ToolbarDropdownDivider';
13
13
  export { ToolbarColorSwatch } from './ui/ToolbarColorSwatch';
14
14
  export { AIAdjustLengthIcon } from './ui/icons/AIAdjustLengthIcon';
@@ -50,4 +50,8 @@ export { StrikeThroughIcon } from './ui/icons/StrikeThroughIcon';
50
50
  export { CodeIcon } from './ui/icons/CodeIcon';
51
51
  export { SubscriptIcon } from './ui/icons/SubscriptIcon';
52
52
  export { SuperscriptIcon } from './ui/icons/SuperscriptIcon';
53
- export { ShowMoreHorizontalIcon } from './ui/icons/ShowMoreHorizontal';
53
+ export { ShowMoreHorizontalIcon } from './ui/icons/ShowMoreHorizontal';
54
+ export { AlignTextLeftIcon } from './ui/icons/AlignTextLeftIcon';
55
+ export { AlignTextCenterIcon } from './ui/icons/AlignTextCenterIcon';
56
+ export { AlignTextRightIcon } from './ui/icons/AlignTextRightIcon';
57
+ export { useToolbarUI, ToolbarUIProvider } from './hooks/ui-context';
@@ -1,9 +1,13 @@
1
1
 
2
2
  ._2rkoi2wt{border-radius:6px}._16qs1cd0{box-shadow:var(--ds-shadow-overlay,0 8px 9pt #091e4226,0 0 1px #091e424f)}
3
3
  ._19bv1b66{padding-left:var(--ds-space-050,4px)}
4
- ._1bsb184x{width:min-content}
4
+ ._19bvutpp{padding-left:var(--ds-space-150,9pt)}
5
5
  ._1e0c1txw{display:flex}
6
+ ._1tkezwfg{min-height:2pc}
6
7
  ._4cvr1h6o{align-items:center}
7
8
  ._4t3i14no{height:36px}
8
9
  ._bfhkvuon{background-color:var(--ds-surface,#fff)}
9
- ._u5f31b66{padding-right:var(--ds-space-050,4px)}
10
+ ._ca0q12x7{padding-top:var(--ds-space-075,6px)}
11
+ ._n3td12x7{padding-bottom:var(--ds-space-075,6px)}
12
+ ._u5f31b66{padding-right:var(--ds-space-050,4px)}
13
+ ._u5f3utpp{padding-right:var(--ds-space-150,9pt)}
@@ -2,16 +2,36 @@
2
2
  import "./Toolbar.compiled.css";
3
3
  import { ax, ix } from "@compiled/react/runtime";
4
4
  import React from 'react';
5
+ import { cx } from '@atlaskit/css';
5
6
  import { Box } from '@atlaskit/primitives/compiled';
6
7
  const styles = {
7
- toolbar: "_2rkoi2wt _bfhkvuon _u5f31b66 _19bv1b66 _16qs1cd0 _4t3i14no _1bsb184x _1e0c1txw _4cvr1h6o"
8
+ toolbarBase: "_2rkoi2wt _bfhkvuon _1e0c1txw _4cvr1h6o",
9
+ toolbar: "_4t3i14no _u5f31b66 _19bv1b66 _16qs1cd0",
10
+ primaryToolbar: "_bfhkvuon _1tkezwfg _ca0q12x7 _n3td12x7 _19bvutpp _u5f3utpp"
8
11
  };
12
+ /**
13
+ * A simple component representing a toolbar with box shadows - used to represent a secondary/floating toolbar
14
+ */
9
15
  export const Toolbar = ({
10
16
  children,
11
17
  label
12
18
  }) => {
13
19
  return /*#__PURE__*/React.createElement(Box, {
14
- xcss: styles.toolbar,
20
+ xcss: cx(styles.toolbarBase, styles.toolbar),
21
+ role: "toolbar",
22
+ "aria-label": label
23
+ }, children);
24
+ };
25
+
26
+ /**
27
+ * A simple component representing a toolbar without box shadows - used to represent a primary toolbar
28
+ */
29
+ export const PrimaryToolbar = ({
30
+ children,
31
+ label
32
+ }) => {
33
+ return /*#__PURE__*/React.createElement(Box, {
34
+ xcss: cx(styles.toolbarBase, styles.primaryToolbar),
15
35
  role: "toolbar",
16
36
  "aria-label": label
17
37
  }, children);
@@ -4,6 +4,7 @@ import { ax, ix } from "@compiled/react/runtime";
4
4
  import React, { forwardRef } from 'react';
5
5
  import { cx } from '@atlaskit/css';
6
6
  import { Pressable } from '@atlaskit/primitives/compiled';
7
+ import { useToolbarUI } from '../hooks/ui-context';
7
8
  const styles = {
8
9
  button: "_zulp12x7 _2rkoiti9 _1e0c1txw _bfhksm61 _o5721q9c _4cvr1h6o _1bah1h6o _1tke1f4h _syaz1gjq _k48p1wq8 _19bvu2gc _u5f3u2gc _1ah3idpf _g0pbkb7n _oh03h2mm",
9
10
  enabled: "_irr3166n _1di61dty",
@@ -30,6 +31,9 @@ export const ToolbarButton = /*#__PURE__*/forwardRef(({
30
31
  ariaKeyshortcuts,
31
32
  label
32
33
  }, ref) => {
34
+ const {
35
+ preventDefaultOnMouseDown
36
+ } = useToolbarUI();
33
37
  return /*#__PURE__*/React.createElement(Pressable, {
34
38
  ref: ref,
35
39
  xcss: cx(styles.button, isDisabled ? styles.disabled : isSelected ? styles.selected : styles.enabled, groupLocation === 'start' && styles.groupStart, groupLocation === 'middle' && styles.groupMiddle, groupLocation === 'end' && styles.groupEnd),
@@ -44,6 +48,11 @@ export const ToolbarButton = /*#__PURE__*/forwardRef(({
44
48
  onBlur: onBlur,
45
49
  onFocus: onFocus,
46
50
  testId: testId,
47
- isDisabled: isDisabled
51
+ isDisabled: isDisabled,
52
+ onMouseDown: event => {
53
+ if (preventDefaultOnMouseDown) {
54
+ event.preventDefault();
55
+ }
56
+ }
48
57
  }, iconBefore, children);
49
58
  });
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import DropdownMenu from '@atlaskit/dropdown-menu';
3
+ import { useToolbarUI } from '../hooks/ui-context';
3
4
  import { ToolbarButton } from './ToolbarButton';
4
5
  export const ToolbarDropdownMenu = ({
5
6
  iconBefore,
@@ -9,6 +10,9 @@ export const ToolbarDropdownMenu = ({
9
10
  testId,
10
11
  label
11
12
  }) => {
13
+ const {
14
+ onDropdownOpenChanged
15
+ } = useToolbarUI();
12
16
  return /*#__PURE__*/React.createElement(DropdownMenu, {
13
17
  trigger: triggerProps => /*#__PURE__*/React.createElement(ToolbarButton, {
14
18
  ref: triggerProps.triggerRef,
@@ -24,6 +28,7 @@ export const ToolbarDropdownMenu = ({
24
28
  groupLocation: groupLocation,
25
29
  isDisabled: isDisabled,
26
30
  label: label
27
- })
31
+ }),
32
+ onOpenChange: onDropdownOpenChanged
28
33
  }, children);
29
34
  };
@@ -7,9 +7,11 @@ const styles = {
7
7
  container: "_1e0c1txw _4cvr1h6o"
8
8
  };
9
9
  export const ToolbarSection = ({
10
- children
10
+ children,
11
+ testId
11
12
  }) => {
12
13
  return /*#__PURE__*/React.createElement(Box, {
13
- xcss: styles.container
14
+ xcss: styles.container,
15
+ testId: testId
14
16
  }, children);
15
17
  };
@@ -0,0 +1,2 @@
1
+ /* eslint-disable @atlaskit/editor/no-re-export */
2
+ export { default as AlignTextCenterIcon } from '@atlaskit/icon/core/align-text-center';
@@ -0,0 +1,2 @@
1
+ /* eslint-disable @atlaskit/editor/no-re-export */
2
+ export { default as AlignTextLeftIcon } from '@atlaskit/icon/core/align-text-left';
@@ -0,0 +1,2 @@
1
+ /* eslint-disable @atlaskit/editor/no-re-export */
2
+ export { default as AlignTextRightIcon } from '@atlaskit/icon/core/align-text-right';
@@ -0,0 +1,27 @@
1
+ import React, { createContext, useContext } from 'react';
2
+ var ToolbarUIContext = /*#__PURE__*/createContext({
3
+ onDropdownOpenChanged: function onDropdownOpenChanged() {},
4
+ preventDefaultOnMouseDown: false
5
+ });
6
+
7
+ /**
8
+ * Access consumer specific config and state within a toolbar component
9
+ */
10
+ export var useToolbarUI = function useToolbarUI() {
11
+ var context = useContext(ToolbarUIContext);
12
+ if (!context) {
13
+ throw new Error('useToolbarUI must be used within ToolbarUIContext');
14
+ }
15
+ return context;
16
+ };
17
+ export var ToolbarUIProvider = function ToolbarUIProvider(_ref) {
18
+ var children = _ref.children,
19
+ onDropdownOpenChanged = _ref.onDropdownOpenChanged,
20
+ preventDefaultOnMouseDown = _ref.preventDefaultOnMouseDown;
21
+ return /*#__PURE__*/React.createElement(ToolbarUIContext.Provider, {
22
+ value: {
23
+ onDropdownOpenChanged: onDropdownOpenChanged,
24
+ preventDefaultOnMouseDown: preventDefaultOnMouseDown
25
+ }
26
+ }, children);
27
+ };
package/dist/esm/index.js CHANGED
@@ -1,14 +1,14 @@
1
1
  /* eslint-disable @atlaskit/editor/no-re-export */
2
- export { Toolbar } from './ui/Toolbar';
2
+ export { Toolbar, PrimaryToolbar } from './ui/Toolbar';
3
3
  export { ToolbarButton } from './ui/ToolbarButton';
4
4
  export { ToolbarButtonGroup } from './ui/ToolbarButtonGroup';
5
5
  export { ToolbarDropdownMenu } from './ui/ToolbarDropdownMenu';
6
6
  export { ToolbarDropdownItem } from './ui/ToolbarDropdownItem';
7
7
  export { ToolbarDropdownItemSection } from './ui/ToolbarDropdownItemSection';
8
+ export { ToolbarNestedDropdownMenu } from './ui/ToolbarNestedDropdownMenu';
8
9
  export { ToolbarKeyboardShortcutHint } from './ui/ToolbarKeyboardShortcutHint';
9
10
  export { ToolbarSection } from './ui/ToolbarSection';
10
11
  export { ToolbarTooltip } from './ui/ToolbarTooltip';
11
- export { ToolbarNestedDropdownMenu } from './ui/ToolbarNestedDropdownMenu';
12
12
  export { ToolbarDropdownDivider } from './ui/ToolbarDropdownDivider';
13
13
  export { ToolbarColorSwatch } from './ui/ToolbarColorSwatch';
14
14
  export { AIAdjustLengthIcon } from './ui/icons/AIAdjustLengthIcon';
@@ -50,4 +50,8 @@ export { StrikeThroughIcon } from './ui/icons/StrikeThroughIcon';
50
50
  export { CodeIcon } from './ui/icons/CodeIcon';
51
51
  export { SubscriptIcon } from './ui/icons/SubscriptIcon';
52
52
  export { SuperscriptIcon } from './ui/icons/SuperscriptIcon';
53
- export { ShowMoreHorizontalIcon } from './ui/icons/ShowMoreHorizontal';
53
+ export { ShowMoreHorizontalIcon } from './ui/icons/ShowMoreHorizontal';
54
+ export { AlignTextLeftIcon } from './ui/icons/AlignTextLeftIcon';
55
+ export { AlignTextCenterIcon } from './ui/icons/AlignTextCenterIcon';
56
+ export { AlignTextRightIcon } from './ui/icons/AlignTextRightIcon';
57
+ export { useToolbarUI, ToolbarUIProvider } from './hooks/ui-context';
@@ -1,9 +1,13 @@
1
1
 
2
2
  ._2rkoi2wt{border-radius:6px}._16qs1cd0{box-shadow:var(--ds-shadow-overlay,0 8px 9pt #091e4226,0 0 1px #091e424f)}
3
3
  ._19bv1b66{padding-left:var(--ds-space-050,4px)}
4
- ._1bsb184x{width:min-content}
4
+ ._19bvutpp{padding-left:var(--ds-space-150,9pt)}
5
5
  ._1e0c1txw{display:flex}
6
+ ._1tkezwfg{min-height:2pc}
6
7
  ._4cvr1h6o{align-items:center}
7
8
  ._4t3i14no{height:36px}
8
9
  ._bfhkvuon{background-color:var(--ds-surface,#fff)}
9
- ._u5f31b66{padding-right:var(--ds-space-050,4px)}
10
+ ._ca0q12x7{padding-top:var(--ds-space-075,6px)}
11
+ ._n3td12x7{padding-bottom:var(--ds-space-075,6px)}
12
+ ._u5f31b66{padding-right:var(--ds-space-050,4px)}
13
+ ._u5f3utpp{padding-right:var(--ds-space-150,9pt)}