@cloudscape-design/components 3.0.1064 → 3.0.1066

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 (256) hide show
  1. package/alert/index.d.ts.map +1 -1
  2. package/alert/internal-do-not-use-core.js +7 -5
  3. package/alert/internal-do-not-use-core.js.map +1 -1
  4. package/alert/internal.d.ts +1 -1
  5. package/alert/internal.js +1 -1
  6. package/alert/internal.js.map +1 -1
  7. package/alert/style.js +3 -3
  8. package/alert/style.js.map +1 -1
  9. package/alert/styles.css.js +27 -27
  10. package/alert/styles.scoped.css +46 -46
  11. package/alert/styles.selectors.js +27 -27
  12. package/anchor-navigation/internal.d.ts.map +1 -1
  13. package/anchor-navigation/internal.js +1 -1
  14. package/anchor-navigation/internal.js.map +1 -1
  15. package/annotation-context/annotation/styles.css.js +24 -24
  16. package/annotation-context/annotation/styles.scoped.css +32 -32
  17. package/annotation-context/annotation/styles.selectors.js +24 -24
  18. package/app-layout/index.js.map +1 -1
  19. package/app-layout/notifications/styles.css.js +3 -3
  20. package/app-layout/notifications/styles.scoped.css +7 -7
  21. package/app-layout/notifications/styles.selectors.js +3 -3
  22. package/app-layout/visual-refresh/styles.css.js +86 -86
  23. package/app-layout/visual-refresh/styles.scoped.css +258 -258
  24. package/app-layout/visual-refresh/styles.selectors.js +86 -86
  25. package/app-layout/visual-refresh-toolbar/drawer/styles.css.js +17 -17
  26. package/app-layout/visual-refresh-toolbar/drawer/styles.scoped.css +39 -39
  27. package/app-layout/visual-refresh-toolbar/drawer/styles.selectors.js +17 -17
  28. package/app-layout/visual-refresh-toolbar/navigation/styles.css.js +4 -4
  29. package/app-layout/visual-refresh-toolbar/navigation/styles.scoped.css +7 -7
  30. package/app-layout/visual-refresh-toolbar/navigation/styles.selectors.js +4 -4
  31. package/app-layout/visual-refresh-toolbar/skeleton/styles.css.js +23 -23
  32. package/app-layout/visual-refresh-toolbar/skeleton/styles.scoped.css +46 -46
  33. package/app-layout/visual-refresh-toolbar/skeleton/styles.selectors.js +23 -23
  34. package/app-layout-toolbar/index.js.map +1 -1
  35. package/area-chart/internal.d.ts.map +1 -1
  36. package/area-chart/internal.js +1 -1
  37. package/area-chart/internal.js.map +1 -1
  38. package/attribute-editor/internal.js +1 -1
  39. package/attribute-editor/internal.js.map +1 -1
  40. package/attribute-editor/styles.css.js +15 -15
  41. package/attribute-editor/styles.scoped.css +28 -28
  42. package/attribute-editor/styles.selectors.js +15 -15
  43. package/box/internal.d.ts.map +1 -1
  44. package/box/internal.js +1 -1
  45. package/box/internal.js.map +1 -1
  46. package/breadcrumb-group/item/styles.css.js +7 -7
  47. package/breadcrumb-group/item/styles.scoped.css +28 -28
  48. package/breadcrumb-group/item/styles.selectors.js +7 -7
  49. package/breadcrumb-group/skeleton.d.ts +1 -1
  50. package/button/internal.d.ts +2 -2
  51. package/button/internal.d.ts.map +1 -1
  52. package/button/internal.js +1 -1
  53. package/button/internal.js.map +1 -1
  54. package/button/styles.css.js +22 -22
  55. package/button/styles.scoped.css +212 -212
  56. package/button/styles.selectors.js +22 -22
  57. package/button-dropdown/item-element/styles.css.js +16 -16
  58. package/button-dropdown/item-element/styles.scoped.css +27 -27
  59. package/button-dropdown/item-element/styles.selectors.js +16 -16
  60. package/button-group/internal.js +1 -1
  61. package/button-group/internal.js.map +1 -1
  62. package/checkbox/styles.css.js +3 -3
  63. package/checkbox/styles.scoped.css +11 -11
  64. package/checkbox/styles.selectors.js +3 -3
  65. package/container/internal.d.ts.map +1 -1
  66. package/container/internal.js +1 -1
  67. package/container/internal.js.map +1 -1
  68. package/content-layout/styles.css.js +14 -14
  69. package/content-layout/styles.scoped.css +27 -27
  70. package/content-layout/styles.selectors.js +14 -14
  71. package/copy-to-clipboard/internal.d.ts.map +1 -1
  72. package/copy-to-clipboard/internal.js +1 -1
  73. package/copy-to-clipboard/internal.js.map +1 -1
  74. package/date-input/internal.d.ts +1 -1
  75. package/date-input/internal.js +1 -1
  76. package/date-input/internal.js.map +1 -1
  77. package/file-dropzone/internal.d.ts.map +1 -1
  78. package/file-dropzone/internal.js +1 -1
  79. package/file-dropzone/internal.js.map +1 -1
  80. package/file-input/internal.d.ts +1 -1
  81. package/file-input/internal.d.ts.map +1 -1
  82. package/file-input/internal.js +1 -1
  83. package/file-input/internal.js.map +1 -1
  84. package/file-upload/internal.d.ts +1 -1
  85. package/file-upload/internal.js +1 -1
  86. package/file-upload/internal.js.map +1 -1
  87. package/flashbar/styles.css.js +50 -50
  88. package/flashbar/styles.scoped.css +187 -187
  89. package/flashbar/styles.selectors.js +50 -50
  90. package/form/index.d.ts.map +1 -1
  91. package/form/index.js +6 -5
  92. package/form/index.js.map +1 -1
  93. package/form-field/interfaces.d.ts +1 -1
  94. package/form-field/interfaces.d.ts.map +1 -1
  95. package/form-field/interfaces.js.map +1 -1
  96. package/form-field/internal.d.ts.map +1 -1
  97. package/form-field/internal.js +6 -4
  98. package/form-field/internal.js.map +1 -1
  99. package/grid/internal.js +1 -1
  100. package/grid/internal.js.map +1 -1
  101. package/header/internal.d.ts.map +1 -1
  102. package/header/internal.js +1 -1
  103. package/header/internal.js.map +1 -1
  104. package/help-panel/styles.css.js +6 -6
  105. package/help-panel/styles.scoped.css +73 -73
  106. package/help-panel/styles.selectors.js +6 -6
  107. package/icon/internal.js +1 -1
  108. package/icon/internal.js.map +1 -1
  109. package/internal/base-component/styles.scoped.css +1 -1
  110. package/internal/components/drag-handle/button.d.ts +1 -1
  111. package/internal/components/drag-handle/button.d.ts.map +1 -1
  112. package/internal/components/drag-handle/button.js +8 -4
  113. package/internal/components/drag-handle/button.js.map +1 -1
  114. package/internal/components/drag-handle/index.d.ts +1 -1
  115. package/internal/components/drag-handle/index.d.ts.map +1 -1
  116. package/internal/components/drag-handle/index.js +3 -3
  117. package/internal/components/drag-handle/index.js.map +1 -1
  118. package/internal/components/drag-handle/interfaces.d.ts +3 -0
  119. package/internal/components/drag-handle/interfaces.d.ts.map +1 -1
  120. package/internal/components/drag-handle/interfaces.js.map +1 -1
  121. package/internal/components/drag-handle/styles.css.js +14 -13
  122. package/internal/components/drag-handle/styles.scoped.css +22 -18
  123. package/internal/components/drag-handle/styles.selectors.js +14 -13
  124. package/internal/components/drag-handle-wrapper/index.d.ts +1 -0
  125. package/internal/components/drag-handle-wrapper/index.d.ts.map +1 -1
  126. package/internal/components/drag-handle-wrapper/index.js +10 -9
  127. package/internal/components/drag-handle-wrapper/index.js.map +1 -1
  128. package/internal/components/drag-handle-wrapper/interfaces.d.ts +2 -1
  129. package/internal/components/drag-handle-wrapper/interfaces.d.ts.map +1 -1
  130. package/internal/components/drag-handle-wrapper/interfaces.js.map +1 -1
  131. package/internal/components/drag-handle-wrapper/styles.css.js +21 -21
  132. package/internal/components/drag-handle-wrapper/styles.scoped.css +44 -44
  133. package/internal/components/drag-handle-wrapper/styles.selectors.js +21 -21
  134. package/internal/components/dropdown/styles.css.js +20 -20
  135. package/internal/components/dropdown/styles.scoped.css +38 -38
  136. package/internal/components/dropdown/styles.selectors.js +20 -20
  137. package/internal/components/sortable-area/index.d.ts.map +1 -1
  138. package/internal/components/sortable-area/index.js +20 -5
  139. package/internal/components/sortable-area/index.js.map +1 -1
  140. package/internal/components/sortable-area/keyboard-sensor/index.d.ts +23 -6
  141. package/internal/components/sortable-area/keyboard-sensor/index.d.ts.map +1 -1
  142. package/internal/components/sortable-area/keyboard-sensor/index.js +60 -36
  143. package/internal/components/sortable-area/keyboard-sensor/index.js.map +1 -1
  144. package/internal/components/sortable-area/keyboard-sensor/utilities/events.d.ts +2 -0
  145. package/internal/components/sortable-area/keyboard-sensor/utilities/events.d.ts.map +1 -1
  146. package/internal/components/sortable-area/keyboard-sensor/utilities/events.js +2 -0
  147. package/internal/components/sortable-area/keyboard-sensor/utilities/events.js.map +1 -1
  148. package/internal/components/sortable-area/keyboard-sensor/utilities/scroll.d.ts +1 -1
  149. package/internal/components/sortable-area/keyboard-sensor/utilities/scroll.d.ts.map +1 -1
  150. package/internal/components/sortable-area/keyboard-sensor/utilities/scroll.js +4 -9
  151. package/internal/components/sortable-area/keyboard-sensor/utilities/scroll.js.map +1 -1
  152. package/internal/components/sortable-area/styles.css.js +8 -8
  153. package/internal/components/sortable-area/styles.scoped.css +15 -19
  154. package/internal/components/sortable-area/styles.selectors.js +8 -8
  155. package/internal/components/sortable-area/use-drag-and-drop-reorder.d.ts +4 -2
  156. package/internal/components/sortable-area/use-drag-and-drop-reorder.d.ts.map +1 -1
  157. package/internal/components/sortable-area/use-drag-and-drop-reorder.js +36 -40
  158. package/internal/components/sortable-area/use-drag-and-drop-reorder.js.map +1 -1
  159. package/internal/components/token-list/styles.css.js +10 -10
  160. package/internal/components/token-list/styles.scoped.css +25 -25
  161. package/internal/components/token-list/styles.selectors.js +10 -10
  162. package/internal/environment.js +2 -2
  163. package/internal/environment.json +2 -2
  164. package/internal/generated/custom-css-properties/index.d.ts +4 -0
  165. package/internal/generated/custom-css-properties/index.d.ts.map +1 -1
  166. package/internal/generated/custom-css-properties/index.js +79 -75
  167. package/internal/generated/custom-css-properties/index.js.map +1 -1
  168. package/internal/generated/theming/index.cjs +14 -0
  169. package/internal/generated/theming/index.cjs.d.ts +63 -0
  170. package/internal/generated/theming/index.d.ts +63 -0
  171. package/internal/generated/theming/index.js +14 -0
  172. package/internal/hooks/use-base-component/index.d.ts +5 -5
  173. package/internal/hooks/use-base-component/index.d.ts.map +1 -1
  174. package/internal/hooks/use-base-component/index.js.map +1 -1
  175. package/internal/manifest.json +1 -1
  176. package/link/internal.d.ts +1 -1
  177. package/link/internal.d.ts.map +1 -1
  178. package/link/internal.js +2 -4
  179. package/link/internal.js.map +1 -1
  180. package/link/styles.css.js +20 -20
  181. package/link/styles.scoped.css +103 -103
  182. package/link/styles.selectors.js +20 -20
  183. package/list/internal.d.ts.map +1 -1
  184. package/list/internal.js +1 -1
  185. package/list/internal.js.map +1 -1
  186. package/mixed-line-bar-chart/internal.d.ts.map +1 -1
  187. package/mixed-line-bar-chart/internal.js +1 -1
  188. package/mixed-line-bar-chart/internal.js.map +1 -1
  189. package/modal/internal.js +1 -1
  190. package/modal/internal.js.map +1 -1
  191. package/multiselect/internal.d.ts +1 -1
  192. package/multiselect/internal.d.ts.map +1 -1
  193. package/multiselect/internal.js +1 -1
  194. package/multiselect/internal.js.map +1 -1
  195. package/package.json +1 -1
  196. package/pagination/internal.d.ts.map +1 -1
  197. package/pagination/internal.js +1 -1
  198. package/pagination/internal.js.map +1 -1
  199. package/popover/internal.js +1 -1
  200. package/popover/internal.js.map +1 -1
  201. package/prompt-input/internal.js +1 -1
  202. package/prompt-input/internal.js.map +1 -1
  203. package/property-filter/interfaces.d.ts +2 -1
  204. package/property-filter/interfaces.d.ts.map +1 -1
  205. package/property-filter/interfaces.js.map +1 -1
  206. package/property-filter/internal.d.ts +1 -1
  207. package/property-filter/internal.d.ts.map +1 -1
  208. package/radio-group/internal.d.ts +1 -1
  209. package/radio-group/internal.d.ts.map +1 -1
  210. package/radio-group/internal.js +1 -1
  211. package/radio-group/internal.js.map +1 -1
  212. package/radio-group/styles.css.js +10 -10
  213. package/radio-group/styles.scoped.css +22 -22
  214. package/radio-group/styles.selectors.js +10 -10
  215. package/segmented-control/internal.d.ts.map +1 -1
  216. package/segmented-control/internal.js +1 -1
  217. package/segmented-control/internal.js.map +1 -1
  218. package/select/internal.js +1 -1
  219. package/select/internal.js.map +1 -1
  220. package/slider/internal.d.ts.map +1 -1
  221. package/slider/internal.js +1 -1
  222. package/slider/internal.js.map +1 -1
  223. package/slider/styles.css.js +26 -26
  224. package/slider/styles.scoped.css +86 -86
  225. package/slider/styles.selectors.js +26 -26
  226. package/space-between/internal.d.ts +1 -1
  227. package/space-between/internal.d.ts.map +1 -1
  228. package/spinner/styles.css.js +13 -13
  229. package/spinner/styles.scoped.css +39 -39
  230. package/spinner/styles.selectors.js +13 -13
  231. package/steps/internal.d.ts +1 -1
  232. package/steps/internal.d.ts.map +1 -1
  233. package/steps/internal.js.map +1 -1
  234. package/tag-editor/styles.css.js +3 -3
  235. package/tag-editor/styles.scoped.css +13 -13
  236. package/tag-editor/styles.selectors.js +3 -3
  237. package/text-content/styles.css.js +1 -1
  238. package/text-content/styles.scoped.css +66 -66
  239. package/text-content/styles.selectors.js +1 -1
  240. package/text-filter/internal.d.ts +1 -1
  241. package/text-filter/internal.d.ts.map +1 -1
  242. package/tiles/internal.d.ts +1 -1
  243. package/tiles/internal.d.ts.map +1 -1
  244. package/tiles/internal.js +1 -1
  245. package/tiles/internal.js.map +1 -1
  246. package/time-input/internal.d.ts +1 -1
  247. package/time-input/internal.d.ts.map +1 -1
  248. package/time-input/internal.js +1 -1
  249. package/time-input/internal.js.map +1 -1
  250. package/toggle/internal.js +1 -1
  251. package/toggle/internal.js.map +1 -1
  252. package/toggle/styles.css.js +10 -10
  253. package/toggle/styles.scoped.css +23 -23
  254. package/toggle/styles.selectors.js +10 -10
  255. package/wizard/wizard-form.js +5 -3
  256. package/wizard/wizard-form.js.map +1 -1
