@atlaskit/pragmatic-drag-and-drop-react-accessibility 0.3.0 → 0.4.0

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 (49) hide show
  1. package/CHANGELOG.md +25 -2
  2. package/constellation/drag-handle-button/examples.mdx +13 -3
  3. package/constellation/drag-handle-button/props.mdx +0 -1
  4. package/constellation/drag-handle-dropdown-menu/examples.mdx +13 -3
  5. package/constellation/drag-handle-dropdown-menu/props.mdx +0 -1
  6. package/constellation/index/about.mdx +1 -1
  7. package/dist/cjs/drag-handle-button-base.js +75 -0
  8. package/dist/cjs/drag-handle-button-small.js +31 -0
  9. package/dist/cjs/drag-handle-button.js +14 -61
  10. package/dist/cjs/drag-handle-dropdown-menu-small.js +43 -0
  11. package/dist/cjs/drag-handle-icon-small.js +26 -0
  12. package/dist/cjs/drag-handle-icon.js +16 -0
  13. package/dist/cjs/index.js +1 -2
  14. package/dist/cjs/types.js +5 -0
  15. package/dist/es2019/drag-handle-button-base.js +74 -0
  16. package/dist/es2019/drag-handle-button-small.js +20 -0
  17. package/dist/es2019/drag-handle-button.js +7 -63
  18. package/dist/es2019/drag-handle-dropdown-menu-small.js +34 -0
  19. package/dist/es2019/drag-handle-icon-small.js +20 -0
  20. package/dist/es2019/drag-handle-icon.js +10 -0
  21. package/dist/es2019/types.js +1 -0
  22. package/dist/esm/drag-handle-button-base.js +69 -0
  23. package/dist/esm/drag-handle-button-small.js +21 -0
  24. package/dist/esm/drag-handle-button.js +9 -59
  25. package/dist/esm/drag-handle-dropdown-menu-small.js +34 -0
  26. package/dist/esm/drag-handle-icon-small.js +19 -0
  27. package/dist/esm/drag-handle-icon.js +9 -0
  28. package/dist/esm/types.js +1 -0
  29. package/dist/types/drag-handle-button-base.d.ts +11 -0
  30. package/dist/types/drag-handle-button-small.d.ts +11 -0
  31. package/dist/types/drag-handle-button.d.ts +3 -41
  32. package/dist/types/drag-handle-dropdown-menu-small.d.ts +8 -0
  33. package/dist/types/drag-handle-dropdown-menu.d.ts +2 -20
  34. package/dist/types/drag-handle-icon-small.d.ts +4 -0
  35. package/dist/types/drag-handle-icon.d.ts +3 -0
  36. package/dist/types/types.d.ts +37 -0
  37. package/dist/types-ts4.5/drag-handle-button-base.d.ts +11 -0
  38. package/dist/types-ts4.5/drag-handle-button-small.d.ts +11 -0
  39. package/dist/types-ts4.5/drag-handle-button.d.ts +3 -41
  40. package/dist/types-ts4.5/drag-handle-dropdown-menu-small.d.ts +8 -0
  41. package/dist/types-ts4.5/drag-handle-dropdown-menu.d.ts +2 -20
  42. package/dist/types-ts4.5/drag-handle-icon-small.d.ts +4 -0
  43. package/dist/types-ts4.5/drag-handle-icon.d.ts +3 -0
  44. package/dist/types-ts4.5/types.d.ts +37 -0
  45. package/drag-handle-button-small/package.json +15 -0
  46. package/drag-handle-dropdown-menu-small/package.json +15 -0
  47. package/extract-react-types/drag-handle-button.tsx +1 -1
  48. package/extract-react-types/drag-handle-dropdown-menu.tsx +1 -1
  49. package/package.json +7 -4
package/CHANGELOG.md CHANGED
@@ -1,14 +1,37 @@
1
1
  # @atlaskit/pragmatic-drag-and-drop-react-accessibility
2
2
 
