@cloudscape-design/components 3.0.1111 → 3.0.1113
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app-layout/visual-refresh-toolbar/drawer/global-ai-drawer.d.ts +1 -1
- package/app-layout/visual-refresh-toolbar/drawer/global-ai-drawer.d.ts.map +1 -1
- package/app-layout/visual-refresh-toolbar/drawer/global-ai-drawer.js.map +1 -1
- package/app-layout/visual-refresh-toolbar/state/use-ai-drawer.d.ts +34 -0
- package/app-layout/visual-refresh-toolbar/state/use-ai-drawer.d.ts.map +1 -0
- package/app-layout/visual-refresh-toolbar/state/use-ai-drawer.js +87 -0
- package/app-layout/visual-refresh-toolbar/state/use-ai-drawer.js.map +1 -0
- package/app-layout/visual-refresh-toolbar/state/use-app-layout.d.ts.map +1 -1
- package/app-layout/visual-refresh-toolbar/state/use-app-layout.js +4 -3
- package/app-layout/visual-refresh-toolbar/state/use-app-layout.js.map +1 -1
- package/app-layout/visual-refresh-toolbar/state/use-widget-messages.d.ts +2 -0
- package/app-layout/visual-refresh-toolbar/state/use-widget-messages.d.ts.map +1 -0
- package/app-layout/visual-refresh-toolbar/state/use-widget-messages.js +18 -0
- package/app-layout/visual-refresh-toolbar/state/use-widget-messages.js.map +1 -0
- package/box/interfaces.d.ts +3 -1
- package/box/interfaces.d.ts.map +1 -1
- package/box/interfaces.js.map +1 -1
- package/box/internal.js +3 -0
- package/box/internal.js.map +1 -1
- package/box/styles.css.js +192 -191
- package/box/styles.scoped.css +250 -236
- package/box/styles.selectors.js +192 -191
- package/cards/analytics-metadata/interfaces.d.ts +31 -0
- package/cards/analytics-metadata/interfaces.d.ts.map +1 -0
- package/cards/analytics-metadata/interfaces.js +4 -0
- package/cards/analytics-metadata/interfaces.js.map +1 -0
- package/cards/analytics-metadata/styles.css.js +8 -0
- package/cards/analytics-metadata/styles.scoped.css +15 -0
- package/cards/analytics-metadata/styles.selectors.js +9 -0
- package/cards/index.d.ts.map +1 -1
- package/cards/index.js +59 -21
- package/cards/index.js.map +1 -1
- package/file-token-group/file-token.js +1 -1
- package/file-token-group/file-token.js.map +1 -1
- package/index.d.ts +1 -0
- package/index.d.ts.map +1 -1
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/internal/base-component/styles.scoped.css +9 -1
- package/internal/components/drag-handle-wrapper/direction-button.js +1 -1
- package/internal/components/drag-handle-wrapper/direction-button.js.map +1 -1
- package/internal/components/drag-handle-wrapper/index.d.ts +1 -0
- package/internal/components/drag-handle-wrapper/index.d.ts.map +1 -1
- package/internal/components/drag-handle-wrapper/index.js +26 -32
- package/internal/components/drag-handle-wrapper/index.js.map +1 -1
- package/internal/components/drag-handle-wrapper/interfaces.d.ts +1 -0
- package/internal/components/drag-handle-wrapper/interfaces.d.ts.map +1 -1
- package/internal/components/drag-handle-wrapper/interfaces.js.map +1 -1
- package/internal/components/drag-handle-wrapper/styles.css.js +20 -21
- package/internal/components/drag-handle-wrapper/styles.scoped.css +50 -39
- package/internal/components/drag-handle-wrapper/styles.selectors.js +20 -21
- package/internal/components/option/highlight-match.d.ts +4 -2
- package/internal/components/option/highlight-match.d.ts.map +1 -1
- package/internal/components/option/highlight-match.js +6 -6
- package/internal/components/option/highlight-match.js.map +1 -1
- package/internal/components/option/index.d.ts +4 -0
- package/internal/components/option/index.d.ts.map +1 -1
- package/internal/components/option/index.js +8 -6
- package/internal/components/option/index.js.map +1 -1
- package/internal/components/option/interfaces.d.ts +5 -0
- package/internal/components/option/interfaces.d.ts.map +1 -1
- package/internal/components/option/interfaces.js.map +1 -1
- package/internal/components/option/option-parts.d.ts +7 -1
- package/internal/components/option/option-parts.d.ts.map +1 -1
- package/internal/components/option/option-parts.js +7 -5
- package/internal/components/option/option-parts.js.map +1 -1
- package/internal/environment.js +2 -2
- package/internal/environment.json +2 -2
- package/internal/generated/styles/tokens.d.ts +1 -0
- package/internal/generated/styles/tokens.js +1 -0
- package/internal/generated/theming/index.cjs +31 -0
- package/internal/generated/theming/index.js +31 -0
- package/internal/manifest.json +1 -1
- package/internal/plugins/widget/core.d.ts +16 -0
- package/internal/plugins/widget/core.d.ts.map +1 -0
- package/internal/plugins/widget/{internal.js → core.js} +14 -24
- package/internal/plugins/widget/core.js.map +1 -0
- package/internal/plugins/widget/index.d.ts +11 -0
- package/internal/plugins/widget/index.d.ts.map +1 -0
- package/internal/plugins/widget/index.js +22 -0
- package/internal/plugins/widget/index.js.map +1 -0
- package/internal/plugins/widget/interfaces.d.ts +2 -1
- package/internal/plugins/widget/interfaces.d.ts.map +1 -1
- package/internal/plugins/widget/interfaces.js.map +1 -1
- package/internal/plugins/widget.d.ts +2 -1
- package/internal/plugins/widget.d.ts.map +1 -1
- package/internal/plugins/widget.js +2 -1
- package/internal/plugins/widget.js.map +1 -1
- package/package.json +2 -1
- package/select/parts/styles.css.js +19 -22
- package/select/parts/styles.scoped.css +21 -49
- package/select/parts/styles.selectors.js +19 -22
- package/select/parts/trigger.d.ts.map +1 -1
- package/select/parts/trigger.js +2 -1
- package/select/parts/trigger.js.map +1 -1
- package/table/header-cell/index.d.ts +2 -0
- package/table/header-cell/index.d.ts.map +1 -1
- package/table/header-cell/index.js +5 -2
- package/table/header-cell/index.js.map +1 -1
- package/table/interfaces.d.ts +2 -0
- package/table/interfaces.d.ts.map +1 -1
- package/table/interfaces.js.map +1 -1
- package/table/internal.d.ts.map +1 -1
- package/table/internal.js +1 -0
- package/table/internal.js.map +1 -1
- package/table/resizer/index.d.ts +3 -1
- package/table/resizer/index.d.ts.map +1 -1
- package/table/resizer/index.js +211 -78
- package/table/resizer/index.js.map +1 -1
- package/table/resizer/resizer-lookup.d.ts +2 -1
- package/table/resizer/resizer-lookup.d.ts.map +1 -1
- package/table/resizer/resizer-lookup.js +3 -2
- package/table/resizer/resizer-lookup.js.map +1 -1
- package/table/resizer/styles.css.js +12 -12
- package/table/resizer/styles.scoped.css +37 -26
- package/table/resizer/styles.selectors.js +12 -12
- package/table/thead.d.ts +1 -0
- package/table/thead.d.ts.map +1 -1
- package/table/thead.js +2 -2
- package/table/thead.js.map +1 -1
- package/test-utils/dom/file-token-group/index.js +1 -1
- package/test-utils/dom/file-token-group/index.js.map +1 -1
- package/test-utils/dom/index.d.ts +20 -0
- package/test-utils/dom/index.js +15 -1
- package/test-utils/dom/index.js.map +1 -1
- package/test-utils/dom/internal/drag-handle.js +5 -5
- package/test-utils/dom/internal/drag-handle.js.map +1 -1
- package/test-utils/dom/internal/option.d.ts +1 -0
- package/test-utils/dom/internal/option.js +13 -1
- package/test-utils/dom/internal/option.js.map +1 -1
- package/test-utils/dom/multiselect/index.d.ts +3 -3
- package/test-utils/dom/token/index.d.ts +26 -0
- package/test-utils/dom/token/index.js +45 -0
- package/test-utils/dom/token/index.js.map +1 -0
- package/test-utils/dom/token-group/index.d.ts +3 -3
- package/test-utils/dom/token-group/index.js +6 -4
- package/test-utils/dom/token-group/index.js.map +1 -1
- package/test-utils/dom/token-group/token.d.ts +1 -2
- package/test-utils/dom/token-group/token.js +8 -5
- package/test-utils/dom/token-group/token.js.map +1 -1
- package/test-utils/selectors/file-token-group/index.js +1 -1
- package/test-utils/selectors/file-token-group/index.js.map +1 -1
- package/test-utils/selectors/index.d.ts +18 -0
- package/test-utils/selectors/index.js +15 -1
- package/test-utils/selectors/index.js.map +1 -1
- package/test-utils/selectors/internal/drag-handle.js +5 -5
- package/test-utils/selectors/internal/drag-handle.js.map +1 -1
- package/test-utils/selectors/multiselect/index.d.ts +3 -3
- package/test-utils/selectors/token/index.d.ts +26 -0
- package/test-utils/selectors/token/index.js +45 -0
- package/test-utils/selectors/token/index.js.map +1 -0
- package/test-utils/selectors/token-group/index.d.ts +3 -3
- package/test-utils/selectors/token-group/index.js +6 -4
- package/test-utils/selectors/token-group/index.js.map +1 -1
- package/test-utils/selectors/token-group/token.d.ts +1 -2
- package/test-utils/selectors/token-group/token.js +8 -5
- package/test-utils/selectors/token-group/token.js.map +1 -1
- package/token/analytics-metadata/interfaces.d.ts +12 -0
- package/token/analytics-metadata/interfaces.d.ts.map +1 -0
- package/token/analytics-metadata/interfaces.js +2 -0
- package/token/analytics-metadata/interfaces.js.map +1 -0
- package/token/analytics-metadata/styles.css.js +6 -0
- package/token/analytics-metadata/styles.scoped.css +7 -0
- package/token/analytics-metadata/styles.selectors.js +7 -0
- package/{token-group → token}/dismiss-button.d.ts +3 -1
- package/token/dismiss-button.d.ts.map +1 -0
- package/{token-group → token}/dismiss-button.js +6 -3
- package/token/dismiss-button.js.map +1 -0
- package/token/index.d.ts +4 -0
- package/token/index.d.ts.map +1 -0
- package/token/index.js +19 -0
- package/token/index.js.map +1 -0
- package/token/interfaces.d.ts +60 -0
- package/token/interfaces.d.ts.map +1 -0
- package/token/interfaces.js +2 -0
- package/token/interfaces.js.map +1 -0
- package/token/internal.d.ts +26 -0
- package/token/internal.d.ts.map +1 -0
- package/token/internal.js +77 -0
- package/token/internal.js.map +1 -0
- package/token/styles.css.js +19 -0
- package/token/styles.scoped.css +357 -0
- package/token/styles.selectors.js +20 -0
- package/token/test-classes/styles.css.js +7 -0
- package/token/test-classes/styles.scoped.css +8 -0
- package/token/test-classes/styles.selectors.js +8 -0
- package/token-group/analytics-metadata/interfaces.d.ts +0 -8
- package/token-group/analytics-metadata/interfaces.d.ts.map +1 -1
- package/token-group/analytics-metadata/interfaces.js.map +1 -1
- package/token-group/internal.d.ts.map +1 -1
- package/token-group/internal.js +5 -6
- package/token-group/internal.js.map +1 -1
- package/token-group/styles.css.js +5 -8
- package/token-group/styles.scoped.css +7 -115
- package/token-group/styles.selectors.js +5 -8
- package/app-layout/utils/use-ai-drawer.d.ts +0 -34
- package/app-layout/utils/use-ai-drawer.d.ts.map +0 -1
- package/app-layout/utils/use-ai-drawer.js +0 -111
- package/app-layout/utils/use-ai-drawer.js.map +0 -1
- package/internal/plugins/widget/internal.d.ts +0 -24
- package/internal/plugins/widget/internal.d.ts.map +0 -1
- package/internal/plugins/widget/internal.js.map +0 -1
- package/token-group/dismiss-button.d.ts.map +0 -1
- package/token-group/dismiss-button.js.map +0 -1
- package/token-group/token.d.ts +0 -20
- package/token-group/token.d.ts.map +0 -1
- package/token-group/token.js +0 -17
- package/token-group/token.js.map +0 -1
|
@@ -3,16 +3,16 @@
|
|
|
3
3
|
import React, { useEffect, useRef, useState } from 'react';
|
|
4
4
|
import clsx from 'clsx';
|
|
5
5
|
import { nodeContains } from '@cloudscape-design/component-toolkit/dom';
|
|
6
|
-
import { getFirstFocusable } from '../focus-lock/utils';
|
|
7
6
|
import Tooltip from '../tooltip';
|
|
8
7
|
import DirectionButton from './direction-button';
|
|
9
8
|
import PortalOverlay from './portal-overlay';
|
|
10
9
|
import styles from './styles.css.js';
|
|
11
|
-
|
|
10
|
+
import testUtilsStyles from './test-classes/styles.css.js';
|
|
11
|
+
export default function DragHandleWrapper({ directions, tooltipText, children, onDirectionClick, triggerMode = 'focus', initialShowButtons = false, controlledShowButtons = false, wrapperClassName, hideButtonsOnDrag, clickDragThreshold, }) {
|
|
12
12
|
const wrapperRef = useRef(null);
|
|
13
13
|
const dragHandleRef = useRef(null);
|
|
14
14
|
const [showTooltip, setShowTooltip] = useState(false);
|
|
15
|
-
const [
|
|
15
|
+
const [uncontrolledShowButtons, setUncontrolledShowButtons] = useState(initialShowButtons);
|
|
16
16
|
const isPointerDown = useRef(false);
|
|
17
17
|
const initialPointerPosition = useRef();
|
|
18
18
|
const didPointerDrag = useRef(false);
|
|
@@ -24,22 +24,22 @@ export default function DragHandleWrapper({ directions, tooltipText, children, o
|
|
|
24
24
|
// is pressed on it. We exclude handling the pointer press in this handler,
|
|
25
25
|
// since it could be the start of a drag event - the pointer stuff is
|
|
26
26
|
// handled in the "pointerup" listener instead. In cases where focus is moved
|
|
27
|
-
// to the button (by manually calling `.focus()
|
|
27
|
+
// to the button (by manually calling `.focus()`), the buttons should only appear
|
|
28
28
|
// if the action that triggered the focus move was the result of a keypress.
|
|
29
29
|
if (document.body.dataset.awsuiFocusVisible && !nodeContains(wrapperRef.current, event.relatedTarget)) {
|
|
30
30
|
setShowTooltip(false);
|
|
31
31
|
if (triggerMode === 'focus') {
|
|
32
|
-
|
|
32
|
+
setUncontrolledShowButtons(true);
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
};
|
|
36
36
|
const onWrapperFocusOut = event => {
|
|
37
37
|
// Close the directional buttons when the focus leaves the drag handle.
|
|
38
|
-
// "focusout" is also triggered when the user
|
|
38
|
+
// "focusout" is also triggered when the user switches to another tab, but
|
|
39
39
|
// since it'll be returned when they switch back anyway, we exclude that
|
|
40
40
|
// case by checking for `document.hasFocus()`.
|
|
41
41
|
if (document.hasFocus() && !nodeContains(wrapperRef.current, event.relatedTarget)) {
|
|
42
|
-
|
|
42
|
+
setUncontrolledShowButtons(false);
|
|
43
43
|
}
|
|
44
44
|
};
|
|
45
45
|
useEffect(() => {
|
|
@@ -60,7 +60,7 @@ export default function DragHandleWrapper({ directions, tooltipText, children, o
|
|
|
60
60
|
event.clientY < initialPointerPosition.current.y - clickDragThreshold)) {
|
|
61
61
|
didPointerDrag.current = true;
|
|
62
62
|
if (hideButtonsOnDrag) {
|
|
63
|
-
|
|
63
|
+
setUncontrolledShowButtons(false);
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
}, { signal: controller.signal });
|
|
@@ -77,7 +77,7 @@ export default function DragHandleWrapper({ directions, tooltipText, children, o
|
|
|
77
77
|
if (isPointerDown.current && !didPointerDrag.current) {
|
|
78
78
|
// The cursor didn't move much between "pointerdown" and "pointerup".
|
|
79
79
|
// Handle this as a "click" instead of a "drag".
|
|
80
|
-
|
|
80
|
+
setUncontrolledShowButtons(true);
|
|
81
81
|
}
|
|
82
82
|
resetPointerDownState();
|
|
83
83
|
}, { signal: controller.signal });
|
|
@@ -108,11 +108,11 @@ export default function DragHandleWrapper({ directions, tooltipText, children, o
|
|
|
108
108
|
const onDragHandleKeyDown = event => {
|
|
109
109
|
// For accessibility reasons, pressing escape should always close the floating controls.
|
|
110
110
|
if (event.key === 'Escape') {
|
|
111
|
-
|
|
111
|
+
setUncontrolledShowButtons(false);
|
|
112
112
|
}
|
|
113
113
|
else if (triggerMode === 'keyboard-activate' && (event.key === 'Enter' || event.key === ' ')) {
|
|
114
114
|
// toggle buttons when Enter or space is pressed in 'keyboard-activate' triggerMode
|
|
115
|
-
|
|
115
|
+
setUncontrolledShowButtons(prevshowButtons => !prevshowButtons);
|
|
116
116
|
}
|
|
117
117
|
else if (event.key !== 'Alt' &&
|
|
118
118
|
event.key !== 'Control' &&
|
|
@@ -121,28 +121,22 @@ export default function DragHandleWrapper({ directions, tooltipText, children, o
|
|
|
121
121
|
triggerMode === 'focus') {
|
|
122
122
|
// Pressing any other key will display the focus-visible ring around the
|
|
123
123
|
// drag handle if it's in focus, so we should also show the buttons now.
|
|
124
|
-
|
|
124
|
+
setUncontrolledShowButtons(true);
|
|
125
125
|
}
|
|
126
126
|
};
|
|
127
|
-
const
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
React.createElement(
|
|
141
|
-
!isDisabled && !_showButtons && showTooltip && tooltipText && (React.createElement(Tooltip, { trackRef: dragHandleRef, value: tooltipText, onDismiss: () => setShowTooltip(false) }))),
|
|
142
|
-
React.createElement(PortalOverlay, { track: dragHandleRef, isDisabled: !_showButtons },
|
|
143
|
-
directions['block-start'] && (React.createElement(DirectionButton, { show: !isDisabled && _showButtons, direction: "block-start", state: directions['block-start'], onClick: () => onInternalDirectionClick('block-start') })),
|
|
144
|
-
directions['block-end'] && (React.createElement(DirectionButton, { show: !isDisabled && _showButtons, direction: "block-end", state: directions['block-end'], onClick: () => onInternalDirectionClick('block-end') })),
|
|
145
|
-
directions['inline-start'] && (React.createElement(DirectionButton, { show: !isDisabled && _showButtons, direction: "inline-start", state: directions['inline-start'], onClick: () => onInternalDirectionClick('inline-start') })),
|
|
146
|
-
directions['inline-end'] && (React.createElement(DirectionButton, { show: !isDisabled && _showButtons, direction: "inline-end", state: directions['inline-end'], onClick: () => onInternalDirectionClick('inline-end') })))));
|
|
127
|
+
const showButtons = triggerMode === 'controlled' ? controlledShowButtons : uncontrolledShowButtons;
|
|
128
|
+
return (React.createElement(React.Fragment, null,
|
|
129
|
+
React.createElement("div", { className: clsx(testUtilsStyles.root, styles.contents), ref: wrapperRef, onFocus: onWrapperFocusIn, onBlur: onWrapperFocusOut },
|
|
130
|
+
React.createElement("div", { className: styles.contents, onPointerEnter: onTooltipGroupPointerEnter, onPointerLeave: onTooltipGroupPointerLeave },
|
|
131
|
+
React.createElement("div", { className: clsx(styles['drag-handle'], wrapperClassName), ref: dragHandleRef, onPointerDown: onHandlePointerDown, onKeyDown: onDragHandleKeyDown }, children),
|
|
132
|
+
!isDisabled && !showButtons && showTooltip && tooltipText && (
|
|
133
|
+
// Rendered in a portal but pointerenter/pointerleave events still propagate
|
|
134
|
+
// up the React DOM tree, which is why it's placed in this nested context.
|
|
135
|
+
React.createElement(Tooltip, { trackRef: dragHandleRef, value: tooltipText, onDismiss: () => setShowTooltip(false) })))),
|
|
136
|
+
React.createElement(PortalOverlay, { track: dragHandleRef, isDisabled: !showButtons },
|
|
137
|
+
directions['block-start'] && (React.createElement(DirectionButton, { show: !isDisabled && showButtons, direction: "block-start", state: directions['block-start'], onClick: () => onDirectionClick === null || onDirectionClick === void 0 ? void 0 : onDirectionClick('block-start') })),
|
|
138
|
+
directions['block-end'] && (React.createElement(DirectionButton, { show: !isDisabled && showButtons, direction: "block-end", state: directions['block-end'], onClick: () => onDirectionClick === null || onDirectionClick === void 0 ? void 0 : onDirectionClick('block-end') })),
|
|
139
|
+
directions['inline-start'] && (React.createElement(DirectionButton, { show: !isDisabled && showButtons, direction: "inline-start", state: directions['inline-start'], onClick: () => onDirectionClick === null || onDirectionClick === void 0 ? void 0 : onDirectionClick('inline-start') })),
|
|
140
|
+
directions['inline-end'] && (React.createElement(DirectionButton, { show: !isDisabled && showButtons, direction: "inline-end", state: directions['inline-end'], onClick: () => onDirectionClick === null || onDirectionClick === void 0 ? void 0 : onDirectionClick('inline-end') })))));
|
|
147
141
|
}
|
|
148
142
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/internal/components/drag-handle-wrapper/index.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC3D,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAC;AAExE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,OAAO,MAAM,YAAY,CAAC;AACjC,OAAO,eAAe,MAAM,oBAAoB,CAAC;AAEjD,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAE7C,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAErC,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EACxC,UAAU,EACV,WAAW,EACX,QAAQ,EACR,gBAAgB,EAChB,WAAW,GAAG,OAAO,EACrB,kBAAkB,GAAG,KAAK,EAC1B,qBAAqB,GAAG,KAAK,EAC7B,iBAAiB,EACjB,kBAAkB,GACK;IACvB,MAAM,UAAU,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IACvD,MAAM,aAAa,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IAC1D,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IAEnE,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,sBAAsB,GAAG,MAAM,EAAwC,CAAC;IAC9E,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAErC,2EAA2E;IAC3E,sCAAsC;IACtC,MAAM,UAAU,GACd,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAErH,MAAM,gBAAgB,GAA4B,KAAK,CAAC,EAAE;QACxD,wEAAwE;QACxE,2EAA2E;QAC3E,qEAAqE;QACrE,6EAA6E;QAC7E,iFAAiF;QACjF,4EAA4E;QAC5E,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,EAAE;YACrG,cAAc,CAAC,KAAK,CAAC,CAAC;YACtB,IAAI,WAAW,KAAK,OAAO,EAAE;gBAC3B,cAAc,CAAC,IAAI,CAAC,CAAC;aACtB;SACF;IACH,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAA4B,KAAK,CAAC,EAAE;QACzD,uEAAuE;QACvE,yEAAyE;QACzE,wEAAwE;QACxE,8CAA8C;QAC9C,IAAI,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,EAAE;YACjF,cAAc,CAAC,KAAK,CAAC,CAAC;SACvB;IACH,CAAC,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QAEzC,kEAAkE;QAClE,mEAAmE;QACnE,uDAAuD;QACvD,sEAAsE;QACtE,sEAAsE;QACtE,wEAAwE;QACxE,uEAAuE;QACvE,QAAQ,CAAC,gBAAgB,CACvB,aAAa,EACb,KAAK,CAAC,EAAE;YACN,IACE,aAAa,CAAC,OAAO;gBACrB,sBAAsB,CAAC,OAAO;gBAC9B,CAAC,KAAK,CAAC,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC,GAAG,kBAAkB;oBACpE,KAAK,CAAC,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC,GAAG,kBAAkB;oBACrE,KAAK,CAAC,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC,GAAG,kBAAkB;oBACrE,KAAK,CAAC,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC,GAAG,kBAAkB,CAAC,EACxE;gBACA,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC;gBAC9B,IAAI,iBAAiB,EAAE;oBACrB,cAAc,CAAC,KAAK,CAAC,CAAC;iBACvB;aACF;QACH,CAAC,EACD,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAC9B,CAAC;QAEF,wEAAwE;QACxE,iEAAiE;QACjE,MAAM,qBAAqB,GAAG,GAAG,EAAE;YACjC,aAAa,CAAC,OAAO,GAAG,KAAK,CAAC;YAC9B,sBAAsB,CAAC,OAAO,GAAG,SAAS,CAAC;QAC7C,CAAC,CAAC;QAEF,QAAQ,CAAC,gBAAgB,CACvB,eAAe,EACf,GAAG,EAAE;YACH,qBAAqB,EAAE,CAAC;QAC1B,CAAC,EACD,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAC9B,CAAC;QAEF,QAAQ,CAAC,gBAAgB,CACvB,WAAW,EACX,GAAG,EAAE;YACH,IAAI,aAAa,CAAC,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;gBACpD,qEAAqE;gBACrE,gDAAgD;gBAChD,cAAc,CAAC,IAAI,CAAC,CAAC;aACtB;YACD,qBAAqB,EAAE,CAAC;QAC1B,CAAC,EACD,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAC9B,CAAC;QAEF,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC,EAAE,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAE5C,MAAM,mBAAmB,GAA8B,KAAK,CAAC,EAAE;QAC7D,2EAA2E;QAC3E,uEAAuE;QACvE,wEAAwE;QACxE,0EAA0E;QAC1E,kCAAkC;QAElC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC;QAC7B,cAAc,CAAC,OAAO,GAAG,KAAK,CAAC;QAC/B,sBAAsB,CAAC,OAAO,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QACxE,cAAc,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC,CAAC;IAEF,uEAAuE;IACvE,wEAAwE;IACxE,0EAA0E;IAC1E,MAAM,0BAA0B,GAA8B,GAAG,EAAE;QACjE,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;YAC1B,cAAc,CAAC,IAAI,CAAC,CAAC;SACtB;IACH,CAAC,CAAC;IACF,MAAM,0BAA0B,GAA8B,GAAG,EAAE;QACjE,cAAc,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAA+B,KAAK,CAAC,EAAE;QAC9D,wFAAwF;QACxF,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;YAC1B,cAAc,CAAC,KAAK,CAAC,CAAC;SACvB;aAAM,IAAI,WAAW,KAAK,mBAAmB,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE;YAC9F,mFAAmF;YACnF,cAAc,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC;SACrD;aAAM,IACL,KAAK,CAAC,GAAG,KAAK,KAAK;YACnB,KAAK,CAAC,GAAG,KAAK,SAAS;YACvB,KAAK,CAAC,GAAG,KAAK,MAAM;YACpB,KAAK,CAAC,GAAG,KAAK,OAAO;YACrB,WAAW,KAAK,OAAO,EACvB;YACA,wEAAwE;YACxE,wEAAwE;YACxE,cAAc,CAAC,IAAI,CAAC,CAAC;SACtB;IACH,CAAC,CAAC;IAEF,MAAM,wBAAwB,GAAG,CAAC,SAAoB,EAAE,EAAE;;QACxD,4EAA4E;QAC5E,6EAA6E;QAC7E,gDAAgD;QAChD,IAAI,aAAa,CAAC,OAAO,EAAE;YACzB,MAAA,iBAAiB,CAAC,aAAa,CAAC,OAAO,CAAC,0CAAE,KAAK,EAAE,CAAC;SACnD;QACD,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAG,SAAS,CAAC,CAAC;IAChC,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,WAAW,KAAK,YAAY,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,WAAW,CAAC;IAExF,OAAO,CACL,6BACE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,EAAE,YAAY,IAAI,MAAM,CAAC,0BAA0B,CAAC,CAAC,EAClG,GAAG,EAAE,UAAU,EACf,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,iBAAiB;QAEzB,6BAAK,cAAc,EAAE,0BAA0B,EAAE,cAAc,EAAE,0BAA0B;YACzF,6BACE,SAAS,EAAE,MAAM,CAAC,aAAa,CAAC,EAChC,GAAG,EAAE,aAAa,EAClB,aAAa,EAAE,mBAAmB,EAClC,SAAS,EAAE,mBAAmB,IAE7B,QAAQ,CACL;YAEL,CAAC,UAAU,IAAI,CAAC,YAAY,IAAI,WAAW,IAAI,WAAW,IAAI,CAC7D,oBAAC,OAAO,IAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,GAAI,CACjG,CACG;QAEN,oBAAC,aAAa,IAAC,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC,YAAY;YAC3D,UAAU,CAAC,aAAa,CAAC,IAAI,CAC5B,oBAAC,eAAe,IACd,IAAI,EAAE,CAAC,UAAU,IAAI,YAAY,EACjC,SAAS,EAAC,aAAa,EACvB,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,EAChC,OAAO,EAAE,GAAG,EAAE,CAAC,wBAAwB,CAAC,aAAa,CAAC,GACtD,CACH;YACA,UAAU,CAAC,WAAW,CAAC,IAAI,CAC1B,oBAAC,eAAe,IACd,IAAI,EAAE,CAAC,UAAU,IAAI,YAAY,EACjC,SAAS,EAAC,WAAW,EACrB,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,EAC9B,OAAO,EAAE,GAAG,EAAE,CAAC,wBAAwB,CAAC,WAAW,CAAC,GACpD,CACH;YACA,UAAU,CAAC,cAAc,CAAC,IAAI,CAC7B,oBAAC,eAAe,IACd,IAAI,EAAE,CAAC,UAAU,IAAI,YAAY,EACjC,SAAS,EAAC,cAAc,EACxB,KAAK,EAAE,UAAU,CAAC,cAAc,CAAC,EACjC,OAAO,EAAE,GAAG,EAAE,CAAC,wBAAwB,CAAC,cAAc,CAAC,GACvD,CACH;YACA,UAAU,CAAC,YAAY,CAAC,IAAI,CAC3B,oBAAC,eAAe,IACd,IAAI,EAAE,CAAC,UAAU,IAAI,YAAY,EACjC,SAAS,EAAC,YAAY,EACtB,KAAK,EAAE,UAAU,CAAC,YAAY,CAAC,EAC/B,OAAO,EAAE,GAAG,EAAE,CAAC,wBAAwB,CAAC,YAAY,CAAC,GACrD,CACH,CACa,CACZ,CACP,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport React, { useEffect, useRef, useState } from 'react';\nimport clsx from 'clsx';\n\nimport { nodeContains } from '@cloudscape-design/component-toolkit/dom';\n\nimport { getFirstFocusable } from '../focus-lock/utils';\nimport Tooltip from '../tooltip';\nimport DirectionButton from './direction-button';\nimport { Direction, DragHandleWrapperProps } from './interfaces';\nimport PortalOverlay from './portal-overlay';\n\nimport styles from './styles.css.js';\n\nexport default function DragHandleWrapper({\n directions,\n tooltipText,\n children,\n onDirectionClick,\n triggerMode = 'focus',\n initialShowButtons = false,\n controlledShowButtons = false,\n hideButtonsOnDrag,\n clickDragThreshold,\n}: DragHandleWrapperProps) {\n const wrapperRef = useRef<HTMLDivElement | null>(null);\n const dragHandleRef = useRef<HTMLDivElement | null>(null);\n const [showTooltip, setShowTooltip] = useState(false);\n const [showButtons, setShowButtons] = useState(initialShowButtons);\n\n const isPointerDown = useRef(false);\n const initialPointerPosition = useRef<{ x: number; y: number } | undefined>();\n const didPointerDrag = useRef(false);\n\n // The tooltip (\"Drag or select to move/resize\") shouldn't show if clicking\n // on the handle wouldn't do anything.\n const isDisabled =\n !directions['block-start'] && !directions['block-end'] && !directions['inline-start'] && !directions['inline-end'];\n\n const onWrapperFocusIn: React.FocusEventHandler = event => {\n // The drag handle is focused when it's either tabbed to, or the pointer\n // is pressed on it. We exclude handling the pointer press in this handler,\n // since it could be the start of a drag event - the pointer stuff is\n // handled in the \"pointerup\" listener instead. In cases where focus is moved\n // to the button (by manually calling `.focus()`, the buttons should only appear)\n // if the action that triggered the focus move was the result of a keypress.\n if (document.body.dataset.awsuiFocusVisible && !nodeContains(wrapperRef.current, event.relatedTarget)) {\n setShowTooltip(false);\n if (triggerMode === 'focus') {\n setShowButtons(true);\n }\n }\n };\n\n const onWrapperFocusOut: React.FocusEventHandler = event => {\n // Close the directional buttons when the focus leaves the drag handle.\n // \"focusout\" is also triggered when the user leaves the current tab, but\n // since it'll be returned when they switch back anyway, we exclude that\n // case by checking for `document.hasFocus()`.\n if (document.hasFocus() && !nodeContains(wrapperRef.current, event.relatedTarget)) {\n setShowButtons(false);\n }\n };\n\n useEffect(() => {\n const controller = new AbortController();\n\n // We need to differentiate between a \"click\" and a \"drag\" action.\n // We can say a \"click\" happens when a \"pointerdown\" is followed by\n // a \"pointerup\" with no \"pointermove\" between the two.\n // However, it would be a poor usability experience if a \"click\" isn't\n // registered because, while pressing my mouse, I moved it by just one\n // pixel, making it a \"drag\" instead. So we allow the pointer to move by\n // `clickDragThreshold` pixels before setting `didPointerDrag` to true.\n document.addEventListener(\n 'pointermove',\n event => {\n if (\n isPointerDown.current &&\n initialPointerPosition.current &&\n (event.clientX > initialPointerPosition.current.x + clickDragThreshold ||\n event.clientX < initialPointerPosition.current.x - clickDragThreshold ||\n event.clientY > initialPointerPosition.current.y + clickDragThreshold ||\n event.clientY < initialPointerPosition.current.y - clickDragThreshold)\n ) {\n didPointerDrag.current = true;\n if (hideButtonsOnDrag) {\n setShowButtons(false);\n }\n }\n },\n { signal: controller.signal }\n );\n\n // Shared behavior when a \"pointerdown\" state ends. This is shared so it\n // can be called for both \"pointercancel\" and \"pointerup\" events.\n const resetPointerDownState = () => {\n isPointerDown.current = false;\n initialPointerPosition.current = undefined;\n };\n\n document.addEventListener(\n 'pointercancel',\n () => {\n resetPointerDownState();\n },\n { signal: controller.signal }\n );\n\n document.addEventListener(\n 'pointerup',\n () => {\n if (isPointerDown.current && !didPointerDrag.current) {\n // The cursor didn't move much between \"pointerdown\" and \"pointerup\".\n // Handle this as a \"click\" instead of a \"drag\".\n setShowButtons(true);\n }\n resetPointerDownState();\n },\n { signal: controller.signal }\n );\n\n return () => controller.abort();\n }, [clickDragThreshold, hideButtonsOnDrag]);\n\n const onHandlePointerDown: React.PointerEventHandler = event => {\n // Tooltip behavior: the tooltip should appear on hover, but disappear when\n // the pointer starts dragging (having the tooltip get in the way while\n // you're trying to drag upwards is annoying). Additionally, the tooltip\n // shouldn't reappear when dragging ends, but only when the pointer leaves\n // the drag handle and comes back.\n\n isPointerDown.current = true;\n didPointerDrag.current = false;\n initialPointerPosition.current = { x: event.clientX, y: event.clientY };\n setShowTooltip(false);\n };\n\n // Tooltip behavior: the tooltip should stay open when the cursor moves\n // from the drag handle into the tooltip content itself. This is why the\n // handler is set on the wrapper for both the drag handle and the tooltip.\n const onTooltipGroupPointerEnter: React.PointerEventHandler = () => {\n if (!isPointerDown.current) {\n setShowTooltip(true);\n }\n };\n const onTooltipGroupPointerLeave: React.PointerEventHandler = () => {\n setShowTooltip(false);\n };\n\n const onDragHandleKeyDown: React.KeyboardEventHandler = event => {\n // For accessibility reasons, pressing escape should always close the floating controls.\n if (event.key === 'Escape') {\n setShowButtons(false);\n } else if (triggerMode === 'keyboard-activate' && (event.key === 'Enter' || event.key === ' ')) {\n // toggle buttons when Enter or space is pressed in 'keyboard-activate' triggerMode\n setShowButtons(prevshowButtons => !prevshowButtons);\n } else if (\n event.key !== 'Alt' &&\n event.key !== 'Control' &&\n event.key !== 'Meta' &&\n event.key !== 'Shift' &&\n triggerMode === 'focus'\n ) {\n // Pressing any other key will display the focus-visible ring around the\n // drag handle if it's in focus, so we should also show the buttons now.\n setShowButtons(true);\n }\n };\n\n const onInternalDirectionClick = (direction: Direction) => {\n // Move focus back to the wrapper on click. This prevents focus from staying\n // on an aria-hidden control, and allows future keyboard events to be handled\n // cleanly using the drag handle's own handlers.\n if (dragHandleRef.current) {\n getFirstFocusable(dragHandleRef.current)?.focus();\n }\n onDirectionClick?.(direction);\n };\n\n const _showButtons = triggerMode === 'controlled' ? controlledShowButtons : showButtons;\n\n return (\n <div\n className={clsx(styles['drag-handle-wrapper'], _showButtons && styles['drag-handle-wrapper-open'])}\n ref={wrapperRef}\n onFocus={onWrapperFocusIn}\n onBlur={onWrapperFocusOut}\n >\n <div onPointerEnter={onTooltipGroupPointerEnter} onPointerLeave={onTooltipGroupPointerLeave}>\n <div\n className={styles['drag-handle']}\n ref={dragHandleRef}\n onPointerDown={onHandlePointerDown}\n onKeyDown={onDragHandleKeyDown}\n >\n {children}\n </div>\n\n {!isDisabled && !_showButtons && showTooltip && tooltipText && (\n <Tooltip trackRef={dragHandleRef} value={tooltipText} onDismiss={() => setShowTooltip(false)} />\n )}\n </div>\n\n <PortalOverlay track={dragHandleRef} isDisabled={!_showButtons}>\n {directions['block-start'] && (\n <DirectionButton\n show={!isDisabled && _showButtons}\n direction=\"block-start\"\n state={directions['block-start']}\n onClick={() => onInternalDirectionClick('block-start')}\n />\n )}\n {directions['block-end'] && (\n <DirectionButton\n show={!isDisabled && _showButtons}\n direction=\"block-end\"\n state={directions['block-end']}\n onClick={() => onInternalDirectionClick('block-end')}\n />\n )}\n {directions['inline-start'] && (\n <DirectionButton\n show={!isDisabled && _showButtons}\n direction=\"inline-start\"\n state={directions['inline-start']}\n onClick={() => onInternalDirectionClick('inline-start')}\n />\n )}\n {directions['inline-end'] && (\n <DirectionButton\n show={!isDisabled && _showButtons}\n direction=\"inline-end\"\n state={directions['inline-end']}\n onClick={() => onInternalDirectionClick('inline-end')}\n />\n )}\n </PortalOverlay>\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/internal/components/drag-handle-wrapper/index.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport React, { useEffect, useRef, useState } from 'react';\nimport clsx from 'clsx';\n\nimport { nodeContains } from '@cloudscape-design/component-toolkit/dom';\n\nimport Tooltip from '../tooltip';\nimport DirectionButton from './direction-button';\nimport { DragHandleWrapperProps } from './interfaces';\nimport PortalOverlay from './portal-overlay';\n\nimport styles from './styles.css.js';\nimport testUtilsStyles from './test-classes/styles.css.js';\n\nexport default function DragHandleWrapper({\n directions,\n tooltipText,\n children,\n onDirectionClick,\n triggerMode = 'focus',\n initialShowButtons = false,\n controlledShowButtons = false,\n wrapperClassName,\n hideButtonsOnDrag,\n clickDragThreshold,\n}: DragHandleWrapperProps) {\n const wrapperRef = useRef<HTMLDivElement | null>(null);\n const dragHandleRef = useRef<HTMLDivElement | null>(null);\n const [showTooltip, setShowTooltip] = useState(false);\n const [uncontrolledShowButtons, setUncontrolledShowButtons] = useState(initialShowButtons);\n\n const isPointerDown = useRef(false);\n const initialPointerPosition = useRef<{ x: number; y: number } | undefined>();\n const didPointerDrag = useRef(false);\n\n // The tooltip (\"Drag or select to move/resize\") shouldn't show if clicking\n // on the handle wouldn't do anything.\n const isDisabled =\n !directions['block-start'] && !directions['block-end'] && !directions['inline-start'] && !directions['inline-end'];\n\n const onWrapperFocusIn: React.FocusEventHandler = event => {\n // The drag handle is focused when it's either tabbed to, or the pointer\n // is pressed on it. We exclude handling the pointer press in this handler,\n // since it could be the start of a drag event - the pointer stuff is\n // handled in the \"pointerup\" listener instead. In cases where focus is moved\n // to the button (by manually calling `.focus()`), the buttons should only appear\n // if the action that triggered the focus move was the result of a keypress.\n if (document.body.dataset.awsuiFocusVisible && !nodeContains(wrapperRef.current, event.relatedTarget)) {\n setShowTooltip(false);\n if (triggerMode === 'focus') {\n setUncontrolledShowButtons(true);\n }\n }\n };\n\n const onWrapperFocusOut: React.FocusEventHandler = event => {\n // Close the directional buttons when the focus leaves the drag handle.\n // \"focusout\" is also triggered when the user switches to another tab, but\n // since it'll be returned when they switch back anyway, we exclude that\n // case by checking for `document.hasFocus()`.\n if (document.hasFocus() && !nodeContains(wrapperRef.current, event.relatedTarget)) {\n setUncontrolledShowButtons(false);\n }\n };\n\n useEffect(() => {\n const controller = new AbortController();\n\n // We need to differentiate between a \"click\" and a \"drag\" action.\n // We can say a \"click\" happens when a \"pointerdown\" is followed by\n // a \"pointerup\" with no \"pointermove\" between the two.\n // However, it would be a poor usability experience if a \"click\" isn't\n // registered because, while pressing my mouse, I moved it by just one\n // pixel, making it a \"drag\" instead. So we allow the pointer to move by\n // `clickDragThreshold` pixels before setting `didPointerDrag` to true.\n document.addEventListener(\n 'pointermove',\n event => {\n if (\n isPointerDown.current &&\n initialPointerPosition.current &&\n (event.clientX > initialPointerPosition.current.x + clickDragThreshold ||\n event.clientX < initialPointerPosition.current.x - clickDragThreshold ||\n event.clientY > initialPointerPosition.current.y + clickDragThreshold ||\n event.clientY < initialPointerPosition.current.y - clickDragThreshold)\n ) {\n didPointerDrag.current = true;\n if (hideButtonsOnDrag) {\n setUncontrolledShowButtons(false);\n }\n }\n },\n { signal: controller.signal }\n );\n\n // Shared behavior when a \"pointerdown\" state ends. This is shared so it\n // can be called for both \"pointercancel\" and \"pointerup\" events.\n const resetPointerDownState = () => {\n isPointerDown.current = false;\n initialPointerPosition.current = undefined;\n };\n\n document.addEventListener(\n 'pointercancel',\n () => {\n resetPointerDownState();\n },\n { signal: controller.signal }\n );\n\n document.addEventListener(\n 'pointerup',\n () => {\n if (isPointerDown.current && !didPointerDrag.current) {\n // The cursor didn't move much between \"pointerdown\" and \"pointerup\".\n // Handle this as a \"click\" instead of a \"drag\".\n setUncontrolledShowButtons(true);\n }\n resetPointerDownState();\n },\n { signal: controller.signal }\n );\n\n return () => controller.abort();\n }, [clickDragThreshold, hideButtonsOnDrag]);\n\n const onHandlePointerDown: React.PointerEventHandler = event => {\n // Tooltip behavior: the tooltip should appear on hover, but disappear when\n // the pointer starts dragging (having the tooltip get in the way while\n // you're trying to drag upwards is annoying). Additionally, the tooltip\n // shouldn't reappear when dragging ends, but only when the pointer leaves\n // the drag handle and comes back.\n\n isPointerDown.current = true;\n didPointerDrag.current = false;\n initialPointerPosition.current = { x: event.clientX, y: event.clientY };\n setShowTooltip(false);\n };\n\n // Tooltip behavior: the tooltip should stay open when the cursor moves\n // from the drag handle into the tooltip content itself. This is why the\n // handler is set on the wrapper for both the drag handle and the tooltip.\n const onTooltipGroupPointerEnter: React.PointerEventHandler = () => {\n if (!isPointerDown.current) {\n setShowTooltip(true);\n }\n };\n const onTooltipGroupPointerLeave: React.PointerEventHandler = () => {\n setShowTooltip(false);\n };\n\n const onDragHandleKeyDown: React.KeyboardEventHandler = event => {\n // For accessibility reasons, pressing escape should always close the floating controls.\n if (event.key === 'Escape') {\n setUncontrolledShowButtons(false);\n } else if (triggerMode === 'keyboard-activate' && (event.key === 'Enter' || event.key === ' ')) {\n // toggle buttons when Enter or space is pressed in 'keyboard-activate' triggerMode\n setUncontrolledShowButtons(prevshowButtons => !prevshowButtons);\n } else if (\n event.key !== 'Alt' &&\n event.key !== 'Control' &&\n event.key !== 'Meta' &&\n event.key !== 'Shift' &&\n triggerMode === 'focus'\n ) {\n // Pressing any other key will display the focus-visible ring around the\n // drag handle if it's in focus, so we should also show the buttons now.\n setUncontrolledShowButtons(true);\n }\n };\n\n const showButtons = triggerMode === 'controlled' ? controlledShowButtons : uncontrolledShowButtons;\n\n return (\n <>\n {/* Wrapper for focus detection. The buttons are shown when any element inside this wrapper is\n focused, either via the keyboard or a pointer press. The UAP buttons will never receive focus. */}\n <div\n className={clsx(testUtilsStyles.root, styles.contents)}\n ref={wrapperRef}\n onFocus={onWrapperFocusIn}\n onBlur={onWrapperFocusOut}\n >\n {/* Wrapper for pointer detection. Determines whether or not the tooltip should be shown. */}\n <div\n className={styles.contents}\n onPointerEnter={onTooltipGroupPointerEnter}\n onPointerLeave={onTooltipGroupPointerLeave}\n >\n {/* Position tracking wrapper used to position the tooltip and drag buttons accurately.\n Its dimensions must match the inner button's dimensions. */}\n <div\n className={clsx(styles['drag-handle'], wrapperClassName)}\n ref={dragHandleRef}\n onPointerDown={onHandlePointerDown}\n onKeyDown={onDragHandleKeyDown}\n >\n {children}\n </div>\n\n {!isDisabled && !showButtons && showTooltip && tooltipText && (\n // Rendered in a portal but pointerenter/pointerleave events still propagate\n // up the React DOM tree, which is why it's placed in this nested context.\n <Tooltip trackRef={dragHandleRef} value={tooltipText} onDismiss={() => setShowTooltip(false)} />\n )}\n </div>\n </div>\n\n <PortalOverlay track={dragHandleRef} isDisabled={!showButtons}>\n {directions['block-start'] && (\n <DirectionButton\n show={!isDisabled && showButtons}\n direction=\"block-start\"\n state={directions['block-start']}\n onClick={() => onDirectionClick?.('block-start')}\n />\n )}\n {directions['block-end'] && (\n <DirectionButton\n show={!isDisabled && showButtons}\n direction=\"block-end\"\n state={directions['block-end']}\n onClick={() => onDirectionClick?.('block-end')}\n />\n )}\n {directions['inline-start'] && (\n <DirectionButton\n show={!isDisabled && showButtons}\n direction=\"inline-start\"\n state={directions['inline-start']}\n onClick={() => onDirectionClick?.('inline-start')}\n />\n )}\n {directions['inline-end'] && (\n <DirectionButton\n show={!isDisabled && showButtons}\n direction=\"inline-end\"\n state={directions['inline-end']}\n onClick={() => onDirectionClick?.('inline-end')}\n />\n )}\n </PortalOverlay>\n </>\n );\n}\n"]}
|
|
@@ -7,6 +7,7 @@ export interface DragHandleWrapperProps {
|
|
|
7
7
|
onDirectionClick?: (direction: Direction) => void;
|
|
8
8
|
tooltipText?: string;
|
|
9
9
|
children: React.ReactNode;
|
|
10
|
+
wrapperClassName?: string;
|
|
10
11
|
triggerMode?: TriggerMode;
|
|
11
12
|
initialShowButtons?: boolean;
|
|
12
13
|
controlledShowButtons?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../../../src/internal/components/drag-handle-wrapper/interfaces.ts"],"names":[],"mappings":";AAGA,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,WAAW,GAAG,cAAc,GAAG,YAAY,CAAC;AACpF,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,UAAU,CAAC;AACnD,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,mBAAmB,GAAG,YAAY,CAAC;AAEvE,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC;IACvD,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,CAAC;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;CAC5B"}
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../../../src/internal/components/drag-handle-wrapper/interfaces.ts"],"names":[],"mappings":";AAGA,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,WAAW,GAAG,cAAc,GAAG,YAAY,CAAC;AACpF,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,UAAU,CAAC;AACnD,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,mBAAmB,GAAG,YAAY,CAAC;AAEvE,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC;IACvD,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,CAAC;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;CAC5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../../src/internal/components/drag-handle-wrapper/interfaces.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport type Direction = 'block-start' | 'block-end' | 'inline-start' | 'inline-end';\nexport type DirectionState = 'active' | 'disabled';\nexport type TriggerMode = 'focus' | 'keyboard-activate' | 'controlled';\n\nexport interface DragHandleWrapperProps {\n directions: Partial<Record<Direction, DirectionState>>;\n onDirectionClick?: (direction: Direction) => void;\n tooltipText?: string;\n children: React.ReactNode;\n triggerMode?: TriggerMode;\n initialShowButtons?: boolean;\n controlledShowButtons?: boolean;\n hideButtonsOnDrag: boolean;\n clickDragThreshold: number;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../../src/internal/components/drag-handle-wrapper/interfaces.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport type Direction = 'block-start' | 'block-end' | 'inline-start' | 'inline-end';\nexport type DirectionState = 'active' | 'disabled';\nexport type TriggerMode = 'focus' | 'keyboard-activate' | 'controlled';\n\nexport interface DragHandleWrapperProps {\n directions: Partial<Record<Direction, DirectionState>>;\n onDirectionClick?: (direction: Direction) => void;\n tooltipText?: string;\n children: React.ReactNode;\n wrapperClassName?: string;\n triggerMode?: TriggerMode;\n initialShowButtons?: boolean;\n controlledShowButtons?: boolean;\n hideButtonsOnDrag: boolean;\n clickDragThreshold: number;\n}\n"]}
|
|
@@ -1,26 +1,25 @@
|
|
|
1
1
|
|
|
2
2
|
import './styles.scoped.css';
|
|
3
3
|
export default {
|
|
4
|
-
"direction-button-wrapper": "awsui_direction-button-
|
|
5
|
-
"direction-button-wrapper-motion-enter": "awsui_direction-button-wrapper-motion-
|
|
6
|
-
"direction-button-wrapper-motion-entering": "awsui_direction-button-wrapper-motion-
|
|
7
|
-
"direction-button-wrapper-motion-exit": "awsui_direction-button-wrapper-motion-
|
|
8
|
-
"direction-button-wrapper-motion-exiting": "awsui_direction-button-wrapper-motion-
|
|
9
|
-
"drag-handle-entry": "awsui_drag-handle-
|
|
10
|
-
"awsui-motion-fade-in": "awsui_awsui-motion-fade-
|
|
11
|
-
"drag-handle-exit": "awsui_drag-handle-
|
|
12
|
-
"awsui-motion-fade-out-0": "awsui_awsui-motion-fade-out-
|
|
13
|
-
"direction-button-wrapper-block-start": "awsui_direction-button-wrapper-block-
|
|
14
|
-
"direction-button-wrapper-block-end": "awsui_direction-button-wrapper-block-
|
|
15
|
-
"direction-button-wrapper-inline-start": "awsui_direction-button-wrapper-inline-
|
|
16
|
-
"direction-button-wrapper-inline-end": "awsui_direction-button-wrapper-inline-
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
"portal-overlay": "awsui_portal-
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
-
"direction-button
|
|
23
|
-
"direction-button": "awsui_direction-
|
|
24
|
-
"direction-button-disabled": "awsui_direction-button-disabled_155yk_azra5_320"
|
|
4
|
+
"direction-button-wrapper": "awsui_direction-button-wrapper_155yk_1t4ar_169",
|
|
5
|
+
"direction-button-wrapper-motion-enter": "awsui_direction-button-wrapper-motion-enter_155yk_1t4ar_189",
|
|
6
|
+
"direction-button-wrapper-motion-entering": "awsui_direction-button-wrapper-motion-entering_155yk_1t4ar_189",
|
|
7
|
+
"direction-button-wrapper-motion-exit": "awsui_direction-button-wrapper-motion-exit_155yk_1t4ar_189",
|
|
8
|
+
"direction-button-wrapper-motion-exiting": "awsui_direction-button-wrapper-motion-exiting_155yk_1t4ar_189",
|
|
9
|
+
"drag-handle-entry": "awsui_drag-handle-entry_155yk_1t4ar_1",
|
|
10
|
+
"awsui-motion-fade-in": "awsui_awsui-motion-fade-in_155yk_1t4ar_1",
|
|
11
|
+
"drag-handle-exit": "awsui_drag-handle-exit_155yk_1t4ar_1",
|
|
12
|
+
"awsui-motion-fade-out-0": "awsui_awsui-motion-fade-out-0_155yk_1t4ar_1",
|
|
13
|
+
"direction-button-wrapper-block-start": "awsui_direction-button-wrapper-block-start_155yk_1t4ar_229",
|
|
14
|
+
"direction-button-wrapper-block-end": "awsui_direction-button-wrapper-block-end_155yk_1t4ar_233",
|
|
15
|
+
"direction-button-wrapper-inline-start": "awsui_direction-button-wrapper-inline-start_155yk_1t4ar_237",
|
|
16
|
+
"direction-button-wrapper-inline-end": "awsui_direction-button-wrapper-inline-end_155yk_1t4ar_248",
|
|
17
|
+
"contents": "awsui_contents_155yk_1t4ar_259",
|
|
18
|
+
"portal-overlay": "awsui_portal-overlay_155yk_1t4ar_263",
|
|
19
|
+
"portal-overlay-contents": "awsui_portal-overlay-contents_155yk_1t4ar_271",
|
|
20
|
+
"drag-handle": "awsui_drag-handle_155yk_1t4ar_275",
|
|
21
|
+
"direction-button-wrapper-hidden": "awsui_direction-button-wrapper-hidden_155yk_1t4ar_288",
|
|
22
|
+
"direction-button": "awsui_direction-button_155yk_1t4ar_169",
|
|
23
|
+
"direction-button-disabled": "awsui_direction-button-disabled_155yk_1t4ar_331"
|
|
25
24
|
};
|
|
26
25
|
|
|
@@ -150,7 +150,7 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
|
|
|
150
150
|
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
151
151
|
SPDX-License-Identifier: Apache-2.0
|
|
152
152
|
*/
|
|
153
|
-
@keyframes awsui_drag-handle-
|
|
153
|
+
@keyframes awsui_drag-handle-entry_155yk_1t4ar_1 {
|
|
154
154
|
from {
|
|
155
155
|
transform: translate(var(--awsui-drag-handle-animation-inline-offset-vl73au), var(--awsui-drag-handle-animation-block-offset-vl73au));
|
|
156
156
|
}
|
|
@@ -158,7 +158,7 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
|
|
|
158
158
|
transform: translate(0, 0);
|
|
159
159
|
}
|
|
160
160
|
}
|
|
161
|
-
@keyframes awsui_drag-handle-
|
|
161
|
+
@keyframes awsui_drag-handle-exit_155yk_1t4ar_1 {
|
|
162
162
|
from {
|
|
163
163
|
transform: translate(0, 0);
|
|
164
164
|
}
|
|
@@ -166,11 +166,11 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
|
|
|
166
166
|
transform: translate(var(--awsui-drag-handle-animation-inline-offset-vl73au), var(--awsui-drag-handle-animation-block-offset-vl73au));
|
|
167
167
|
}
|
|
168
168
|
}
|
|
169
|
-
.awsui_direction-button-
|
|
169
|
+
.awsui_direction-button-wrapper_155yk_1t4ar_169:not(#\9) {
|
|
170
170
|
--awsui-drag-handle-animation-inline-offset-vl73au: 0;
|
|
171
171
|
--awsui-drag-handle-animation-block-offset-vl73au: 0;
|
|
172
172
|
}
|
|
173
|
-
@keyframes awsui_awsui-motion-fade-
|
|
173
|
+
@keyframes awsui_awsui-motion-fade-in_155yk_1t4ar_1 {
|
|
174
174
|
from {
|
|
175
175
|
opacity: 0.2;
|
|
176
176
|
}
|
|
@@ -178,7 +178,7 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
|
|
|
178
178
|
opacity: 1;
|
|
179
179
|
}
|
|
180
180
|
}
|
|
181
|
-
@keyframes awsui_awsui-motion-fade-out-
|
|
181
|
+
@keyframes awsui_awsui-motion-fade-out-0_155yk_1t4ar_1 {
|
|
182
182
|
from {
|
|
183
183
|
opacity: 1;
|
|
184
184
|
}
|
|
@@ -186,70 +186,81 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
|
|
|
186
186
|
opacity: 0;
|
|
187
187
|
}
|
|
188
188
|
}
|
|
189
|
-
.awsui_direction-button-wrapper-motion-
|
|
189
|
+
.awsui_direction-button-wrapper-motion-enter_155yk_1t4ar_189:not(#\9), .awsui_direction-button-wrapper-motion-entering_155yk_1t4ar_189:not(#\9), .awsui_direction-button-wrapper-motion-exit_155yk_1t4ar_189:not(#\9), .awsui_direction-button-wrapper-motion-exiting_155yk_1t4ar_189:not(#\9) {
|
|
190
190
|
pointer-events: none;
|
|
191
191
|
}
|
|
192
|
-
.awsui_direction-button-wrapper-motion-
|
|
193
|
-
animation: awsui_drag-handle-
|
|
192
|
+
.awsui_direction-button-wrapper-motion-entering_155yk_1t4ar_189:not(#\9) {
|
|
193
|
+
animation: awsui_drag-handle-entry_155yk_1t4ar_1 var(--motion-duration-complex-tbdo30, 250ms) var(--motion-easing-responsive-hjj3ai, cubic-bezier(0, 0, 0, 1)), awsui_awsui-motion-fade-in_155yk_1t4ar_1 var(--motion-duration-complex-tbdo30, 250ms) var(--motion-easing-responsive-hjj3ai, cubic-bezier(0, 0, 0, 1));
|
|
194
194
|
}
|
|
195
195
|
@media (prefers-reduced-motion: reduce) {
|
|
196
|
-
.awsui_direction-button-wrapper-motion-
|
|
196
|
+
.awsui_direction-button-wrapper-motion-entering_155yk_1t4ar_189:not(#\9) {
|
|
197
197
|
animation: none;
|
|
198
198
|
transition: none;
|
|
199
199
|
}
|
|
200
200
|
}
|
|
201
|
-
.awsui-motion-disabled .awsui_direction-button-wrapper-motion-
|
|
201
|
+
.awsui-motion-disabled .awsui_direction-button-wrapper-motion-entering_155yk_1t4ar_189:not(#\9), .awsui-mode-entering .awsui_direction-button-wrapper-motion-entering_155yk_1t4ar_189:not(#\9) {
|
|
202
202
|
animation: none;
|
|
203
203
|
transition: none;
|
|
204
204
|
}
|
|
205
|
-
.awsui_direction-button-wrapper-motion-
|
|
206
|
-
animation: awsui_drag-handle-
|
|
205
|
+
.awsui_direction-button-wrapper-motion-exiting_155yk_1t4ar_189:not(#\9) {
|
|
206
|
+
animation: awsui_drag-handle-exit_155yk_1t4ar_1 var(--motion-duration-complex-tbdo30, 250ms) var(--motion-easing-responsive-hjj3ai, cubic-bezier(0, 0, 0, 1)) forwards, awsui_awsui-motion-fade-out-0_155yk_1t4ar_1 var(--motion-duration-complex-tbdo30, 250ms) var(--motion-easing-responsive-hjj3ai, cubic-bezier(0, 0, 0, 1)) forwards;
|
|
207
207
|
}
|
|
208
208
|
@media (prefers-reduced-motion: reduce) {
|
|
209
|
-
.awsui_direction-button-wrapper-motion-
|
|
209
|
+
.awsui_direction-button-wrapper-motion-exiting_155yk_1t4ar_189:not(#\9) {
|
|
210
210
|
animation: none;
|
|
211
211
|
transition: none;
|
|
212
212
|
}
|
|
213
213
|
}
|
|
214
|
-
.awsui-motion-disabled .awsui_direction-button-wrapper-motion-
|
|
214
|
+
.awsui-motion-disabled .awsui_direction-button-wrapper-motion-exiting_155yk_1t4ar_189:not(#\9), .awsui-mode-entering .awsui_direction-button-wrapper-motion-exiting_155yk_1t4ar_189:not(#\9) {
|
|
215
215
|
animation: none;
|
|
216
216
|
transition: none;
|
|
217
217
|
}
|
|
218
218
|
@media (prefers-reduced-motion: reduce) {
|
|
219
|
-
.awsui_direction-button-
|
|
219
|
+
.awsui_direction-button-wrapper_155yk_1t4ar_169:not(#\9) {
|
|
220
220
|
animation: none;
|
|
221
221
|
transition: none;
|
|
222
222
|
}
|
|
223
223
|
}
|
|
224
|
-
.awsui-motion-disabled .awsui_direction-button-
|
|
224
|
+
.awsui-motion-disabled .awsui_direction-button-wrapper_155yk_1t4ar_169:not(#\9), .awsui-mode-entering .awsui_direction-button-wrapper_155yk_1t4ar_169:not(#\9) {
|
|
225
225
|
animation: none;
|
|
226
226
|
transition: none;
|
|
227
227
|
}
|
|
228
228
|
|
|
229
|
-
.awsui_direction-button-wrapper-block-
|
|
229
|
+
.awsui_direction-button-wrapper-block-start_155yk_1t4ar_229:not(#\9) {
|
|
230
230
|
--awsui-drag-handle-animation-block-offset-vl73au: 20px;
|
|
231
231
|
}
|
|
232
232
|
|
|
233
|
-
.awsui_direction-button-wrapper-block-
|
|
233
|
+
.awsui_direction-button-wrapper-block-end_155yk_1t4ar_233:not(#\9) {
|
|
234
234
|
--awsui-drag-handle-animation-block-offset-vl73au: -20px;
|
|
235
235
|
}
|
|
236
236
|
|
|
237
|
-
.awsui_direction-button-wrapper-inline-
|
|
238
|
-
|
|
237
|
+
.awsui_direction-button-wrapper-inline-start_155yk_1t4ar_237:not(#\9) {
|
|
238
|
+
/* stylelint-disable-next-line plugin/no-unsupported-browser-features */
|
|
239
|
+
/* stylelint-disable-next-line plugin/no-unsupported-browser-features */
|
|
240
|
+
}
|
|
241
|
+
.awsui_direction-button-wrapper-inline-start_155yk_1t4ar_237:not(#\9):dir(ltr) {
|
|
239
242
|
--awsui-drag-handle-animation-inline-offset-vl73au: 20px;
|
|
240
243
|
}
|
|
244
|
+
.awsui_direction-button-wrapper-inline-start_155yk_1t4ar_237:not(#\9):dir(rtl) {
|
|
245
|
+
--awsui-drag-handle-animation-inline-offset-vl73au: -20px;
|
|
246
|
+
}
|
|
241
247
|
|
|
242
|
-
.awsui_direction-button-wrapper-inline-
|
|
243
|
-
|
|
248
|
+
.awsui_direction-button-wrapper-inline-end_155yk_1t4ar_248:not(#\9) {
|
|
249
|
+
/* stylelint-disable-next-line plugin/no-unsupported-browser-features */
|
|
250
|
+
/* stylelint-disable-next-line plugin/no-unsupported-browser-features */
|
|
251
|
+
}
|
|
252
|
+
.awsui_direction-button-wrapper-inline-end_155yk_1t4ar_248:not(#\9):dir(ltr) {
|
|
244
253
|
--awsui-drag-handle-animation-inline-offset-vl73au: -20px;
|
|
245
254
|
}
|
|
255
|
+
.awsui_direction-button-wrapper-inline-end_155yk_1t4ar_248:not(#\9):dir(rtl) {
|
|
256
|
+
--awsui-drag-handle-animation-inline-offset-vl73au: 20px;
|
|
257
|
+
}
|
|
246
258
|
|
|
247
|
-
.
|
|
248
|
-
|
|
249
|
-
display: inline-block;
|
|
259
|
+
.awsui_contents_155yk_1t4ar_259:not(#\9) {
|
|
260
|
+
display: contents;
|
|
250
261
|
}
|
|
251
262
|
|
|
252
|
-
.awsui_portal-
|
|
263
|
+
.awsui_portal-overlay_155yk_1t4ar_263:not(#\9) {
|
|
253
264
|
position: absolute;
|
|
254
265
|
inset-block-start: 0;
|
|
255
266
|
inset-inline-start: 0;
|
|
@@ -257,16 +268,16 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
|
|
|
257
268
|
z-index: 7000;
|
|
258
269
|
}
|
|
259
270
|
|
|
260
|
-
.awsui_portal-overlay-
|
|
271
|
+
.awsui_portal-overlay-contents_155yk_1t4ar_271:not(#\9) {
|
|
261
272
|
pointer-events: auto;
|
|
262
273
|
}
|
|
263
274
|
|
|
264
|
-
.awsui_drag-
|
|
275
|
+
.awsui_drag-handle_155yk_1t4ar_275:not(#\9) {
|
|
265
276
|
position: relative;
|
|
266
|
-
display: flex;
|
|
277
|
+
display: inline-flex;
|
|
267
278
|
}
|
|
268
279
|
|
|
269
|
-
.awsui_direction-button-
|
|
280
|
+
.awsui_direction-button-wrapper_155yk_1t4ar_169:not(#\9) {
|
|
270
281
|
position: absolute;
|
|
271
282
|
block-size: var(--space-static-xl-4tedi6, 24px);
|
|
272
283
|
inline-size: var(--space-static-xl-4tedi6, 24px);
|
|
@@ -274,31 +285,31 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
|
|
|
274
285
|
padding-inline: var(--space-static-xxs-ns94dp, 4px);
|
|
275
286
|
}
|
|
276
287
|
|
|
277
|
-
.awsui_direction-button-wrapper-
|
|
288
|
+
.awsui_direction-button-wrapper-hidden_155yk_1t4ar_288:not(#\9) {
|
|
278
289
|
display: none;
|
|
279
290
|
}
|
|
280
291
|
|
|
281
|
-
.awsui_direction-button-wrapper-block-
|
|
292
|
+
.awsui_direction-button-wrapper-block-start_155yk_1t4ar_229:not(#\9) {
|
|
282
293
|
inset-block-start: calc(-1 * (var(--space-static-xl-4tedi6, 24px) + 2 * var(--space-static-xxs-ns94dp, 4px)));
|
|
283
294
|
inset-inline-start: calc(50% - (var(--space-static-xl-4tedi6, 24px) + 2 * var(--space-static-xxs-ns94dp, 4px)) / 2);
|
|
284
295
|
}
|
|
285
296
|
|
|
286
|
-
.awsui_direction-button-wrapper-block-
|
|
297
|
+
.awsui_direction-button-wrapper-block-end_155yk_1t4ar_233:not(#\9) {
|
|
287
298
|
inset-block-end: calc(-1 * (var(--space-static-xl-4tedi6, 24px) + 2 * var(--space-static-xxs-ns94dp, 4px)));
|
|
288
299
|
inset-inline-start: calc(50% - (var(--space-static-xl-4tedi6, 24px) + 2 * var(--space-static-xxs-ns94dp, 4px)) / 2);
|
|
289
300
|
}
|
|
290
301
|
|
|
291
|
-
.awsui_direction-button-wrapper-inline-
|
|
302
|
+
.awsui_direction-button-wrapper-inline-start_155yk_1t4ar_237:not(#\9) {
|
|
292
303
|
inset-inline-start: calc(-1 * (var(--space-static-xl-4tedi6, 24px) + 2 * var(--space-static-xxs-ns94dp, 4px)));
|
|
293
304
|
inset-block-start: calc(50% - (var(--space-static-xl-4tedi6, 24px) + 2 * var(--space-static-xxs-ns94dp, 4px)) / 2);
|
|
294
305
|
}
|
|
295
306
|
|
|
296
|
-
.awsui_direction-button-wrapper-inline-
|
|
307
|
+
.awsui_direction-button-wrapper-inline-end_155yk_1t4ar_248:not(#\9) {
|
|
297
308
|
inset-inline-end: calc(-1 * (var(--space-static-xl-4tedi6, 24px) + 2 * var(--space-static-xxs-ns94dp, 4px)));
|
|
298
309
|
inset-block-start: calc(50% - (var(--space-static-xl-4tedi6, 24px) + 2 * var(--space-static-xxs-ns94dp, 4px)) / 2);
|
|
299
310
|
}
|
|
300
311
|
|
|
301
|
-
.awsui_direction-
|
|
312
|
+
.awsui_direction-button_155yk_1t4ar_169:not(#\9) {
|
|
302
313
|
position: absolute;
|
|
303
314
|
border-width: 0;
|
|
304
315
|
cursor: pointer;
|
|
@@ -317,14 +328,14 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
|
|
|
317
328
|
color: var(--color-text-direction-button-default-p88lvb, #ffffff);
|
|
318
329
|
box-shadow: var(--shadow-dropdown-isf0w4, 0px 4px 20px 1px rgba(0, 7, 22, 0.1));
|
|
319
330
|
}
|
|
320
|
-
.awsui_direction-
|
|
331
|
+
.awsui_direction-button_155yk_1t4ar_169:not(#\9):not(.awsui_direction-button-disabled_155yk_1t4ar_331):hover {
|
|
321
332
|
background-color: var(--color-background-direction-button-hover-74n5o1, #333843);
|
|
322
333
|
}
|
|
323
|
-
.awsui_direction-
|
|
334
|
+
.awsui_direction-button_155yk_1t4ar_169:not(#\9):not(.awsui_direction-button-disabled_155yk_1t4ar_331):active {
|
|
324
335
|
background-color: var(--color-background-direction-button-active-lvo0dy, #232b37);
|
|
325
336
|
}
|
|
326
337
|
|
|
327
|
-
.awsui_direction-button-
|
|
338
|
+
.awsui_direction-button-disabled_155yk_1t4ar_331:not(#\9) {
|
|
328
339
|
cursor: default;
|
|
329
340
|
background-color: var(--color-background-direction-button-disabled-s9x4zq, #ebebf0);
|
|
330
341
|
color: var(--color-text-direction-button-disabled-2jds36, #b4b4bb);
|
|
@@ -2,26 +2,25 @@
|
|
|
2
2
|
// es-module interop with Babel and Typescript
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
module.exports.default = {
|
|
5
|
-
"direction-button-wrapper": "awsui_direction-button-
|
|
6
|
-
"direction-button-wrapper-motion-enter": "awsui_direction-button-wrapper-motion-
|
|
7
|
-
"direction-button-wrapper-motion-entering": "awsui_direction-button-wrapper-motion-
|
|
8
|
-
"direction-button-wrapper-motion-exit": "awsui_direction-button-wrapper-motion-
|
|
9
|
-
"direction-button-wrapper-motion-exiting": "awsui_direction-button-wrapper-motion-
|
|
10
|
-
"drag-handle-entry": "awsui_drag-handle-
|
|
11
|
-
"awsui-motion-fade-in": "awsui_awsui-motion-fade-
|
|
12
|
-
"drag-handle-exit": "awsui_drag-handle-
|
|
13
|
-
"awsui-motion-fade-out-0": "awsui_awsui-motion-fade-out-
|
|
14
|
-
"direction-button-wrapper-block-start": "awsui_direction-button-wrapper-block-
|
|
15
|
-
"direction-button-wrapper-block-end": "awsui_direction-button-wrapper-block-
|
|
16
|
-
"direction-button-wrapper-inline-start": "awsui_direction-button-wrapper-inline-
|
|
17
|
-
"direction-button-wrapper-inline-end": "awsui_direction-button-wrapper-inline-
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
"portal-overlay": "awsui_portal-
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"direction-button
|
|
24
|
-
"direction-button": "awsui_direction-
|
|
25
|
-
"direction-button-disabled": "awsui_direction-button-disabled_155yk_azra5_320"
|
|
5
|
+
"direction-button-wrapper": "awsui_direction-button-wrapper_155yk_1t4ar_169",
|
|
6
|
+
"direction-button-wrapper-motion-enter": "awsui_direction-button-wrapper-motion-enter_155yk_1t4ar_189",
|
|
7
|
+
"direction-button-wrapper-motion-entering": "awsui_direction-button-wrapper-motion-entering_155yk_1t4ar_189",
|
|
8
|
+
"direction-button-wrapper-motion-exit": "awsui_direction-button-wrapper-motion-exit_155yk_1t4ar_189",
|
|
9
|
+
"direction-button-wrapper-motion-exiting": "awsui_direction-button-wrapper-motion-exiting_155yk_1t4ar_189",
|
|
10
|
+
"drag-handle-entry": "awsui_drag-handle-entry_155yk_1t4ar_1",
|
|
11
|
+
"awsui-motion-fade-in": "awsui_awsui-motion-fade-in_155yk_1t4ar_1",
|
|
12
|
+
"drag-handle-exit": "awsui_drag-handle-exit_155yk_1t4ar_1",
|
|
13
|
+
"awsui-motion-fade-out-0": "awsui_awsui-motion-fade-out-0_155yk_1t4ar_1",
|
|
14
|
+
"direction-button-wrapper-block-start": "awsui_direction-button-wrapper-block-start_155yk_1t4ar_229",
|
|
15
|
+
"direction-button-wrapper-block-end": "awsui_direction-button-wrapper-block-end_155yk_1t4ar_233",
|
|
16
|
+
"direction-button-wrapper-inline-start": "awsui_direction-button-wrapper-inline-start_155yk_1t4ar_237",
|
|
17
|
+
"direction-button-wrapper-inline-end": "awsui_direction-button-wrapper-inline-end_155yk_1t4ar_248",
|
|
18
|
+
"contents": "awsui_contents_155yk_1t4ar_259",
|
|
19
|
+
"portal-overlay": "awsui_portal-overlay_155yk_1t4ar_263",
|
|
20
|
+
"portal-overlay-contents": "awsui_portal-overlay-contents_155yk_1t4ar_271",
|
|
21
|
+
"drag-handle": "awsui_drag-handle_155yk_1t4ar_275",
|
|
22
|
+
"direction-button-wrapper-hidden": "awsui_direction-button-wrapper-hidden_155yk_1t4ar_288",
|
|
23
|
+
"direction-button": "awsui_direction-button_155yk_1t4ar_169",
|
|
24
|
+
"direction-button-disabled": "awsui_direction-button-disabled_155yk_1t4ar_331"
|
|
26
25
|
};
|
|
27
26
|
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
import React from 'react';
|
|
2
2
|
interface HighlightMatchProps {
|
|
3
3
|
str?: string;
|
|
4
4
|
highlightText?: string;
|
|
5
|
+
labelRef?: React.RefObject<HTMLElement>;
|
|
5
6
|
}
|
|
6
7
|
export default function HighlightMatch({
|
|
7
8
|
str,
|
|
8
|
-
highlightText
|
|
9
|
+
highlightText,
|
|
10
|
+
labelRef
|
|
9
11
|
}: HighlightMatchProps): JSX.Element;
|
|
10
12
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"highlight-match.d.ts","sourceRoot":"","sources":["../../../../../src/internal/components/option/highlight-match.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"highlight-match.d.ts","sourceRoot":"","sources":["../../../../../src/internal/components/option/highlight-match.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAoB1B,UAAU,mBAAmB;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;CACzC;AAUD,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,mBAAmB,eAsB3F"}
|
|
@@ -15,15 +15,15 @@ const splitOnFiltering = (str, highlightText) => {
|
|
|
15
15
|
const matches = str.match(regexp);
|
|
16
16
|
return { noMatches, matches };
|
|
17
17
|
};
|
|
18
|
-
function Highlight({ str }) {
|
|
19
|
-
return
|
|
18
|
+
function Highlight({ str, labelRef }) {
|
|
19
|
+
return (React.createElement("mark", { ref: labelRef, className: styles['filtering-match-highlight'] }, str));
|
|
20
20
|
}
|
|
21
|
-
export default function HighlightMatch({ str, highlightText }) {
|
|
21
|
+
export default function HighlightMatch({ str, highlightText, labelRef }) {
|
|
22
22
|
if (!str || !highlightText) {
|
|
23
|
-
return React.createElement("span",
|
|
23
|
+
return React.createElement("span", { ref: labelRef }, str);
|
|
24
24
|
}
|
|
25
25
|
if (str === highlightText) {
|
|
26
|
-
return React.createElement(Highlight, { str: str });
|
|
26
|
+
return React.createElement(Highlight, { labelRef: labelRef, str: str });
|
|
27
27
|
}
|
|
28
28
|
const { noMatches, matches } = splitOnFiltering(str, highlightText);
|
|
29
29
|
const highlighted = [];
|
|
@@ -33,6 +33,6 @@ export default function HighlightMatch({ str, highlightText }) {
|
|
|
33
33
|
highlighted.push(React.createElement(Highlight, { key: `match-${idx}`, str: matches[idx] }));
|
|
34
34
|
}
|
|
35
35
|
});
|
|
36
|
-
return React.createElement("span",
|
|
36
|
+
return React.createElement("span", { ref: labelRef }, highlighted);
|
|
37
37
|
}
|
|
38
38
|
//# sourceMappingURL=highlight-match.js.map
|