@@ -1,18 +1,11 @@
1
- import { defaultCoordinates } from '@dnd-kit/core';
1
+ import { defaultCoordinates, KeyboardCode } from '@dnd-kit/core';
2
2
  import { getOwnerDocument, getWindow, isKeyboardEvent, subtract as getCoordinatesDelta, } from '@dnd-kit/utilities';
3
3
  import { scrollElementIntoView } from '../../../utils/scrollable-containers';
4
4
  import { defaultKeyboardCodes } from './defaults';
5
5
  import { EventName } from './utilities/events';
6
6
  import { Listeners } from './utilities/listeners';
7
7
  import { applyScroll } from './utilities/scroll';
8
- // Slightly modified version of @dnd-kit's KeyboardSensor:
9
- // https://github.com/clauderic/dnd-kit/blob/master/packages/core/src/sensors/keyboard/KeyboardSensor.ts
10
- // The only difference is that here, reordering is deactivated on blur, as in
11
- // this PR: https://github.com/clauderic/dnd-kit/pull/1087.
12
- // If it is merged, then @dnd-kit's KeyboardSensor can be used instead
13
- // and all files under this directory (`keyboard-sensor`) can be removed.
14
- // Changes from mainstream are marked below as "Customization"
15
- export class KeyboardSensor {
8
+ export class KeyboardAndUAPSensor {
16
9
  constructor(props) {
17
10
  this.props = props;
18
11
  this.autoScrollEnabled = false;
@@ -21,6 +14,8 @@ export class KeyboardSensor {
21
14
  this.listeners = new Listeners(getOwnerDocument(target));
22
15
  this.windowListeners = new Listeners(getWindow(target));
23
16
  this.handleKeyDown = this.handleKeyDown.bind(this);
17
+ this.handleCustomDirectionEvent = this.handleCustomDirectionEvent.bind(this);
18
+ this.handleEnd = this.handleEnd.bind(this);
24
19
  this.handleCancel = this.handleCancel.bind(this);
25
20
  this.attach();
26
21
  }
@@ -29,9 +24,12 @@ export class KeyboardSensor {
29
24
  this.handleStart();
30
25
  this.windowListeners.add(EventName.Resize, this.handleCancel);
31
26
  this.windowListeners.add(EventName.VisibilityChange, this.handleCancel);
32
- // Customization: deactivate reordering on blur event
33
- (_a = this.props.event.target) === null || _a === void 0 ? void 0 : _a.addEventListener(EventName.Blur, this.handleCancel);
34
- setTimeout(() => this.listeners.add(EventName.Keydown, this.handleKeyDown));
27
+ (_a = this.props.event.target) === null || _a === void 0 ? void 0 : _a.addEventListener(EventName.Blur, this.handleEnd);
28
+ setTimeout(() => {
29
+ this.listeners.add(EventName.Keydown, this.handleKeyDown);
30
+ this.listeners.add(EventName.CustomDown, this.handleCustomDirectionEvent);
31
+ this.listeners.add(EventName.CustomUp, this.handleCustomDirectionEvent);
32
+ });
35
33
  }
36
34
  handleStart() {
37
35
  const { activeNode, onStart } = this.props;
@@ -43,8 +41,8 @@ export class KeyboardSensor {
43
41
  }
44
42
  handleKeyDown(event) {
45
43
  if (isKeyboardEvent(event)) {
46
- const { active, context, options } = this.props;
47
- const { keyboardCodes = defaultKeyboardCodes, coordinateGetter } = options;
44
+ const { options } = this.props;
45
+ const { keyboardCodes = defaultKeyboardCodes } = options;
48
46
  const { code } = event;
49
47
  if (keyboardCodes.end.indexOf(code) !== -1) {
50
48
  this.handleEnd(event);
@@ -54,26 +52,44 @@ export class KeyboardSensor {
54
52
  this.handleCancel(event);
55
53
  return;
56
54
  }
57
- const { collisionRect } = context.current;
58
- const currentCoordinates = collisionRect ? { x: collisionRect.left, y: collisionRect.top } : defaultCoordinates;
59
- if (!this.referenceCoordinates) {
60
- this.referenceCoordinates = currentCoordinates;
55
+ switch (code) {
56
+ case KeyboardCode.Up:
57
+ this.handleDirectionalMove(event, 'up');
58
+ break;
59
+ case KeyboardCode.Down:
60
+ this.handleDirectionalMove(event, 'down');
61
+ break;
61
62
  }
62
- if (!coordinateGetter) {
63
- return;
64
- }
65
- const newCoordinates = coordinateGetter(event, {
66
- active,
67
- context: context.current,
68
- currentCoordinates,
69
- });
70
- if (newCoordinates) {
71
- const { scrollableAncestors } = context.current;
72
- const direction = event.code;
73
- const scrolled = applyScroll({ currentCoordinates, direction, newCoordinates, scrollableAncestors });
74
- if (!scrolled) {
75
- this.handleMove(event, getCoordinatesDelta(newCoordinates, this.referenceCoordinates));
76
- }
63
+ }
64
+ }
65
+ handleCustomDirectionEvent(event) {
66
+ switch (event.type) {
67
+ case EventName.CustomUp:
68
+ this.handleDirectionalMove(event, 'up');
69
+ break;
70
+ case EventName.CustomDown:
71
+ this.handleDirectionalMove(event, 'down');
72
+ break;
73
+ }
74
+ }
75
+ handleDirectionalMove(event, direction) {
76
+ const { active, context, options } = this.props;
77
+ const { coordinateGetter } = options;
78
+ const { collisionRect } = context.current;
79
+ const currentCoordinates = collisionRect ? { x: collisionRect.left, y: collisionRect.top } : defaultCoordinates;
80
+ if (!this.referenceCoordinates) {
81
+ this.referenceCoordinates = currentCoordinates;
82
+ }
83
+ const newCoordinates = coordinateGetter(event, {
84
+ active,
85
+ context: context.current,
86
+ currentCoordinates,
87
+ });
88
+ if (newCoordinates) {
89
+ const { scrollableAncestors } = context.current;
90
+ const scrolled = applyScroll({ currentCoordinates, direction, newCoordinates, scrollableAncestors });
91
+ if (!scrolled) {
92
+ this.handleMove(event, getCoordinatesDelta(newCoordinates, this.referenceCoordinates));
77
93
  }
78
94
  }
79
95
  }
@@ -90,7 +106,6 @@ export class KeyboardSensor {
90
106
  }
91
107
  handleCancel(event) {
92
108
  const { onCancel } = this.props;
93
- // Customization: do not prevent browser from managing native focus
94
109
  if (event.type !== EventName.Blur) {
95
110
  event.preventDefault();
96
111
  }
@@ -99,13 +114,12 @@ export class KeyboardSensor {
99
114
  }
100
115
  detach() {
101
116
  var _a;
102
- // Customization: clean up listener for blur event
103
117
  (_a = this.props.event.target) === null || _a === void 0 ? void 0 : _a.removeEventListener(EventName.Blur, this.handleCancel);
104
118
  this.listeners.removeAll();
105
119
  this.windowListeners.removeAll();
106
120
  }
107
121
  }
108
- KeyboardSensor.activators = [
122
+ KeyboardAndUAPSensor.activators = [
109
123
  {
110
124
  eventName: 'onKeyDown',
111
125
  handler: (event, { keyboardCodes = defaultKeyboardCodes, onActivation }, { active }) => {
@@ -122,5 +136,15 @@ KeyboardSensor.activators = [
122
136
  return false;
123
137
  },
124
138
  },
139
+ {
140
+ eventName: 'onClick',
141
+ handler: ({ nativeEvent: event }, { onActivation }) => {
142
+ if (event.button !== 0) {
143
+ return false;
144
+ }
145
+ onActivation === null || onActivation === void 0 ? void 0 : onActivation({ event });
146
+ return true;
147
+ },
148
+ },
125
149
  ];
126
150
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/internal/components/sortable-area/keyboard-sensor/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport type { Activators, SensorInstance } from '@dnd-kit/core';\nimport { defaultCoordinates } from '@dnd-kit/core';\nimport { KeyboardSensorOptions, KeyboardSensorProps } from '@dnd-kit/core';\nimport {\n Coordinates,\n getOwnerDocument,\n getWindow,\n isKeyboardEvent,\n subtract as getCoordinatesDelta,\n} from '@dnd-kit/utilities';\n\nimport { scrollElementIntoView } from '../../../utils/scrollable-containers';\nimport { defaultKeyboardCodes } from './defaults';\nimport { EventName } from './utilities/events';\nimport { Listeners } from './utilities/listeners';\nimport { applyScroll } from './utilities/scroll';\n\n// Slightly modified version of @dnd-kit's KeyboardSensor:\n// https://github.com/clauderic/dnd-kit/blob/master/packages/core/src/sensors/keyboard/KeyboardSensor.ts\n\n// The only difference is that here, reordering is deactivated on blur, as in\n// this PR: https://github.com/clauderic/dnd-kit/pull/1087.\n// If it is merged, then @dnd-kit's KeyboardSensor can be used instead\n// and all files under this directory (`keyboard-sensor`) can be removed.\n\n// Changes from mainstream are marked below as \"Customization\"\n\nexport class KeyboardSensor implements SensorInstance {\n public autoScrollEnabled = false;\n private referenceCoordinates: Coordinates | undefined;\n private listeners: Listeners;\n private windowListeners: Listeners;\n\n constructor(private props: KeyboardSensorProps) {\n const {\n event: { target },\n } = props;\n\n this.props = props;\n this.listeners = new Listeners(getOwnerDocument(target));\n this.windowListeners = new Listeners(getWindow(target));\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n\n this.attach();\n }\n\n private attach() {\n this.handleStart();\n\n this.windowListeners.add(EventName.Resize, this.handleCancel);\n this.windowListeners.add(EventName.VisibilityChange, this.handleCancel);\n\n // Customization: deactivate reordering on blur event\n this.props.event.target?.addEventListener(EventName.Blur, this.handleCancel);\n\n setTimeout(() => this.listeners.add(EventName.Keydown, this.handleKeyDown));\n }\n\n private handleStart() {\n const { activeNode, onStart } = this.props;\n const node = activeNode.node.current;\n\n if (node) {\n scrollElementIntoView(node);\n }\n\n onStart(defaultCoordinates);\n }\n\n private handleKeyDown(event: Event) {\n if (isKeyboardEvent(event)) {\n const { active, context, options } = this.props;\n const { keyboardCodes = defaultKeyboardCodes, coordinateGetter } = options;\n const { code } = event;\n\n if (keyboardCodes.end.indexOf(code) !== -1) {\n this.handleEnd(event);\n return;\n }\n\n if (keyboardCodes.cancel.indexOf(code) !== -1) {\n this.handleCancel(event);\n return;\n }\n\n const { collisionRect } = context.current;\n const currentCoordinates = collisionRect ? { x: collisionRect.left, y: collisionRect.top } : defaultCoordinates;\n\n if (!this.referenceCoordinates) {\n this.referenceCoordinates = currentCoordinates;\n }\n\n if (!coordinateGetter) {\n return;\n }\n\n const newCoordinates = coordinateGetter(event, {\n active,\n context: context.current,\n currentCoordinates,\n });\n\n if (newCoordinates) {\n const { scrollableAncestors } = context.current;\n const direction = event.code;\n\n const scrolled = applyScroll({ currentCoordinates, direction, newCoordinates, scrollableAncestors });\n\n if (!scrolled) {\n this.handleMove(event, getCoordinatesDelta(newCoordinates, this.referenceCoordinates));\n }\n }\n }\n }\n\n private handleMove(event: Event, coordinates: Coordinates) {\n const { onMove } = this.props;\n\n event.preventDefault();\n onMove(coordinates);\n }\n\n private handleEnd(event: Event) {\n const { onEnd } = this.props;\n\n event.preventDefault();\n this.detach();\n onEnd();\n }\n\n private handleCancel(event: Event) {\n const { onCancel } = this.props;\n\n // Customization: do not prevent browser from managing native focus\n if (event.type !== EventName.Blur) {\n event.preventDefault();\n }\n this.detach();\n onCancel();\n }\n\n private detach() {\n // Customization: clean up listener for blur event\n this.props.event.target?.removeEventListener(EventName.Blur, this.handleCancel);\n\n this.listeners.removeAll();\n this.windowListeners.removeAll();\n }\n\n static activators: Activators<KeyboardSensorOptions> = [\n {\n eventName: 'onKeyDown' as const,\n handler: (event: React.KeyboardEvent, { keyboardCodes = defaultKeyboardCodes, onActivation }, { active }) => {\n const { code } = event.nativeEvent;\n\n if (keyboardCodes.start.indexOf(code) !== -1) {\n const activator = active.activatorNode.current;\n\n if (activator && event.target !== activator) {\n return false;\n }\n\n event.preventDefault();\n\n onActivation?.({ event: event.nativeEvent });\n\n return true;\n }\n\n return false;\n },\n },\n ];\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/internal/components/sortable-area/keyboard-sensor/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport type { Activators, SensorContext, SensorInstance, SensorProps, UniqueIdentifier } from '@dnd-kit/core';\nimport { defaultCoordinates, KeyboardCode } from '@dnd-kit/core';\nimport { KeyboardSensorOptions } from '@dnd-kit/core';\nimport {\n Coordinates,\n getOwnerDocument,\n getWindow,\n isKeyboardEvent,\n subtract as getCoordinatesDelta,\n} from '@dnd-kit/utilities';\n\nimport { scrollElementIntoView } from '../../../utils/scrollable-containers';\nimport { defaultKeyboardCodes } from './defaults';\nimport { EventName } from './utilities/events';\nimport { Listeners } from './utilities/listeners';\nimport { applyScroll } from './utilities/scroll';\n\n// Heavily modified version of @dnd-kit's KeyboardSensor, to add support for \"UAP\"-button pointer interactions.\n// https://github.com/clauderic/dnd-kit/blob/master/packages/core/src/sensors/keyboard/KeyboardSensor.ts\n\nexport type KeyboardAndUAPCoordinateGetter = (\n event: Event,\n args: {\n active: UniqueIdentifier;\n currentCoordinates: Coordinates;\n context: SensorContext;\n }\n) => Coordinates | void;\n\ntype KeyboardAndUAPSensorOptions = KeyboardSensorOptions & {\n coordinateGetter: KeyboardAndUAPCoordinateGetter;\n onActivation?({ event }: { event: KeyboardEvent | MouseEvent }): void;\n};\n\nexport class KeyboardAndUAPSensor implements SensorInstance {\n public autoScrollEnabled = false;\n private referenceCoordinates: Coordinates | undefined;\n private listeners: Listeners;\n private windowListeners: Listeners;\n\n constructor(private props: SensorProps<KeyboardAndUAPSensorOptions>) {\n const {\n event: { target },\n } = props;\n\n this.props = props;\n this.listeners = new Listeners(getOwnerDocument(target));\n this.windowListeners = new Listeners(getWindow(target));\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleCustomDirectionEvent = this.handleCustomDirectionEvent.bind(this);\n this.handleEnd = this.handleEnd.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n\n this.attach();\n }\n\n private attach() {\n this.handleStart();\n\n this.windowListeners.add(EventName.Resize, this.handleCancel);\n this.windowListeners.add(EventName.VisibilityChange, this.handleCancel);\n\n this.props.event.target?.addEventListener(EventName.Blur, this.handleEnd);\n\n setTimeout(() => {\n this.listeners.add(EventName.Keydown, this.handleKeyDown);\n this.listeners.add(EventName.CustomDown, this.handleCustomDirectionEvent);\n this.listeners.add(EventName.CustomUp, this.handleCustomDirectionEvent);\n });\n }\n\n private handleStart() {\n const { activeNode, onStart } = this.props;\n const node = activeNode.node.current;\n\n if (node) {\n scrollElementIntoView(node);\n }\n\n onStart(defaultCoordinates);\n }\n\n private handleKeyDown(event: Event) {\n if (isKeyboardEvent(event)) {\n const { options } = this.props;\n const { keyboardCodes = defaultKeyboardCodes } = options;\n const { code } = event;\n\n if (keyboardCodes.end.indexOf(code) !== -1) {\n this.handleEnd(event);\n return;\n }\n\n if (keyboardCodes.cancel.indexOf(code) !== -1) {\n this.handleCancel(event);\n return;\n }\n\n switch (code) {\n case KeyboardCode.Up:\n this.handleDirectionalMove(event, 'up');\n break;\n case KeyboardCode.Down:\n this.handleDirectionalMove(event, 'down');\n break;\n }\n }\n }\n\n private handleCustomDirectionEvent(event: Event) {\n switch (event.type) {\n case EventName.CustomUp:\n this.handleDirectionalMove(event, 'up');\n break;\n case EventName.CustomDown:\n this.handleDirectionalMove(event, 'down');\n break;\n }\n }\n\n private handleDirectionalMove(event: Event, direction: 'up' | 'down') {\n const { active, context, options } = this.props;\n const { coordinateGetter } = options;\n const { collisionRect } = context.current;\n const currentCoordinates = collisionRect ? { x: collisionRect.left, y: collisionRect.top } : defaultCoordinates;\n\n if (!this.referenceCoordinates) {\n this.referenceCoordinates = currentCoordinates;\n }\n\n const newCoordinates = coordinateGetter(event, {\n active,\n context: context.current,\n currentCoordinates,\n });\n\n if (newCoordinates) {\n const { scrollableAncestors } = context.current;\n\n const scrolled = applyScroll({ currentCoordinates, direction, newCoordinates, scrollableAncestors });\n\n if (!scrolled) {\n this.handleMove(event, getCoordinatesDelta(newCoordinates, this.referenceCoordinates));\n }\n }\n }\n\n private handleMove(event: Event, coordinates: Coordinates) {\n const { onMove } = this.props;\n\n event.preventDefault();\n onMove(coordinates);\n }\n\n private handleEnd(event: Event) {\n const { onEnd } = this.props;\n\n event.preventDefault();\n this.detach();\n onEnd();\n }\n\n private handleCancel(event: Event) {\n const { onCancel } = this.props;\n\n if (event.type !== EventName.Blur) {\n event.preventDefault();\n }\n this.detach();\n onCancel();\n }\n\n private detach() {\n this.props.event.target?.removeEventListener(EventName.Blur, this.handleCancel);\n\n this.listeners.removeAll();\n this.windowListeners.removeAll();\n }\n\n static activators: Activators<KeyboardAndUAPSensorOptions> = [\n {\n eventName: 'onKeyDown',\n handler: (event: React.KeyboardEvent, { keyboardCodes = defaultKeyboardCodes, onActivation }, { active }) => {\n const { code } = event.nativeEvent;\n\n if (keyboardCodes.start.indexOf(code) !== -1) {\n const activator = active.activatorNode.current;\n\n if (activator && event.target !== activator) {\n return false;\n }\n\n event.preventDefault();\n\n onActivation?.({ event: event.nativeEvent });\n\n return true;\n }\n\n return false;\n },\n },\n {\n eventName: 'onClick',\n handler: ({ nativeEvent: event }: React.MouseEvent, { onActivation }) => {\n if (event.button !== 0) {\n return false;\n }\n\n onActivation?.({ event });\n\n return true;\n },\n },\n ];\n}\n"]}
@@ -3,4 +3,6 @@ export declare enum EventName {
3
3
  Keydown = "keydown",
4
4
  Resize = "resize",
5
5
  VisibilityChange = "visibilitychange",
6
+ CustomDown = "custom-movedown",
7
+ CustomUp = "custom-moveup",
6
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../../../../../src/internal/components/sortable-area/keyboard-sensor/utilities/events.ts"],"names":[],"mappings":"AAEA,oBAAY,SAAS;IACnB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,gBAAgB,qBAAqB;CACtC"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../../../../../src/internal/components/sortable-area/keyboard-sensor/utilities/events.ts"],"names":[],"mappings":"AAEA,oBAAY,SAAS;IACnB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,gBAAgB,qBAAqB;IACrC,UAAU,oBAAoB;IAC9B,QAAQ,kBAAkB;CAC3B"}
@@ -6,5 +6,7 @@ export var EventName;
6
6
  EventName["Keydown"] = "keydown";
7
7
  EventName["Resize"] = "resize";
8
8
  EventName["VisibilityChange"] = "visibilitychange";
9
+ EventName["CustomDown"] = "custom-movedown";
10
+ EventName["CustomUp"] = "custom-moveup";
9
11
  })(EventName || (EventName = {}));
10
12
  //# sourceMappingURL=events.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../../../../../src/internal/components/sortable-area/keyboard-sensor/utilities/events.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,MAAM,CAAN,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,0BAAa,CAAA;IACb,gCAAmB,CAAA;IACnB,8BAAiB,CAAA;IACjB,kDAAqC,CAAA;AACvC,CAAC,EALW,SAAS,KAAT,SAAS,QAKpB","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport enum EventName {\n Blur = 'blur',\n Keydown = 'keydown',\n Resize = 'resize',\n VisibilityChange = 'visibilitychange',\n}\n"]}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../../../../../src/internal/components/sortable-area/keyboard-sensor/utilities/events.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,MAAM,CAAN,IAAY,SAOX;AAPD,WAAY,SAAS;IACnB,0BAAa,CAAA;IACb,gCAAmB,CAAA;IACnB,8BAAiB,CAAA;IACjB,kDAAqC,CAAA;IACrC,2CAA8B,CAAA;IAC9B,uCAA0B,CAAA;AAC5B,CAAC,EAPW,SAAS,KAAT,SAAS,QAOpB","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport enum EventName {\n Blur = 'blur',\n Keydown = 'keydown',\n Resize = 'resize',\n VisibilityChange = 'visibilitychange',\n CustomDown = 'custom-movedown',\n CustomUp = 'custom-moveup',\n}\n"]}
@@ -6,7 +6,7 @@ export declare function applyScroll({
6
6
  scrollableAncestors
7
7
  }: {
8
8
  currentCoordinates: Coordinates;
9
- direction: string;
9
+ direction: 'up' | 'down';
10
10
  newCoordinates: Coordinates;
11
11
  scrollableAncestors: Element[];
12
12
  }): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"scroll.d.ts","sourceRoot":"","sources":["../../../../../../../src/internal/components/sortable-area/keyboard-sensor/utilities/scroll.ts"],"names":[],"mappings":"AAGA,OAAO,EAAa,WAAW,EAAmC,MAAM,oBAAoB,CAAC;AAsE7F,wBAAgB,WAAW,CAAC,EAC1B,kBAAkB,EAClB,SAAS,EACT,cAAc,EACd,mBAAmB,GACpB,EAAE;IACD,kBAAkB,EAAE,WAAW,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,WAAW,CAAC;IAC5B,mBAAmB,EAAE,OAAO,EAAE,CAAC;CAChC,WA0CA"}
1
+ {"version":3,"file":"scroll.d.ts","sourceRoot":"","sources":["../../../../../../../src/internal/components/sortable-area/keyboard-sensor/utilities/scroll.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,WAAW,EAAmC,MAAM,oBAAoB,CAAC;AAsE7F,wBAAgB,WAAW,CAAC,EAC1B,kBAAkB,EAClB,SAAS,EACT,cAAc,EACd,mBAAmB,GACpB,EAAE;IACD,kBAAkB,EAAE,WAAW,CAAC;IAChC,SAAS,EAAE,IAAI,GAAG,MAAM,CAAC;IACzB,cAAc,EAAE,WAAW,CAAC;IAC5B,mBAAmB,EAAE,OAAO,EAAE,CAAC;CAChC,WAsCA"}
@@ -1,6 +1,5 @@
1
1
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
- import { KeyboardCode } from '@dnd-kit/core';
4
3
  import { canUseDOM, subtract as getCoordinatesDelta } from '@dnd-kit/utilities';
5
4
  function isDocumentScrollingElement(element) {
6
5
  if (!canUseDOM || !element) {
@@ -67,17 +66,13 @@ export function applyScroll({ currentCoordinates, direction, newCoordinates, scr
67
66
  const { isTop, isBottom, maxScroll, minScroll } = getScrollPosition(scrollContainer);
68
67
  const scrollElementRect = getScrollElementRect(scrollContainer);
69
68
  const clampedCoordinates = {
70
- y: Math.min(direction === KeyboardCode.Down
71
- ? scrollElementRect.bottom - scrollElementRect.height / 2
72
- : scrollElementRect.bottom, Math.max(direction === KeyboardCode.Down
73
- ? scrollElementRect.top
74
- : scrollElementRect.top + scrollElementRect.height / 2, newCoordinates.y)),
69
+ y: Math.min(direction === 'down' ? scrollElementRect.bottom - scrollElementRect.height / 2 : scrollElementRect.bottom, Math.max(direction === 'down' ? scrollElementRect.top : scrollElementRect.top + scrollElementRect.height / 2, newCoordinates.y)),
75
70
  };
76
- const canScrollY = (direction === KeyboardCode.Down && !isBottom) || (direction === KeyboardCode.Up && !isTop);
71
+ const canScrollY = (direction === 'down' && !isBottom) || (direction === 'up' && !isTop);
77
72
  if (canScrollY && clampedCoordinates.y !== newCoordinates.y) {
78
73
  const newScrollCoordinates = scrollContainer.scrollTop + coordinatesDelta.y;
79
- const canScrollToNewCoordinates = (direction === KeyboardCode.Down && newScrollCoordinates <= maxScroll.y) ||
80
- (direction === KeyboardCode.Up && newScrollCoordinates >= minScroll.y);
74
+ const canScrollToNewCoordinates = (direction === 'down' && newScrollCoordinates <= maxScroll.y) ||
75
+ (direction === 'up' && newScrollCoordinates >= minScroll.y);
81
76
  if (canScrollToNewCoordinates) {
82
77
  // We don't need to update coordinates, the scroll adjustment alone will trigger
83
78
  // logic to auto-detect the new container we are over
@@ -1 +1 @@
1
- {"version":3,"file":"scroll.js","sourceRoot":"","sources":["../../../../../../../src/internal/components/sortable-area/keyboard-sensor/utilities/scroll.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { KeyboardCode } from '@dnd-kit/core';\nimport { canUseDOM, Coordinates, subtract as getCoordinatesDelta } from '@dnd-kit/utilities';\n\nfunction isDocumentScrollingElement(element: Element | null) {\n if (!canUseDOM || !element) {\n return false;\n }\n\n return element === document.scrollingElement;\n}\n\nfunction getScrollPosition(scrollingContainer: Element) {\n const minScroll = {\n x: 0,\n y: 0,\n };\n const dimensions = isDocumentScrollingElement(scrollingContainer)\n ? {\n height: window.innerHeight,\n width: window.innerWidth,\n }\n : {\n height: scrollingContainer.clientHeight,\n width: scrollingContainer.clientWidth,\n };\n const maxScroll = {\n x: scrollingContainer.scrollWidth - dimensions.width,\n y: scrollingContainer.scrollHeight - dimensions.height,\n };\n\n const isTop = scrollingContainer.scrollTop <= minScroll.y;\n const isLeft = scrollingContainer.scrollLeft <= minScroll.x;\n const isBottom = scrollingContainer.scrollTop >= maxScroll.y;\n const isRight = scrollingContainer.scrollLeft >= maxScroll.x;\n\n return {\n isTop,\n isLeft,\n isBottom,\n isRight,\n maxScroll,\n minScroll,\n };\n}\n\nfunction getScrollElementRect(element: Element) {\n if (element === document.scrollingElement) {\n const { innerWidth, innerHeight } = window;\n\n return {\n top: 0,\n left: 0,\n right: innerWidth,\n bottom: innerHeight,\n width: innerWidth,\n height: innerHeight,\n };\n }\n\n const { top, left, right, bottom } = element.getBoundingClientRect();\n\n return {\n top,\n left,\n right,\n bottom,\n width: element.clientWidth,\n height: element.clientHeight,\n };\n}\n\nexport function applyScroll({\n currentCoordinates,\n direction,\n newCoordinates,\n scrollableAncestors,\n}: {\n currentCoordinates: Coordinates;\n direction: string;\n newCoordinates: Coordinates;\n scrollableAncestors: Element[];\n}) {\n for (const scrollContainer of scrollableAncestors) {\n const coordinatesDelta = getCoordinatesDelta(newCoordinates, currentCoordinates);\n const { isTop, isBottom, maxScroll, minScroll } = getScrollPosition(scrollContainer);\n const scrollElementRect = getScrollElementRect(scrollContainer);\n\n const clampedCoordinates = {\n y: Math.min(\n direction === KeyboardCode.Down\n ? scrollElementRect.bottom - scrollElementRect.height / 2\n : scrollElementRect.bottom,\n Math.max(\n direction === KeyboardCode.Down\n ? scrollElementRect.top\n : scrollElementRect.top + scrollElementRect.height / 2,\n newCoordinates.y\n )\n ),\n };\n\n const canScrollY = (direction === KeyboardCode.Down && !isBottom) || (direction === KeyboardCode.Up && !isTop);\n\n if (canScrollY && clampedCoordinates.y !== newCoordinates.y) {\n const newScrollCoordinates = scrollContainer.scrollTop + coordinatesDelta.y;\n const canScrollToNewCoordinates =\n (direction === KeyboardCode.Down && newScrollCoordinates <= maxScroll.y) ||\n (direction === KeyboardCode.Up && newScrollCoordinates >= minScroll.y);\n\n if (canScrollToNewCoordinates) {\n // We don't need to update coordinates, the scroll adjustment alone will trigger\n // logic to auto-detect the new container we are over\n scrollContainer.scrollTo({\n top: newScrollCoordinates,\n behavior: 'smooth',\n });\n return true;\n }\n\n break;\n }\n }\n return false;\n}\n"]}
1
+ {"version":3,"file":"scroll.js","sourceRoot":"","sources":["../../../../../../../src/internal/components/sortable-area/keyboard-sensor/utilities/scroll.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { canUseDOM, Coordinates, subtract as getCoordinatesDelta } from '@dnd-kit/utilities';\n\nfunction isDocumentScrollingElement(element: Element | null) {\n if (!canUseDOM || !element) {\n return false;\n }\n\n return element === document.scrollingElement;\n}\n\nfunction getScrollPosition(scrollingContainer: Element) {\n const minScroll = {\n x: 0,\n y: 0,\n };\n const dimensions = isDocumentScrollingElement(scrollingContainer)\n ? {\n height: window.innerHeight,\n width: window.innerWidth,\n }\n : {\n height: scrollingContainer.clientHeight,\n width: scrollingContainer.clientWidth,\n };\n const maxScroll = {\n x: scrollingContainer.scrollWidth - dimensions.width,\n y: scrollingContainer.scrollHeight - dimensions.height,\n };\n\n const isTop = scrollingContainer.scrollTop <= minScroll.y;\n const isLeft = scrollingContainer.scrollLeft <= minScroll.x;\n const isBottom = scrollingContainer.scrollTop >= maxScroll.y;\n const isRight = scrollingContainer.scrollLeft >= maxScroll.x;\n\n return {\n isTop,\n isLeft,\n isBottom,\n isRight,\n maxScroll,\n minScroll,\n };\n}\n\nfunction getScrollElementRect(element: Element) {\n if (element === document.scrollingElement) {\n const { innerWidth, innerHeight } = window;\n\n return {\n top: 0,\n left: 0,\n right: innerWidth,\n bottom: innerHeight,\n width: innerWidth,\n height: innerHeight,\n };\n }\n\n const { top, left, right, bottom } = element.getBoundingClientRect();\n\n return {\n top,\n left,\n right,\n bottom,\n width: element.clientWidth,\n height: element.clientHeight,\n };\n}\n\nexport function applyScroll({\n currentCoordinates,\n direction,\n newCoordinates,\n scrollableAncestors,\n}: {\n currentCoordinates: Coordinates;\n direction: 'up' | 'down';\n newCoordinates: Coordinates;\n scrollableAncestors: Element[];\n}) {\n for (const scrollContainer of scrollableAncestors) {\n const coordinatesDelta = getCoordinatesDelta(newCoordinates, currentCoordinates);\n const { isTop, isBottom, maxScroll, minScroll } = getScrollPosition(scrollContainer);\n const scrollElementRect = getScrollElementRect(scrollContainer);\n\n const clampedCoordinates = {\n y: Math.min(\n direction === 'down' ? scrollElementRect.bottom - scrollElementRect.height / 2 : scrollElementRect.bottom,\n Math.max(\n direction === 'down' ? scrollElementRect.top : scrollElementRect.top + scrollElementRect.height / 2,\n newCoordinates.y\n )\n ),\n };\n\n const canScrollY = (direction === 'down' && !isBottom) || (direction === 'up' && !isTop);\n\n if (canScrollY && clampedCoordinates.y !== newCoordinates.y) {\n const newScrollCoordinates = scrollContainer.scrollTop + coordinatesDelta.y;\n const canScrollToNewCoordinates =\n (direction === 'down' && newScrollCoordinates <= maxScroll.y) ||\n (direction === 'up' && newScrollCoordinates >= minScroll.y);\n\n if (canScrollToNewCoordinates) {\n // We don't need to update coordinates, the scroll adjustment alone will trigger\n // logic to auto-detect the new container we are over\n scrollContainer.scrollTo({\n top: newScrollCoordinates,\n behavior: 'smooth',\n });\n return true;\n }\n\n break;\n }\n }\n return false;\n}\n"]}
@@ -1,13 +1,13 @@
1
1
 
2
2
  import './styles.scoped.css';
3
3
  export default {
4
- "drag-overlay": "awsui_drag-overlay_1ksmw_ajj2q_145",
5
- "drag-overlay-item": "awsui_drag-overlay-item_1ksmw_ajj2q_149",
6
- "drag-overlay-container": "awsui_drag-overlay-container_1ksmw_ajj2q_176",
7
- "active": "awsui_active_1ksmw_ajj2q_204",
8
- "placeholder": "awsui_placeholder_1ksmw_ajj2q_214",
9
- "placeholder-item": "awsui_placeholder-item_1ksmw_ajj2q_223",
10
- "placeholder-container": "awsui_placeholder-container_1ksmw_ajj2q_229",
11
- "sorting": "awsui_sorting_1ksmw_ajj2q_236"
4
+ "drag-overlay": "awsui_drag-overlay_1ksmw_1wocz_145",
5
+ "drag-overlay-item": "awsui_drag-overlay-item_1ksmw_1wocz_149",
6
+ "drag-overlay-container": "awsui_drag-overlay-container_1ksmw_1wocz_174",
7
+ "active": "awsui_active_1ksmw_1wocz_200",
8
+ "placeholder": "awsui_placeholder_1ksmw_1wocz_210",
9
+ "placeholder-item": "awsui_placeholder-item_1ksmw_1wocz_219",
10
+ "placeholder-container": "awsui_placeholder-container_1ksmw_1wocz_225",
11
+ "sorting": "awsui_sorting_1ksmw_1wocz_232"
12
12
  };
13
13
 
@@ -142,24 +142,22 @@
142
142
  */
143
143
  /* Style used for links in slots/components that are text heavy, to help links stand out among
144
144
  surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F73#description */
145
- .awsui_drag-overlay_1ksmw_ajj2q_145:not(#\9) {
145
+ .awsui_drag-overlay_1ksmw_1wocz_145:not(#\9) {
146
146
  box-shadow: var(--shadow-container-active-ypjjoc, 0px 1px 1px 1px #e9ebed, 0px 6px 36px rgba(0, 7, 22, 0.1019607843));
147
147
  background-color: var(--color-background-container-content-6u8rvp, #ffffff);
148
148
  }
149
- .awsui_drag-overlay-item_1ksmw_ajj2q_149:not(#\9) {
149
+ .awsui_drag-overlay-item_1ksmw_1wocz_149:not(#\9) {
150
150
  border-start-start-radius: var(--border-radius-item-iwaia5, 8px);
151
151
  border-start-end-radius: var(--border-radius-item-iwaia5, 8px);
152
152
  border-end-start-radius: var(--border-radius-item-iwaia5, 8px);
153
153
  border-end-end-radius: var(--border-radius-item-iwaia5, 8px);
154
- }
155
- body[data-awsui-focus-visible=true] .awsui_drag-overlay-item_1ksmw_ajj2q_149:not(#\9) {
156
154
  position: relative;
157
155
  }
158
- body[data-awsui-focus-visible=true] .awsui_drag-overlay-item_1ksmw_ajj2q_149:not(#\9) {
156
+ .awsui_drag-overlay-item_1ksmw_1wocz_149:not(#\9) {
159
157
  outline: 2px dotted transparent;
160
158
  outline-offset: calc(0px - 1px);
161
159
  }
162
- body[data-awsui-focus-visible=true] .awsui_drag-overlay-item_1ksmw_ajj2q_149:not(#\9)::before {
160
+ .awsui_drag-overlay-item_1ksmw_1wocz_149:not(#\9)::before {
163
161
  content: " ";
164
162
  display: block;
165
163
  position: absolute;
@@ -173,20 +171,18 @@ body[data-awsui-focus-visible=true] .awsui_drag-overlay-item_1ksmw_ajj2q_149:not
173
171
  border-end-end-radius: var(--border-radius-item-iwaia5, 8px);
174
172
  box-shadow: 0 0 0 2px var(--color-border-item-focused-uk47pl, #006ce0);
175
173
  }
176
- .awsui_drag-overlay-container_1ksmw_ajj2q_176:not(#\9) {
174
+ .awsui_drag-overlay-container_1ksmw_1wocz_174:not(#\9) {
177
175
  border-start-start-radius: var(--border-radius-container-nsfwmm, 16px);
178
176
  border-start-end-radius: var(--border-radius-container-nsfwmm, 16px);
179
177
  border-end-start-radius: var(--border-radius-container-nsfwmm, 16px);
180
178
  border-end-end-radius: var(--border-radius-container-nsfwmm, 16px);
181
- }
182
- body[data-awsui-focus-visible=true] .awsui_drag-overlay-container_1ksmw_ajj2q_176:not(#\9) {
183
179
  position: relative;
184
180
  }
185
- body[data-awsui-focus-visible=true] .awsui_drag-overlay-container_1ksmw_ajj2q_176:not(#\9) {
181
+ .awsui_drag-overlay-container_1ksmw_1wocz_174:not(#\9) {
186
182
  outline: 2px dotted transparent;
187
183
  outline-offset: calc(0px - 1px);
188
184
  }
189
- body[data-awsui-focus-visible=true] .awsui_drag-overlay-container_1ksmw_ajj2q_176:not(#\9)::before {
185
+ .awsui_drag-overlay-container_1ksmw_1wocz_174:not(#\9)::before {
190
186
  content: " ";
191
187
  display: block;
192
188
  position: absolute;
@@ -201,7 +197,7 @@ body[data-awsui-focus-visible=true] .awsui_drag-overlay-container_1ksmw_ajj2q_17
201
197
  box-shadow: 0 0 0 2px var(--color-border-item-focused-uk47pl, #006ce0);
202
198
  }
203
199
 
204
- .awsui_active_1ksmw_ajj2q_204:not(#\9) {
200
+ .awsui_active_1ksmw_1wocz_200:not(#\9) {
205
201
  font-size: var(--font-size-body-m-a7nh2n, 14px);
206
202
  line-height: var(--line-height-body-m-2mh3ke, 20px);
207
203
  color: var(--color-text-body-default-vvtq8u, #0f141a);
@@ -211,38 +207,38 @@ body[data-awsui-focus-visible=true] .awsui_drag-overlay-container_1ksmw_ajj2q_17
211
207
  -moz-osx-font-smoothing: auto;
212
208
  }
213
209
 
214
- .awsui_placeholder_1ksmw_ajj2q_214:not(#\9) {
210
+ .awsui_placeholder_1ksmw_1wocz_210:not(#\9) {
215
211
  position: relative;
216
212
  }
217
- .awsui_placeholder_1ksmw_ajj2q_214:not(#\9):after {
213
+ .awsui_placeholder_1ksmw_1wocz_210:not(#\9):after {
218
214
  content: " ";
219
215
  position: absolute;
220
216
  inset: 0;
221
217
  background: var(--color-drag-placeholder-hover-qwadna, #d1f1ff);
222
218
  }
223
- .awsui_placeholder-item_1ksmw_ajj2q_223:not(#\9):after {
219
+ .awsui_placeholder-item_1ksmw_1wocz_219:not(#\9):after {
224
220
  border-start-start-radius: var(--border-radius-item-iwaia5, 8px);
225
221
  border-start-end-radius: var(--border-radius-item-iwaia5, 8px);
226
222
  border-end-start-radius: var(--border-radius-item-iwaia5, 8px);
227
223
  border-end-end-radius: var(--border-radius-item-iwaia5, 8px);
228
224
  }
229
- .awsui_placeholder-container_1ksmw_ajj2q_229:not(#\9):after {
225
+ .awsui_placeholder-container_1ksmw_1wocz_225:not(#\9):after {
230
226
  border-start-start-radius: var(--border-radius-container-nsfwmm, 16px);
231
227
  border-start-end-radius: var(--border-radius-container-nsfwmm, 16px);
232
228
  border-end-start-radius: var(--border-radius-container-nsfwmm, 16px);
233
229
  border-end-end-radius: var(--border-radius-container-nsfwmm, 16px);
234
230
  }
235
231
 
236
- .awsui_sorting_1ksmw_ajj2q_236:not(#\9) {
232
+ .awsui_sorting_1ksmw_1wocz_232:not(#\9) {
237
233
  transition: transform var(--motion-duration-transition-quick-mcm2y0, 90ms) var(--motion-easing-transition-quick-qxak3i, linear);
238
234
  }
239
235
  @media (prefers-reduced-motion: reduce) {
240
- .awsui_sorting_1ksmw_ajj2q_236:not(#\9) {
236
+ .awsui_sorting_1ksmw_1wocz_232:not(#\9) {
241
237
  animation: none;
242
238
  transition: none;
243
239
  }
244
240
  }
245
- .awsui-motion-disabled .awsui_sorting_1ksmw_ajj2q_236:not(#\9), .awsui-mode-entering .awsui_sorting_1ksmw_ajj2q_236:not(#\9) {
241
+ .awsui-motion-disabled .awsui_sorting_1ksmw_1wocz_232:not(#\9), .awsui-mode-entering .awsui_sorting_1ksmw_1wocz_232:not(#\9) {
246
242
  animation: none;
247
243
  transition: none;
248
244
  }
@@ -2,13 +2,13 @@
2
2
  // es-module interop with Babel and Typescript
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  module.exports.default = {
5
- "drag-overlay": "awsui_drag-overlay_1ksmw_ajj2q_145",
6
- "drag-overlay-item": "awsui_drag-overlay-item_1ksmw_ajj2q_149",
7
- "drag-overlay-container": "awsui_drag-overlay-container_1ksmw_ajj2q_176",
8
- "active": "awsui_active_1ksmw_ajj2q_204",
9
- "placeholder": "awsui_placeholder_1ksmw_ajj2q_214",
10
- "placeholder-item": "awsui_placeholder-item_1ksmw_ajj2q_223",
11
- "placeholder-container": "awsui_placeholder-container_1ksmw_ajj2q_229",
12
- "sorting": "awsui_sorting_1ksmw_ajj2q_236"
5
+ "drag-overlay": "awsui_drag-overlay_1ksmw_1wocz_145",
6
+ "drag-overlay-item": "awsui_drag-overlay-item_1ksmw_1wocz_149",
7
+ "drag-overlay-container": "awsui_drag-overlay-container_1ksmw_1wocz_174",
8
+ "active": "awsui_active_1ksmw_1wocz_200",
9
+ "placeholder": "awsui_placeholder_1ksmw_1wocz_210",
10
+ "placeholder-item": "awsui_placeholder-item_1ksmw_1wocz_219",
11
+ "placeholder-container": "awsui_placeholder-container_1ksmw_1wocz_225",
12
+ "sorting": "awsui_sorting_1ksmw_1wocz_232"
13
13
  };
14
14
 
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
- import { CollisionDetection, KeyboardCoordinateGetter, UniqueIdentifier } from '@dnd-kit/core';
2
+ import { CollisionDetection, UniqueIdentifier } from '@dnd-kit/core';
3
3
  import { SortableAreaProps } from './interfaces';
4
+ import { KeyboardAndUAPCoordinateGetter } from './keyboard-sensor';
4
5
  export default function useDragAndDropReorder<Item>({
5
6
  items,
6
7
  itemDefinition
@@ -11,7 +12,8 @@ export default function useDragAndDropReorder<Item>({
11
12
  activeItemId: UniqueIdentifier | null;
12
13
  setActiveItemId: (id: UniqueIdentifier | null) => void;
13
14
  collisionDetection: CollisionDetection;
14
- coordinateGetter: KeyboardCoordinateGetter;
15
+ coordinateGetter: KeyboardAndUAPCoordinateGetter;
15
16
  handleKeyDown: (event: React.KeyboardEvent) => void;
16
17
  sensors: import("@dnd-kit/core").SensorDescriptor<import("@dnd-kit/core").SensorOptions>[];
18
+ isKeyboard: React.MutableRefObject<boolean>;
17
19
  };
@@ -1 +1 @@
1
- {"version":3,"file":"use-drag-and-drop-reorder.d.ts","sourceRoot":"","sources":["../../../../../src/internal/components/sortable-area/use-drag-and-drop-reorder.ts"],"names":[],"mappings":"AAEA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAChD,OAAO,EAGL,kBAAkB,EAElB,wBAAwB,EAExB,gBAAgB,EAGjB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AA8BjD,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAAC,IAAI,EAAE,EAClD,KAAK,EACL,cAAc,GACf,EAAE;IACD,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;IACvB,cAAc,EAAE,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;CACxD;;0BAK4B,gBAAgB,GAAG,IAAI;;;2BAQpB,mBAAmB;;EAwGlD"}
1
+ {"version":3,"file":"use-drag-and-drop-reorder.d.ts","sourceRoot":"","sources":["../../../../../src/internal/components/sortable-area/use-drag-and-drop-reorder.ts"],"names":[],"mappings":"AAEA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAChD,OAAO,EAGL,kBAAkB,EAGlB,gBAAgB,EAGjB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,8BAA8B,EAAwB,MAAM,mBAAmB,CAAC;AAoBzF,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAAC,IAAI,EAAE,EAClD,KAAK,EACL,cAAc,GACf,EAAE;IACD,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;IACvB,cAAc,EAAE,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;CACxD;;0BAK4B,gBAAgB,GAAG,IAAI;;;2BAQpB,mBAAmB;;;EA6GlD"}
@@ -3,17 +3,8 @@
3
3
  import { useRef, useState } from 'react';
4
4
  import { closestCenter, PointerSensor, useSensor, useSensors, } from '@dnd-kit/core';
5
5
  import { hasSortableData } from '@dnd-kit/sortable';
6
- import { KeyboardSensor } from './keyboard-sensor';
7
- var KeyboardCode;
8
- (function (KeyboardCode) {
9
- KeyboardCode["Space"] = "Space";
10
- KeyboardCode["Down"] = "ArrowDown";
11
- KeyboardCode["Right"] = "ArrowRight";
12
- KeyboardCode["Left"] = "ArrowLeft";
13
- KeyboardCode["Up"] = "ArrowUp";
14
- KeyboardCode["Esc"] = "Escape";
15
- KeyboardCode["Enter"] = "Enter";
16
- })(KeyboardCode || (KeyboardCode = {}));
6
+ import { KeyboardAndUAPSensor } from './keyboard-sensor';
7
+ import { EventName } from './keyboard-sensor/utilities/events';
17
8
  // A custom collision detection algorithm is used when using a keyboard to
18
9
  // work around an unexpected behavior when reordering items of variable height
19
10
  // with the keyboard.
@@ -41,10 +32,10 @@ export default function useDragAndDropReorder({ items, itemDefinition, }) {
41
32
  const handleKeyDown = (event) => {
42
33
  if (isKeyboard.current && activeItemId) {
43
34
  const currentTargetIndex = items.findIndex(item => itemDefinition.id(item) === activeItemId) + positionDelta.current;
44
- if (event.key === 'ArrowDown' && currentTargetIndex < items.length - 1) {
35
+ if ((event.key === 'ArrowDown' || event.type === EventName.CustomDown) && currentTargetIndex < items.length - 1) {
45
36
  positionDelta.current += 1;
46
37
  }
47
- else if (event.key === 'ArrowUp' && currentTargetIndex > 0) {
38
+ else if ((event.key === 'ArrowUp' || event.type === EventName.CustomUp) && currentTargetIndex > 0) {
48
39
  positionDelta.current -= 1;
49
40
  }
50
41
  }
@@ -78,36 +69,40 @@ export default function useDragAndDropReorder({ items, itemDefinition, }) {
78
69
  }
79
70
  };
80
71
  const coordinateGetter = (event, { context: { active, collisionRect, droppableRects, droppableContainers } }) => {
81
- if (event.code === KeyboardCode.Up || event.code === KeyboardCode.Down) {
82
- event.preventDefault();
83
- if (!active || !collisionRect) {
84
- return;
85
- }
86
- const closestId = getClosestId(active);
87
- if (closestId !== null) {
88
- const activeDroppable = droppableContainers.get(active.id);
89
- const newDroppable = droppableContainers.get(closestId);
90
- const newRect = newDroppable ? droppableRects.get(newDroppable.id) : null;
91
- const newNode = newDroppable === null || newDroppable === void 0 ? void 0 : newDroppable.node.current;
92
- if (newNode && newRect && activeDroppable && newDroppable) {
93
- const isAfterActive = isAfter(activeDroppable, newDroppable);
94
- const offset = {
95
- x: isAfterActive ? collisionRect.width - newRect.width : 0,
96
- y: isAfterActive ? collisionRect.height - newRect.height : 0,
97
- };
98
- const rectCoordinates = {
99
- x: newRect.left,
100
- y: newRect.top,
101
- };
102
- return {
103
- x: rectCoordinates.x - offset.x,
104
- y: rectCoordinates.y - offset.y,
105
- };
106
- }
72
+ event.preventDefault();
73
+ if (!active || !collisionRect) {
74
+ return;
75
+ }
76
+ const closestId = getClosestId(active);
77
+ if (closestId !== null) {
78
+ const activeDroppable = droppableContainers.get(active.id);
79
+ const newDroppable = droppableContainers.get(closestId);
80
+ const newRect = newDroppable ? droppableRects.get(newDroppable.id) : null;
81
+ const newNode = newDroppable === null || newDroppable === void 0 ? void 0 : newDroppable.node.current;
82
+ if (newNode && newRect && activeDroppable && newDroppable) {
83
+ const isAfterActive = isAfter(activeDroppable, newDroppable);
84
+ const offset = {
85
+ x: isAfterActive ? collisionRect.width - newRect.width : 0,
86
+ y: isAfterActive ? collisionRect.height - newRect.height : 0,
87
+ };
88
+ const rectCoordinates = {
89
+ x: newRect.left,
90
+ y: newRect.top,
91
+ };
92
+ return {
93
+ x: rectCoordinates.x - offset.x,
94
+ y: rectCoordinates.y - offset.y,
95
+ };
107
96
  }
108
97
  }
109
98
  };
110
- const sensors = useSensors(useSensor(PointerSensor), useSensor(KeyboardSensor, {
99
+ const sensors = useSensors(useSensor(PointerSensor, {
100
+ activationConstraint: {
101
+ // allow KeyboardSensor (click to display UAP) to take priority
102
+ // if handle is clicked without movement
103
+ distance: 1,
104
+ },
105
+ }), useSensor(KeyboardAndUAPSensor, {
111
106
  coordinateGetter,
112
107
  onActivation: () => {
113
108
  isKeyboard.current = true;
@@ -120,6 +115,7 @@ export default function useDragAndDropReorder({ items, itemDefinition, }) {
120
115
  coordinateGetter,
121
116
  handleKeyDown,
122
117
  sensors,
118
+ isKeyboard,
123
119
  };
124
120
  }
125
121
  function isAfter(a, b) {