3
+ ## 0.4.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#41296](https://bitbucket.org/atlassian/atlassian-frontend/pull-requests/41296) [`3e479ba1a4a`](https://bitbucket.org/atlassian/atlassian-frontend/commits/3e479ba1a4a) - [ux] The drag handle icon now uses the `color.icon.subtle` token.
8
+ - [#41296](https://bitbucket.org/atlassian/atlassian-frontend/pull-requests/41296) [`ac64412c674`](https://bitbucket.org/atlassian/atlassian-frontend/commits/ac64412c674) - Introduced small variants of the drag handle button and drag handle dropdown menu.
9
+
10
+ These are intended for existing experiences with little space available to
11
+ introduce a drag handle. They are not recommended for general use.
12
+
13
+ These small variants can be accessed through the `/drag-handle-button-small` and
14
+ `/drag-handle-dropdown-menu-small` entrypoints.
15
+
16
+ ### Patch Changes
17
+
18
+ - Updated dependencies
19
+
20
+ ## 0.3.1
21
+
22
+ ### Patch Changes
23
+
24
+ - Updated dependencies
25
+
3
26
  ## 0.3.0
4
27
 
5
28
  ### Minor Changes
6
29
 
7
- - [`ee9aa9b7300`](https://bitbucket.org/atlassian/atlassian-frontend/commits/ee9aa9b7300) - [ux] The button now has `display: flex`
30
+ - [#38144](https://bitbucket.org/atlassian/atlassian-frontend/pull-requests/38144) [`ee9aa9b7300`](https://bitbucket.org/atlassian/atlassian-frontend/commits/ee9aa9b7300) - [ux] The button now has `display: flex`
8
31
 
9
32
  ## 0.2.0
10
33
 
11
34
  ### Minor Changes
12
35
 
13
- - [`ffb3e727aaf`](https://bitbucket.org/atlassian/atlassian-frontend/commits/ffb3e727aaf) - The `type` of the `DragHandleButton` now defaults to `'button'` (instead of `'submit'`)
36
+ - [#38115](https://bitbucket.org/atlassian/atlassian-frontend/pull-requests/38115) [`ffb3e727aaf`](https://bitbucket.org/atlassian/atlassian-frontend/commits/ffb3e727aaf) - The `type` of the `DragHandleButton` now defaults to `'button'` (instead of `'submit'`)
14
37
  - [`9f5b56f5677`](https://bitbucket.org/atlassian/atlassian-frontend/commits/9f5b56f5677) - The `DragHandleButton` props now extend `ButtonHTMLAttributes` (instead of just `HTMLAttributes`)
@@ -8,14 +8,24 @@ import { Code } from '@atlaskit/code';
8
8
  import SectionMessage from '@atlaskit/section-message';
9
9
 
10
10
  import DragHandleButtonExample from '../../examples/drag-handle-button';
11
+ import DragHandleButtonSmallExample from '../../examples/drag-handle-button-small';
11
12
 
12
13
  <SectionMessage appearance="warning">
13
14
  This component does not use the <Code>@atlaskit/button</Code> component,
14
15
  because <Code>@atlaskit/button</Code> cancels <Code>mousedown</Code> events
15
- and prevents dragging from occurring.
16
- Instead this component uses a native <Code>&lt;button&gt;</Code> element.
16
+ and prevents dragging from occurring. Instead this component uses a native{' '}
17
+ <Code>&lt;button&gt;</Code> element.
17
18
  </SectionMessage>
18
19
 
19
20
  ## Default
20
21
 
21
- <Example Component={DragHandleButtonExample} />
22
+ <Example Component={DragHandleButtonExample} />
23
+
24
+ ## Small variant
25
+
26
+ A small variant is available through the `/drag-handle-button-small` entrypoint.
27
+
28
+ It is intended for experiences with very limited space to accomodate a drag handle.
29
+ It is not recommended for general use due to the small target size.
30
+
31
+ <Example Component={DragHandleButtonSmallExample} />
@@ -11,4 +11,3 @@ import DragHandleButtonProps from '!!extract-react-types-loader!../../extract-re
11
11
  ## Props
12
12
 
13
13
  <PropsTable heading="" props={DragHandleButtonProps} />
14
-
@@ -8,14 +8,24 @@ import { Code } from '@atlaskit/code';
8
8
  import SectionMessage from '@atlaskit/section-message';
9
9
 
10
10
  import DragHandleDropdownMenuExample from '../../examples/drag-handle-dropdown-menu';
11
+ import DragHandleDropdownMenuSmallExample from '../../examples/drag-handle-dropdown-menu-small';
11
12
 
12
13
  <SectionMessage appearance="warning">
13
14
  This component does not use the <Code>@atlaskit/button</Code> component,
14
15
  because <Code>@atlaskit/button</Code> cancels <Code>mousedown</Code> events
15
- and prevents dragging from occurring.
16
- Instead this component uses a native <Code>&lt;button&gt;</Code> element.
16
+ and prevents dragging from occurring. Instead this component uses a native{' '}
17
+ <Code>&lt;button&gt;</Code> element.
17
18
  </SectionMessage>
18
19
 
19
20
  ## Default
20
21
 
21
- <Example Component={DragHandleDropdownMenuExample} />
22
+ <Example Component={DragHandleDropdownMenuExample} />
23
+
24
+ ## Small variant
25
+
26
+ A small variant is available through the `/drag-handle-dropdown-menu-small` entrypoint.
27
+
28
+ It is intended for experiences with very limited space to accomodate a drag handle.
29
+ It is not recommended for general use due to the small target size.
30
+
31
+ <Example Component={DragHandleButtonSizeExample} />
@@ -11,4 +11,3 @@ import DragHandleButtonProps from '!!extract-react-types-loader!../../extract-re
11
11
  ## Props
12
12
 
13
13
  <PropsTable heading="" props={DragHandleButtonProps} />
14
-
@@ -3,4 +3,4 @@ order: 0
3
3
  ---
4
4
 
5
5
  This package provides some optional `react` components that can be used to build
6
- alternative flows for accessibility.
6
+ alternative flows for accessibility.
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.DragHandleButtonBase = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
10
+ var _react = require("react");
11
+ var _react2 = require("@emotion/react");
12
+ var _focusRing = _interopRequireDefault(require("@atlaskit/focus-ring"));
13
+ var _excluded = ["children", "isSelected", "testId", "appearance", "type"];
14
+ /** @jsx jsx */
15
+ /**
16
+ * Cannot use `@atlaskit/button` here because it cancels `mousedown` events
17
+ * which prevents dragging.
18
+ */
19
+ var buttonStyles = (0, _react2.css)({
20
+ borderRadius: "var(--ds-border-radius-100, 3px)",
21
+ padding: "var(--ds-space-0, 0px)",
22
+ width: 'max-content',
23
+ border: 'none',
24
+ cursor: 'grab',
25
+ display: 'flex'
26
+ });
27
+ var buttonAppearanceStyles = {
28
+ default: (0, _react2.css)({
29
+ backgroundColor: "var(--ds-background-neutral, #091E420F)",
30
+ ':hover': {
31
+ backgroundColor: "var(--ds-background-neutral-hovered, #091E4224)"
32
+ },
33
+ ':active': {
34
+ backgroundColor: "var(--ds-background-neutral-pressed, #091E424F)"
35
+ }
36
+ }),
37
+ subtle: (0, _react2.css)({
38
+ backgroundColor: "var(--ds-background-neutral-subtle, #00000000)",
39
+ ':hover': {
40
+ backgroundColor: "var(--ds-background-neutral-subtle-hovered, #091E420F)"
41
+ },
42
+ ':active': {
43
+ backgroundColor: "var(--ds-background-neutral-subtle-pressed, #091E4224)"
44
+ }
45
+ }),
46
+ selected: (0, _react2.css)({
47
+ backgroundColor: "var(--ds-background-selected, #E9F2FF)",
48
+ color: "var(--ds-text-selected, #0C66E4)"
49
+ })
50
+ };
51
+
52
+ /**
53
+ * A button with pre-configured styling to look like a drag handle.
54
+ *
55
+ * This component uses a native button because the `@atlaskit/button`
56
+ * cancels `mouseDown` events, which prevents dragging.
57
+ */
58
+ var DragHandleButtonBase = exports.DragHandleButtonBase = /*#__PURE__*/(0, _react.forwardRef)(function DragHandleButton(_ref, ref) {
59
+ var children = _ref.children,
60
+ _ref$isSelected = _ref.isSelected,
61
+ isSelected = _ref$isSelected === void 0 ? false : _ref$isSelected,
62
+ testId = _ref.testId,
63
+ _ref$appearance = _ref.appearance,
64
+ appearanceProp = _ref$appearance === void 0 ? 'default' : _ref$appearance,
65
+ _ref$type = _ref.type,
66
+ type = _ref$type === void 0 ? 'button' : _ref$type,
67
+ buttonProps = (0, _objectWithoutProperties2.default)(_ref, _excluded);
68
+ var appearance = isSelected ? 'selected' : appearanceProp;
69
+ return (0, _react2.jsx)(_focusRing.default, null, (0, _react2.jsx)("button", (0, _extends2.default)({
70
+ ref: ref,
71
+ css: [buttonStyles, buttonAppearanceStyles[appearance]],
72
+ "data-testid": testId,
73
+ type: type
74
+ }, buttonProps), children));
75
+ });
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.DragHandleButtonSmall = void 0;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
+ var _react = _interopRequireWildcard(require("react"));
12
+ var _dragHandleButtonBase = require("./drag-handle-button-base");
13
+ var _dragHandleIconSmall = require("./drag-handle-icon-small");
14
+ var _excluded = ["label"];
15
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
16
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
+ /**
18
+ * A button with pre-configured styling to look like a drag handle.
19
+ *
20
+ * This component uses a native button because the `@atlaskit/button`
21
+ * cancels `mouseDown` events, which prevents dragging.
22
+ */
23
+ var DragHandleButtonSmall = exports.DragHandleButtonSmall = /*#__PURE__*/(0, _react.forwardRef)(function DragHandleButton(_ref, ref) {
24
+ var label = _ref.label,
25
+ buttonProps = (0, _objectWithoutProperties2.default)(_ref, _excluded);
26
+ return /*#__PURE__*/_react.default.createElement(_dragHandleButtonBase.DragHandleButtonBase, (0, _extends2.default)({
27
+ ref: ref
28
+ }, buttonProps), /*#__PURE__*/_react.default.createElement(_dragHandleIconSmall.DragHandleIconSmall, {
29
+ label: label
30
+ }));
31
+ });
@@ -1,78 +1,31 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.DragHandleButton = void 0;
8
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
10
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
10
- var _react = require("react");
11
- var _react2 = require("@emotion/react");
12
- var _focusRing = _interopRequireDefault(require("@atlaskit/focus-ring"));
13
- var _dragHandler = _interopRequireDefault(require("@atlaskit/icon/glyph/drag-handler"));
14
- var _excluded = ["isSelected", "testId", "appearance", "label", "type"];
15
- /** @jsx jsx */
16
- /**
17
- * Cannot use `@atlaskit/button` here because it cancels `mousedown` events
18
- * which prevents dragging.
19
- */
20
- var buttonStyles = (0, _react2.css)({
21
- borderRadius: "var(--ds-border-radius-100, 3px)",
22
- padding: "var(--ds-space-0, 0px)",
23
- width: 'max-content',
24
- border: 'none',
25
- cursor: 'grab',
26
- display: 'flex'
27
- });
28
- var buttonAppearanceStyles = {
29
- default: (0, _react2.css)({
30
- backgroundColor: "var(--ds-background-neutral, #091E420F)",
31
- ':hover': {
32
- backgroundColor: "var(--ds-background-neutral-hovered, #091E4224)"
33
- },
34
- ':active': {
35
- backgroundColor: "var(--ds-background-neutral-pressed, #091E424F)"
36
- }
37
- }),
38
- subtle: (0, _react2.css)({
39
- backgroundColor: "var(--ds-background-neutral-subtle, #00000000)",
40
- ':hover': {
41
- backgroundColor: "var(--ds-background-neutral-subtle-hovered, #091E420F)"
42
- },
43
- ':active': {
44
- backgroundColor: "var(--ds-background-neutral-subtle-pressed, #091E4224)"
45
- }
46
- }),
47
- selected: (0, _react2.css)({
48
- backgroundColor: "var(--ds-background-selected, #E9F2FF)",
49
- color: "var(--ds-text-selected, #0C66E4)"
50
- })
51
- };
11
+ var _react = _interopRequireWildcard(require("react"));
12
+ var _dragHandleButtonBase = require("./drag-handle-button-base");
13
+ var _dragHandleIcon = require("./drag-handle-icon");
14
+ var _excluded = ["label"];
15
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
16
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
52
17
  /**
53
18
  * A button with pre-configured styling to look like a drag handle.
54
19
  *
55
20
  * This component uses a native button because the `@atlaskit/button`
56
21
  * cancels `mouseDown` events, which prevents dragging.
57
22
  */
58
- var DragHandleButton = /*#__PURE__*/(0, _react.forwardRef)(function DragHandleButton(_ref, ref) {
59
- var _ref$isSelected = _ref.isSelected,
60
- isSelected = _ref$isSelected === void 0 ? false : _ref$isSelected,
61
- testId = _ref.testId,
62
- _ref$appearance = _ref.appearance,
63
- appearanceProp = _ref$appearance === void 0 ? 'default' : _ref$appearance,
64
- label = _ref.label,
65
- _ref$type = _ref.type,
66
- type = _ref$type === void 0 ? 'button' : _ref$type,
23
+ var DragHandleButton = exports.DragHandleButton = /*#__PURE__*/(0, _react.forwardRef)(function DragHandleButton(_ref, ref) {
24
+ var label = _ref.label,
67
25
  buttonProps = (0, _objectWithoutProperties2.default)(_ref, _excluded);
68
- var appearance = isSelected ? 'selected' : appearanceProp;
69
- return (0, _react2.jsx)(_focusRing.default, null, (0, _react2.jsx)("button", (0, _extends2.default)({
70
- ref: ref,
71
- css: [buttonStyles, buttonAppearanceStyles[appearance]],
72
- "data-testid": testId,
73
- type: type
74
- }, buttonProps), (0, _react2.jsx)(_dragHandler.default, {
26
+ return /*#__PURE__*/_react.default.createElement(_dragHandleButtonBase.DragHandleButtonBase, (0, _extends2.default)({
27
+ ref: ref
28
+ }, buttonProps), /*#__PURE__*/_react.default.createElement(_dragHandleIcon.DragHandleIcon, {
75
29
  label: label
76
- })));
77
- });
78
- exports.DragHandleButton = DragHandleButton;
30
+ }));
31
+ });
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.DragHandleDropdownMenuSmall = DragHandleDropdownMenuSmall;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
+ var _react = _interopRequireWildcard(require("react"));
12
+ var _dropdownMenu = _interopRequireDefault(require("@atlaskit/dropdown-menu"));
13
+ var _mergeRefs = _interopRequireDefault(require("@atlaskit/ds-lib/merge-refs"));
14
+ var _dragHandleButtonBase = require("./drag-handle-button-base");
15
+ var _dragHandleIconSmall = require("./drag-handle-icon-small");
16
+ var _excluded = ["triggerRef"]; // eslint-disable-next-line @atlaskit/design-system/no-banned-imports
17
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
18
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
19
+ /**
20
+ * A dropdown menu with a predefined trigger, styled to look like a drag handle.
21
+ *
22
+ * The API is designed to mirror the `@atlaskit/dropdown-menu` API.
23
+ */
24
+ function DragHandleDropdownMenuSmall(_ref) {
25
+ var children = _ref.children,
26
+ consumerRef = _ref.triggerRef,
27
+ appearance = _ref.appearance,
28
+ label = _ref.label;
29
+ var renderTrigger = (0, _react.useCallback)(function (_ref2) {
30
+ var triggerRef = _ref2.triggerRef,
31
+ triggerProps = (0, _objectWithoutProperties2.default)(_ref2, _excluded);
32
+ var mergedRef = (0, _mergeRefs.default)([consumerRef, triggerRef]);
33
+ return /*#__PURE__*/_react.default.createElement(_dragHandleButtonBase.DragHandleButtonBase, (0, _extends2.default)({
34
+ ref: mergedRef,
35
+ appearance: appearance
36
+ }, triggerProps), /*#__PURE__*/_react.default.createElement(_dragHandleIconSmall.DragHandleIconSmall, {
37
+ label: label
38
+ }));
39
+ }, [appearance, consumerRef, label]);
40
+ return /*#__PURE__*/_react.default.createElement(_dropdownMenu.default, {
41
+ trigger: renderTrigger
42
+ }, children);
43
+ }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.DragHandleIconSmall = DragHandleIconSmall;
8
+ var _react = require("@emotion/react");
9
+ var _dragHandler = _interopRequireDefault(require("@atlaskit/icon/glyph/drag-handler"));
10
+ var _primitives = require("@atlaskit/primitives");
11
+ /** @jsx jsx */
12
+
13
+ var iconSmallStyles = (0, _primitives.xcss)({
14
+ display: 'inline-flex',
15
+ marginInline: "var(--ds-space-negative-050, -4px)"
16
+ });
17
+ function DragHandleIconSmall(_ref) {
18
+ var label = _ref.label;
19
+ return (0, _react.jsx)(_primitives.Box, {
20
+ xcss: iconSmallStyles
21
+ }, (0, _react.jsx)(_dragHandler.default, {
22
+ label: label,
23
+ size: "small",
24
+ primaryColor: "var(--ds-icon-subtle, #626F86)"
25
+ }));
26
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.DragHandleIcon = DragHandleIcon;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _dragHandler = _interopRequireDefault(require("@atlaskit/icon/glyph/drag-handler"));
10
+ function DragHandleIcon(_ref) {
11
+ var label = _ref.label;
12
+ return /*#__PURE__*/_react.default.createElement(_dragHandler.default, {
13
+ label: label,
14
+ primaryColor: "var(--ds-icon-subtle, #626F86)"
15
+ });
16
+ }
package/dist/cjs/index.js CHANGED
@@ -7,5 +7,4 @@ exports.default = void 0;
7
7
  /**
8
8
  * This file exists for module resolution purposes.
9
9
  */
10
- var _default = {};
11
- exports.default = _default;
10
+ var _default = exports.default = {};
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,74 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ /** @jsx jsx */
3
+
4
+ import { forwardRef } from 'react';
5
+ import { css, jsx } from '@emotion/react';
6
+ import FocusRing from '@atlaskit/focus-ring';
7
+ /**
8
+ * Cannot use `@atlaskit/button` here because it cancels `mousedown` events
9
+ * which prevents dragging.
10
+ */
11
+ const buttonStyles = css({
12
+ borderRadius: "var(--ds-border-radius-100, 3px)",
13
+ padding: "var(--ds-space-0, 0px)",
14
+ width: 'max-content',
15
+ border: 'none',
16
+ cursor: 'grab',
17
+ display: 'flex'
18
+ });
19
+ const buttonAppearanceStyles = {
20
+ default: css({
21
+ backgroundColor: "var(--ds-background-neutral, #091E420F)",
22
+ ':hover': {
23
+ backgroundColor: "var(--ds-background-neutral-hovered, #091E4224)"
24
+ },
25
+ ':active': {
26
+ backgroundColor: "var(--ds-background-neutral-pressed, #091E424F)"
27
+ }
28
+ }),
29
+ subtle: css({
30
+ backgroundColor: "var(--ds-background-neutral-subtle, #00000000)",
31
+ ':hover': {
32
+ backgroundColor: "var(--ds-background-neutral-subtle-hovered, #091E420F)"
33
+ },
34
+ ':active': {
35
+ backgroundColor: "var(--ds-background-neutral-subtle-pressed, #091E4224)"
36
+ }
37
+ }),
38
+ selected: css({
39
+ backgroundColor: "var(--ds-background-selected, #E9F2FF)",
40
+ color: "var(--ds-text-selected, #0C66E4)"
41
+ })
42
+ };
43
+
44
+ /**
45
+ * A button with pre-configured styling to look like a drag handle.
46
+ *
47
+ * This component uses a native button because the `@atlaskit/button`
48
+ * cancels `mouseDown` events, which prevents dragging.
49
+ */
50
+ export const DragHandleButtonBase = /*#__PURE__*/forwardRef(function DragHandleButton({
51
+ children,
52
+ isSelected = false,
53
+ testId,
54
+ appearance: appearanceProp = 'default',
55
+ /**
56
+ * Defaulting to `button` instead of `submit` (native default in some cases).
57
+ *
58
+ * A type of `submit` only makes sense in a form context, and isn't very
59
+ * relevant to a drag handle.
60
+ *
61
+ * `@atlaskit/button` also defaults to a type of `button` as well, as it
62
+ * is more semantically appropriate in a wider range of cases.
63
+ */
64
+ type = 'button',
65
+ ...buttonProps
66
+ }, ref) {
67
+ const appearance = isSelected ? 'selected' : appearanceProp;
68
+ return jsx(FocusRing, null, jsx("button", _extends({
69
+ ref: ref,
70
+ css: [buttonStyles, buttonAppearanceStyles[appearance]],
71
+ "data-testid": testId,
72
+ type: type
73
+ }, buttonProps), children));
74
+ });
@@ -0,0 +1,20 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import React, { forwardRef } from 'react';
3
+ import { DragHandleButtonBase } from './drag-handle-button-base';
4
+ import { DragHandleIconSmall } from './drag-handle-icon-small';
5
+ /**
6
+ * A button with pre-configured styling to look like a drag handle.
7
+ *
8
+ * This component uses a native button because the `@atlaskit/button`
9
+ * cancels `mouseDown` events, which prevents dragging.
10
+ */
11
+ export const DragHandleButtonSmall = /*#__PURE__*/forwardRef(function DragHandleButton({
12
+ label,
13
+ ...buttonProps
14
+ }, ref) {
15
+ return /*#__PURE__*/React.createElement(DragHandleButtonBase, _extends({
16
+ ref: ref
17
+ }, buttonProps), /*#__PURE__*/React.createElement(DragHandleIconSmall, {
18
+ label: label
19
+ }));
20
+ });
@@ -1,46 +1,7 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
- /** @jsx jsx */
3
-
4
- import { forwardRef } from 'react';
5
- import { css, jsx } from '@emotion/react';
6
- import FocusRing from '@atlaskit/focus-ring';
7
- import DragHandlerIcon from '@atlaskit/icon/glyph/drag-handler';
8
- /**
9
- * Cannot use `@atlaskit/button` here because it cancels `mousedown` events
10
- * which prevents dragging.
11
- */
12
- const buttonStyles = css({
13
- borderRadius: "var(--ds-border-radius-100, 3px)",
14
- padding: "var(--ds-space-0, 0px)",
15
- width: 'max-content',
16
- border: 'none',
17
- cursor: 'grab',
18
- display: 'flex'
19
- });
20
- const buttonAppearanceStyles = {
21
- default: css({
22
- backgroundColor: "var(--ds-background-neutral, #091E420F)",
23
- ':hover': {
24
- backgroundColor: "var(--ds-background-neutral-hovered, #091E4224)"
25
- },
26
- ':active': {
27
- backgroundColor: "var(--ds-background-neutral-pressed, #091E424F)"
28
- }
29
- }),
30
- subtle: css({
31
- backgroundColor: "var(--ds-background-neutral-subtle, #00000000)",
32
- ':hover': {
33
- backgroundColor: "var(--ds-background-neutral-subtle-hovered, #091E420F)"
34
- },
35
- ':active': {
36
- backgroundColor: "var(--ds-background-neutral-subtle-pressed, #091E4224)"
37
- }
38
- }),
39
- selected: css({
40
- backgroundColor: "var(--ds-background-selected, #E9F2FF)",
41
- color: "var(--ds-text-selected, #0C66E4)"
42
- })
43
- };
2
+ import React, { forwardRef } from 'react';
3
+ import { DragHandleButtonBase } from './drag-handle-button-base';
4
+ import { DragHandleIcon } from './drag-handle-icon';
44
5
  /**
45
6
  * A button with pre-configured styling to look like a drag handle.
46
7
  *
@@ -48,29 +9,12 @@ const buttonAppearanceStyles = {
48
9
  * cancels `mouseDown` events, which prevents dragging.
49
10
  */
50
11
  export const DragHandleButton = /*#__PURE__*/forwardRef(function DragHandleButton({
51
- isSelected = false,
52
- testId,
53
- appearance: appearanceProp = 'default',
54
12
  label,
55
- /**
56
- * Defaulting to `button` instead of `submit` (native default in some cases).
57
- *
58
- * A type of `submit` only makes sense in a form context, and isn't very
59
- * relevant to a drag handle.
60
- *
61
- * `@atlaskit/button` also defaults to a type of `button` as well, as it
62
- * is more semantically appropriate in a wider range of cases.
63
- */
64
- type = 'button',
65
13
  ...buttonProps
66
14
  }, ref) {
67
- const appearance = isSelected ? 'selected' : appearanceProp;
68
- return jsx(FocusRing, null, jsx("button", _extends({
69
- ref: ref,
70
- css: [buttonStyles, buttonAppearanceStyles[appearance]],
71
- "data-testid": testId,
72
- type: type
73
- }, buttonProps), jsx(DragHandlerIcon, {
15
+ return /*#__PURE__*/React.createElement(DragHandleButtonBase, _extends({
16
+ ref: ref
17
+ }, buttonProps), /*#__PURE__*/React.createElement(DragHandleIcon, {
74
18
  label: label
75
- })));
19
+ }));
76
20
  });
@@ -0,0 +1,34 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import React, { useCallback } from 'react';
3
+ import DropdownMenu from '@atlaskit/dropdown-menu';
4
+ // eslint-disable-next-line @atlaskit/design-system/no-banned-imports
5
+ import mergeRefs from '@atlaskit/ds-lib/merge-refs';
6
+ import { DragHandleButtonBase } from './drag-handle-button-base';
7
+ import { DragHandleIconSmall } from './drag-handle-icon-small';
8
+ /**
9
+ * A dropdown menu with a predefined trigger, styled to look like a drag handle.
10
+ *
11
+ * The API is designed to mirror the `@atlaskit/dropdown-menu` API.
12
+ */
13
+ export function DragHandleDropdownMenuSmall({
14
+ children,
15
+ triggerRef: consumerRef,
16
+ appearance,
17
+ label
18
+ }) {
19
+ const renderTrigger = useCallback(({
20
+ triggerRef,
21
+ ...triggerProps
22
+ }) => {
23
+ const mergedRef = mergeRefs([consumerRef, triggerRef]);
24
+ return /*#__PURE__*/React.createElement(DragHandleButtonBase, _extends({
25
+ ref: mergedRef,
26
+ appearance: appearance
27
+ }, triggerProps), /*#__PURE__*/React.createElement(DragHandleIconSmall, {
28
+ label: label
29
+ }));
30
+ }, [appearance, consumerRef, label]);
31
+ return /*#__PURE__*/React.createElement(DropdownMenu, {
32
+ trigger: renderTrigger
33
+ }, children);
34
+ }