@cloudscape-design/components 3.0.27 → 3.0.30
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/alert/internal.d.ts.map +1 -1
- package/alert/internal.js +3 -4
- package/alert/internal.js.map +1 -1
- package/app-layout/index.js +1 -1
- package/app-layout/index.js.map +1 -1
- package/app-layout/visual-refresh/styles.css.js +59 -59
- package/app-layout/visual-refresh/styles.scoped.css +146 -146
- package/app-layout/visual-refresh/styles.selectors.js +59 -59
- package/autosuggest/controller.d.ts +1 -4
- package/autosuggest/controller.d.ts.map +1 -1
- package/autosuggest/controller.js +1 -45
- package/autosuggest/controller.js.map +1 -1
- package/autosuggest/internal.d.ts.map +1 -1
- package/autosuggest/internal.js +16 -23
- package/autosuggest/internal.js.map +1 -1
- package/autosuggest/options-controller.d.ts +22 -0
- package/autosuggest/options-controller.d.ts.map +1 -0
- package/autosuggest/options-controller.js +63 -0
- package/autosuggest/options-controller.js.map +1 -0
- package/autosuggest/options-list.d.ts.map +1 -1
- package/autosuggest/options-list.js +2 -1
- package/autosuggest/options-list.js.map +1 -1
- package/breadcrumb-group/internal.d.ts.map +1 -1
- package/breadcrumb-group/internal.js +4 -4
- package/breadcrumb-group/internal.js.map +1 -1
- package/button-dropdown/category-elements/category-element.d.ts +1 -1
- package/button-dropdown/category-elements/category-element.d.ts.map +1 -1
- package/button-dropdown/category-elements/category-element.js +2 -2
- package/button-dropdown/category-elements/category-element.js.map +1 -1
- package/button-dropdown/category-elements/expandable-category-element.d.ts +1 -1
- package/button-dropdown/category-elements/expandable-category-element.d.ts.map +1 -1
- package/button-dropdown/category-elements/expandable-category-element.js +4 -2
- package/button-dropdown/category-elements/expandable-category-element.js.map +1 -1
- package/button-dropdown/category-elements/mobile-expandable-category-element.d.ts +1 -1
- package/button-dropdown/category-elements/mobile-expandable-category-element.d.ts.map +1 -1
- package/button-dropdown/category-elements/mobile-expandable-category-element.js +4 -2
- package/button-dropdown/category-elements/mobile-expandable-category-element.js.map +1 -1
- package/button-dropdown/category-elements/styles.css.js +13 -12
- package/button-dropdown/category-elements/styles.scoped.css +26 -22
- package/button-dropdown/category-elements/styles.selectors.js +13 -12
- package/button-dropdown/interfaces.d.ts +3 -1
- package/button-dropdown/interfaces.d.ts.map +1 -1
- package/button-dropdown/interfaces.js.map +1 -1
- package/button-dropdown/internal.d.ts.map +1 -1
- package/button-dropdown/internal.js +6 -11
- package/button-dropdown/internal.js.map +1 -1
- package/button-dropdown/item-element/index.d.ts +1 -1
- package/button-dropdown/item-element/index.d.ts.map +1 -1
- package/button-dropdown/item-element/index.js +2 -1
- package/button-dropdown/item-element/index.js.map +1 -1
- package/button-dropdown/item-element/styles.css.js +14 -13
- package/button-dropdown/item-element/styles.scoped.css +21 -17
- package/button-dropdown/item-element/styles.selectors.js +14 -13
- package/button-dropdown/items-list.d.ts +1 -1
- package/button-dropdown/items-list.d.ts.map +1 -1
- package/button-dropdown/items-list.js +4 -4
- package/button-dropdown/items-list.js.map +1 -1
- package/button-dropdown/utils/use-button-dropdown.d.ts +2 -2
- package/button-dropdown/utils/use-button-dropdown.d.ts.map +1 -1
- package/button-dropdown/utils/use-button-dropdown.js +7 -5
- package/button-dropdown/utils/use-button-dropdown.js.map +1 -1
- package/button-dropdown/utils/use-highlighted-menu.d.ts +1 -0
- package/button-dropdown/utils/use-highlighted-menu.d.ts.map +1 -1
- package/button-dropdown/utils/use-highlighted-menu.js +11 -3
- package/button-dropdown/utils/use-highlighted-menu.js.map +1 -1
- package/cards/index.js +1 -1
- package/cards/index.js.map +1 -1
- package/checkbox/styles.css.js +3 -3
- package/checkbox/styles.scoped.css +6 -6
- package/checkbox/styles.selectors.js +3 -3
- package/code-editor/index.d.ts.map +1 -1
- package/code-editor/index.js +2 -3
- package/code-editor/index.js.map +1 -1
- package/container/internal.js +1 -1
- package/container/internal.js.map +1 -1
- package/container/use-sticky-header.js +1 -1
- package/container/use-sticky-header.js.map +1 -1
- package/date-picker/calendar/index.d.ts.map +1 -1
- package/date-picker/calendar/index.js +2 -1
- package/date-picker/calendar/index.js.map +1 -1
- package/date-picker/calendar/utils/memoized-date.d.ts +2 -0
- package/date-picker/calendar/utils/memoized-date.d.ts.map +1 -0
- package/date-picker/calendar/utils/memoized-date.js +13 -0
- package/date-picker/calendar/utils/memoized-date.js.map +1 -0
- package/date-picker/embedded.js +1 -1
- package/date-picker/embedded.js.map +1 -1
- package/date-picker/index.js +1 -1
- package/date-picker/index.js.map +1 -1
- package/date-picker/use-date-picker.d.ts.map +1 -1
- package/date-picker/use-date-picker.js +1 -1
- package/date-picker/use-date-picker.js.map +1 -1
- package/date-range-picker/calendar/grids/day/index.js +1 -1
- package/date-range-picker/calendar/grids/day/index.js.map +1 -1
- package/date-range-picker/calendar/index.d.ts.map +1 -1
- package/date-range-picker/calendar/index.js +3 -3
- package/date-range-picker/calendar/index.js.map +1 -1
- package/date-range-picker/dropdown.d.ts +1 -0
- package/date-range-picker/dropdown.d.ts.map +1 -1
- package/date-range-picker/dropdown.js +18 -30
- package/date-range-picker/dropdown.js.map +1 -1
- package/date-range-picker/embedded.d.ts +7 -0
- package/date-range-picker/embedded.d.ts.map +1 -0
- package/date-range-picker/embedded.js +46 -0
- package/date-range-picker/embedded.js.map +1 -0
- package/date-range-picker/index.d.ts.map +1 -1
- package/date-range-picker/index.js +5 -18
- package/date-range-picker/index.js.map +1 -1
- package/date-range-picker/interfaces.d.ts +46 -44
- package/date-range-picker/interfaces.d.ts.map +1 -1
- package/date-range-picker/interfaces.js.map +1 -1
- package/date-range-picker/time-offset.d.ts +0 -7
- package/date-range-picker/time-offset.d.ts.map +1 -1
- package/date-range-picker/time-offset.js +4 -60
- package/date-range-picker/time-offset.js.map +1 -1
- package/date-range-picker/use-date-range-picker.d.ts +29 -0
- package/date-range-picker/use-date-range-picker.d.ts.map +1 -0
- package/date-range-picker/use-date-range-picker.js +58 -0
- package/date-range-picker/use-date-range-picker.js.map +1 -0
- package/flashbar/index.js +1 -1
- package/flashbar/index.js.map +1 -1
- package/form-field/internal.d.ts.map +1 -1
- package/form-field/internal.js +3 -6
- package/form-field/internal.js.map +1 -1
- package/header/internal.d.ts.map +1 -1
- package/header/internal.js +3 -6
- package/header/internal.js.map +1 -1
- package/icon/icons.js +1 -1
- package/icon/interfaces.d.ts +1 -1
- package/icon/interfaces.d.ts.map +1 -1
- package/icon/interfaces.js.map +1 -1
- package/icon/internal.js +1 -1
- package/icon/internal.js.map +1 -1
- package/input/styles.css.js +13 -13
- package/input/styles.scoped.css +35 -37
- package/input/styles.selectors.js +13 -13
- package/internal/components/abstract-switch/index.d.ts.map +1 -1
- package/internal/components/abstract-switch/index.js +5 -5
- package/internal/components/abstract-switch/index.js.map +1 -1
- package/internal/components/abstract-switch/styles.css.js +11 -11
- package/internal/components/abstract-switch/styles.scoped.css +20 -13
- package/internal/components/abstract-switch/styles.selectors.js +11 -11
- package/internal/components/checkbox-icon/index.d.ts.map +1 -1
- package/internal/components/checkbox-icon/index.js +3 -4
- package/internal/components/checkbox-icon/index.js.map +1 -1
- package/internal/components/content-layout/index.d.ts.map +1 -1
- package/internal/components/content-layout/index.js +3 -4
- package/internal/components/content-layout/index.js.map +1 -1
- package/internal/components/date-input/index.d.ts.map +1 -1
- package/internal/components/date-input/index.js +3 -2
- package/internal/components/date-input/index.js.map +1 -1
- package/internal/components/dropdown/index.js +1 -1
- package/internal/components/dropdown/index.js.map +1 -1
- package/internal/components/masked-input/utils/mask-format.d.ts.map +1 -1
- package/internal/components/masked-input/utils/mask-format.js +2 -1
- package/internal/components/masked-input/utils/mask-format.js.map +1 -1
- package/internal/components/masked-input/utils/strings.d.ts +0 -1
- package/internal/components/masked-input/utils/strings.d.ts.map +1 -1
- package/internal/components/masked-input/utils/strings.js +0 -6
- package/internal/components/masked-input/utils/strings.js.map +1 -1
- package/internal/environment.js +1 -1
- package/internal/hooks/use-mutation-observer/index.d.ts +5 -0
- package/internal/hooks/use-mutation-observer/index.d.ts.map +1 -1
- package/internal/hooks/use-mutation-observer/index.js +5 -0
- package/internal/hooks/use-mutation-observer/index.js.map +1 -1
- package/internal/hooks/use-portal-mode-classes/index.js +1 -1
- package/internal/hooks/use-portal-mode-classes/index.js.map +1 -1
- package/internal/hooks/use-singleton-handler/index.d.ts +2 -1
- package/internal/hooks/use-singleton-handler/index.d.ts.map +1 -1
- package/internal/hooks/use-singleton-handler/index.js.map +1 -1
- package/internal/hooks/use-visual-mode/index.d.ts +1 -1
- package/internal/hooks/use-visual-mode/index.d.ts.map +1 -1
- package/internal/hooks/use-visual-mode/index.js +16 -11
- package/internal/hooks/use-visual-mode/index.js.map +1 -1
- package/internal/utils/date-time/display-format.d.ts +9 -0
- package/internal/utils/date-time/display-format.d.ts.map +1 -0
- package/internal/utils/date-time/display-format.js +15 -0
- package/internal/utils/date-time/display-format.js.map +1 -0
- package/internal/utils/date-time/format-date.d.ts +7 -0
- package/internal/utils/date-time/format-date.d.ts.map +1 -0
- package/internal/utils/date-time/format-date.js +15 -0
- package/internal/utils/date-time/format-date.js.map +1 -0
- package/internal/utils/date-time/format-time.d.ts +5 -0
- package/internal/utils/date-time/format-time.d.ts.map +1 -0
- package/internal/utils/date-time/format-time.js +13 -0
- package/internal/utils/date-time/format-time.js.map +1 -0
- package/internal/utils/date-time/format-timezone-offset.d.ts +2 -0
- package/internal/utils/date-time/format-timezone-offset.d.ts.map +1 -0
- package/internal/utils/date-time/format-timezone-offset.js +11 -0
- package/internal/utils/date-time/format-timezone-offset.js.map +1 -0
- package/internal/utils/date-time/get-browser-timezone-offset.d.ts +7 -0
- package/internal/utils/date-time/get-browser-timezone-offset.d.ts.map +1 -0
- package/internal/utils/date-time/get-browser-timezone-offset.js +11 -0
- package/internal/utils/date-time/get-browser-timezone-offset.js.map +1 -0
- package/internal/utils/date-time/index.d.ts +11 -0
- package/internal/utils/date-time/index.d.ts.map +1 -0
- package/internal/utils/date-time/index.js +13 -0
- package/internal/utils/date-time/index.js.map +1 -0
- package/internal/utils/date-time/is-iso-date-only.d.ts +5 -0
- package/internal/utils/date-time/is-iso-date-only.d.ts.map +1 -0
- package/internal/utils/date-time/is-iso-date-only.js +10 -0
- package/internal/utils/date-time/is-iso-date-only.js.map +1 -0
- package/internal/utils/date-time/join-date-time.d.ts +2 -0
- package/internal/utils/date-time/join-date-time.d.ts.map +1 -0
- package/internal/utils/date-time/join-date-time.js +6 -0
- package/internal/utils/date-time/join-date-time.js.map +1 -0
- package/internal/utils/date-time/parse-date.d.ts +8 -0
- package/internal/utils/date-time/parse-date.d.ts.map +1 -0
- package/internal/utils/date-time/parse-date.js +16 -0
- package/internal/utils/date-time/parse-date.js.map +1 -0
- package/internal/utils/date-time/parse-timezone-offset.d.ts +5 -0
- package/internal/utils/date-time/parse-timezone-offset.d.ts.map +1 -0
- package/internal/utils/date-time/parse-timezone-offset.js +20 -0
- package/internal/utils/date-time/parse-timezone-offset.js.map +1 -0
- package/internal/utils/date-time/shift-timezone-offset.d.ts +12 -0
- package/internal/utils/date-time/shift-timezone-offset.d.ts.map +1 -0
- package/internal/utils/date-time/shift-timezone-offset.js +27 -0
- package/internal/utils/date-time/shift-timezone-offset.js.map +1 -0
- package/internal/utils/strings/index.d.ts +3 -0
- package/internal/utils/strings/index.d.ts.map +1 -0
- package/internal/utils/strings/index.js +5 -0
- package/internal/utils/strings/index.js.map +1 -0
- package/internal/utils/strings/join-strings.d.ts +5 -0
- package/internal/utils/strings/join-strings.d.ts.map +1 -0
- package/internal/utils/{strings.js → strings/join-strings.js} +7 -6
- package/internal/utils/strings/join-strings.js.map +1 -0
- package/internal/utils/strings/pad-left-zeros.d.ts +5 -0
- package/internal/utils/strings/pad-left-zeros.d.ts.map +1 -0
- package/internal/utils/strings/pad-left-zeros.js +12 -0
- package/internal/utils/strings/pad-left-zeros.js.map +1 -0
- package/link/internal.js +3 -3
- package/link/internal.js.map +1 -1
- package/link/styles.css.js +19 -18
- package/link/styles.scoped.css +73 -69
- package/link/styles.selectors.js +19 -18
- package/mixed-line-bar-chart/bar-series.d.ts.map +1 -1
- package/mixed-line-bar-chart/bar-series.js +3 -4
- package/mixed-line-bar-chart/bar-series.js.map +1 -1
- package/mixed-line-bar-chart/chart-container.js +1 -1
- package/mixed-line-bar-chart/chart-container.js.map +1 -1
- package/mixed-line-bar-chart/interfaces.d.ts +5 -4
- package/mixed-line-bar-chart/interfaces.d.ts.map +1 -1
- package/mixed-line-bar-chart/interfaces.js.map +1 -1
- package/modal/internal.js +1 -1
- package/modal/internal.js.map +1 -1
- package/package.json +1 -1
- package/pie-chart/pie-chart.d.ts.map +1 -1
- package/pie-chart/pie-chart.js +2 -2
- package/pie-chart/pie-chart.js.map +1 -1
- package/pie-chart/segments.d.ts +1 -2
- package/pie-chart/segments.d.ts.map +1 -1
- package/pie-chart/segments.js +2 -2
- package/pie-chart/segments.js.map +1 -1
- package/popover/container.js +1 -1
- package/popover/container.js.map +1 -1
- package/popover/styles.css.js +48 -48
- package/popover/styles.scoped.css +65 -60
- package/popover/styles.selectors.js +48 -48
- package/property-filter/index.d.ts.map +1 -1
- package/property-filter/index.js +10 -2
- package/property-filter/index.js.map +1 -1
- package/radio-group/radio-button.d.ts.map +1 -1
- package/radio-group/radio-button.js +3 -4
- package/radio-group/radio-button.js.map +1 -1
- package/radio-group/styles.css.js +9 -9
- package/radio-group/styles.scoped.css +16 -16
- package/radio-group/styles.selectors.js +9 -9
- package/s3-resource-selector/s3-modal/index.d.ts.map +1 -1
- package/s3-resource-selector/s3-modal/index.js +2 -3
- package/s3-resource-selector/s3-modal/index.js.map +1 -1
- package/split-panel/index.d.ts.map +1 -1
- package/split-panel/index.js +2 -2
- package/split-panel/index.js.map +1 -1
- package/table/internal.js +1 -1
- package/table/internal.js.map +1 -1
- package/table/sticky-scrollbar.js +1 -1
- package/table/sticky-scrollbar.js.map +1 -1
- package/table/styles.css.js +32 -32
- package/table/styles.scoped.css +40 -43
- package/table/styles.selectors.js +32 -32
- package/tabs/styles.css.js +21 -21
- package/tabs/styles.scoped.css +40 -43
- package/tabs/styles.selectors.js +21 -21
- package/tabs/tab-header-bar.js +1 -1
- package/tabs/tab-header-bar.js.map +1 -1
- package/textarea/styles.css.js +4 -4
- package/textarea/styles.scoped.css +13 -14
- package/textarea/styles.selectors.js +4 -4
- package/toggle/internal.d.ts.map +1 -1
- package/toggle/internal.js +3 -1
- package/toggle/internal.js.map +1 -1
- package/toggle/styles.css.js +8 -8
- package/toggle/styles.scoped.css +15 -14
- package/toggle/styles.selectors.js +8 -8
- package/tutorial-panel/components/tutorial-detail-view/index.d.ts.map +1 -1
- package/tutorial-panel/components/tutorial-detail-view/index.js +3 -4
- package/tutorial-panel/components/tutorial-detail-view/index.js.map +1 -1
- package/tutorial-panel/components/tutorial-list/index.d.ts.map +1 -1
- package/tutorial-panel/components/tutorial-list/index.js +5 -7
- package/tutorial-panel/components/tutorial-list/index.js.map +1 -1
- package/wizard/index.d.ts.map +1 -1
- package/wizard/index.js +2 -3
- package/wizard/index.js.map +1 -1
- package/date-picker/calendar/utils/date.d.ts +0 -10
- package/date-picker/calendar/utils/date.d.ts.map +0 -1
- package/date-picker/calendar/utils/date.js +0 -50
- package/date-picker/calendar/utils/date.js.map +0 -1
- package/internal/components/date-input/utils/date.d.ts +0 -5
- package/internal/components/date-input/utils/date.d.ts.map +0 -1
- package/internal/components/date-input/utils/date.js +0 -11
- package/internal/components/date-input/utils/date.js.map +0 -1
- package/internal/utils/strings.d.ts +0 -2
- package/internal/utils/strings.d.ts.map +0 -1
- package/internal/utils/strings.js.map +0 -1
|
@@ -19,7 +19,6 @@ import { checkSafeUrl } from '../internal/utils/check-safe-url';
|
|
|
19
19
|
var InternalButtonDropdown = React.forwardRef(function (_a, ref) {
|
|
20
20
|
var items = _a.items, _b = _a.variant, variant = _b === void 0 ? 'normal' : _b, _c = _a.loading, loading = _c === void 0 ? false : _c, _d = _a.disabled, disabled = _d === void 0 ? false : _d, _e = _a.expandableGroups, expandableGroups = _e === void 0 ? false : _e, children = _a.children, onItemClick = _a.onItemClick, onItemFollow = _a.onItemFollow, customTriggerBuilder = _a.customTriggerBuilder, expandToViewport = _a.expandToViewport, ariaLabel = _a.ariaLabel, title = _a.title, description = _a.description, preferCenter = _a.preferCenter, __internalRootRef = _a.__internalRootRef, props = __rest(_a, ["items", "variant", "loading", "disabled", "expandableGroups", "children", "onItemClick", "onItemFollow", "customTriggerBuilder", "expandToViewport", "ariaLabel", "title", "description", "preferCenter", "__internalRootRef"]);
|
|
21
21
|
var isInRestrictedView = useMobile();
|
|
22
|
-
var usingMouse = useRef(true);
|
|
23
22
|
var dropdownId = useUniqueId('dropdown');
|
|
24
23
|
for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {
|
|
25
24
|
var item = items_1[_i];
|
|
@@ -30,19 +29,15 @@ var InternalButtonDropdown = React.forwardRef(function (_a, ref) {
|
|
|
30
29
|
onItemClick: onItemClick,
|
|
31
30
|
onItemFollow: onItemFollow,
|
|
32
31
|
hasExpandableGroups: expandableGroups,
|
|
33
|
-
isInRestrictedView: isInRestrictedView
|
|
34
|
-
|
|
35
|
-
}), isOpen = _f.isOpen, targetItem = _f.targetItem, isHighlighted = _f.isHighlighted, isExpanded = _f.isExpanded, highlightItem = _f.highlightItem, onKeyDown = _f.onKeyDown, onKeyUp = _f.onKeyUp, onItemActivate = _f.onItemActivate, onGroupToggle = _f.onGroupToggle, toggleDropdown = _f.toggleDropdown;
|
|
32
|
+
isInRestrictedView: isInRestrictedView
|
|
33
|
+
}), isOpen = _f.isOpen, targetItem = _f.targetItem, isHighlighted = _f.isHighlighted, isKeyboardHighlight = _f.isKeyboardHighlight, isExpanded = _f.isExpanded, highlightItem = _f.highlightItem, onKeyDown = _f.onKeyDown, onKeyUp = _f.onKeyUp, onItemActivate = _f.onItemActivate, onGroupToggle = _f.onGroupToggle, toggleDropdown = _f.toggleDropdown, setIsUsingMouse = _f.setIsUsingMouse;
|
|
36
34
|
var handleMouseEvent = function () {
|
|
37
|
-
|
|
35
|
+
setIsUsingMouse(true);
|
|
38
36
|
};
|
|
39
37
|
var baseProps = getBaseProps(props);
|
|
40
38
|
var dropdownRef = useRef(null);
|
|
41
39
|
useForwardFocus(ref, dropdownRef);
|
|
42
40
|
var clickHandler = function () {
|
|
43
|
-
if (!usingMouse.current) {
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
41
|
if (!loading && !disabled) {
|
|
47
42
|
toggleDropdown();
|
|
48
43
|
if (dropdownRef.current) {
|
|
@@ -67,13 +62,13 @@ var InternalButtonDropdown = React.forwardRef(function (_a, ref) {
|
|
|
67
62
|
iconAlign: 'right',
|
|
68
63
|
__iconClass: canBeOpened && isOpen ? styles['rotate-up'] : styles['rotate-down']
|
|
69
64
|
};
|
|
70
|
-
var trigger = customTriggerBuilder ? (customTriggerBuilder(clickHandler, dropdownRef, disabled, isOpen)) : (React.createElement(InternalButton, __assign({ ref: dropdownRef }, iconProps, { variant: triggerVariant, loading: loading, disabled: disabled, onClick: function (event) {
|
|
65
|
+
var trigger = customTriggerBuilder ? (customTriggerBuilder(clickHandler, dropdownRef, disabled, isOpen, ariaLabel)) : (React.createElement(InternalButton, __assign({ ref: dropdownRef }, iconProps, { variant: triggerVariant, loading: loading, disabled: disabled, onClick: function (event) {
|
|
71
66
|
event.preventDefault();
|
|
72
67
|
clickHandler();
|
|
73
68
|
}, ariaLabel: ariaLabel, "aria-haspopup": true, ariaExpanded: canBeOpened && isOpen, formAction: "none" }), children));
|
|
74
69
|
var hasHeader = title || description;
|
|
75
70
|
var headerId = useUniqueId('awsui-button-dropdown__header');
|
|
76
|
-
return (React.createElement("div", __assign({}, baseProps, { onKeyDown: onKeyDown, onKeyUp: onKeyUp, onMouseDown: handleMouseEvent, className: clsx(styles['button-dropdown'], styles["variant-".concat(variant)], baseProps.className), "aria-owns": expandToViewport && isOpen ? dropdownId : undefined, ref: __internalRootRef }),
|
|
71
|
+
return (React.createElement("div", __assign({}, baseProps, { onKeyDown: onKeyDown, onKeyUp: onKeyUp, onMouseDown: handleMouseEvent, onMouseMove: handleMouseEvent, className: clsx(styles['button-dropdown'], styles["variant-".concat(variant)], baseProps.className), "aria-owns": expandToViewport && isOpen ? dropdownId : undefined, ref: __internalRootRef }),
|
|
77
72
|
React.createElement(Dropdown, { open: canBeOpened && isOpen, stretchWidth: false, stretchTriggerHeight: variant === 'navigation', expandToViewport: expandToViewport, preferCenter: preferCenter, onDropdownClose: function () {
|
|
78
73
|
toggleDropdown();
|
|
79
74
|
}, trigger: trigger, dropdownId: dropdownId },
|
|
@@ -83,7 +78,7 @@ var InternalButtonDropdown = React.forwardRef(function (_a, ref) {
|
|
|
83
78
|
description && (React.createElement(InternalBox, { fontSize: "body-s" },
|
|
84
79
|
React.createElement("span", { className: styles.description }, description))))),
|
|
85
80
|
React.createElement(OptionsList, { open: canBeOpened && isOpen, position: "static", role: "menu", decreaseTopMargin: true, ariaLabelledby: hasHeader ? headerId : undefined },
|
|
86
|
-
React.createElement(ItemsList, { items: items, onItemActivate: onItemActivate, onGroupToggle: onGroupToggle, hasExpandableGroups: expandableGroups, targetItem: targetItem, isHighlighted: isHighlighted, isExpanded: isExpanded, highlightItem: highlightItem, expandToViewport: expandToViewport, variant: variant })))));
|
|
81
|
+
React.createElement(ItemsList, { items: items, onItemActivate: onItemActivate, onGroupToggle: onGroupToggle, hasExpandableGroups: expandableGroups, targetItem: targetItem, isHighlighted: isHighlighted, isKeyboardHighlight: isKeyboardHighlight, isExpanded: isExpanded, highlightItem: highlightItem, expandToViewport: expandToViewport, variant: variant })))));
|
|
87
82
|
});
|
|
88
83
|
export default InternalButtonDropdown;
|
|
89
84
|
//# sourceMappingURL=internal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/button-dropdown/internal.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\nimport React, { useEffect, useRef } from 'react';\nimport clsx from 'clsx';\nimport styles from './styles.css.js';\nimport { ButtonDropdownProps, InternalButtonDropdownProps } from './interfaces';\nimport { getBaseProps } from '../internal/base-component';\nimport { useUniqueId } from '../internal/hooks/use-unique-id';\nimport Dropdown from '../internal/components/dropdown';\nimport ItemsList from './items-list';\nimport { useButtonDropdown } from './utils/use-button-dropdown';\nimport OptionsList from '../internal/components/options-list';\nimport { InternalButton } from '../button/internal';\nimport { ButtonProps } from '../button/interfaces';\nimport { useMobile } from '../internal/hooks/use-mobile';\nimport useForwardFocus from '../internal/hooks/forward-focus';\nimport { usePrevious } from '../internal/hooks/use-previous';\nimport InternalBox from '../box/internal';\nimport { checkSafeUrl } from '../internal/utils/check-safe-url';\n\nconst InternalButtonDropdown = React.forwardRef(\n (\n {\n items,\n variant = 'normal',\n loading = false,\n disabled = false,\n expandableGroups = false,\n children,\n onItemClick,\n onItemFollow,\n customTriggerBuilder,\n expandToViewport,\n ariaLabel,\n title,\n description,\n preferCenter,\n __internalRootRef,\n ...props\n }: InternalButtonDropdownProps,\n ref: React.Ref<ButtonDropdownProps.Ref>\n ) => {\n const isInRestrictedView = useMobile();\n const usingMouse = useRef(true);\n const dropdownId = useUniqueId('dropdown');\n for (const item of items) {\n checkSafeUrl('ButtonDropdown', item.href);\n }\n\n const {\n isOpen,\n targetItem,\n isHighlighted,\n isExpanded,\n highlightItem,\n onKeyDown,\n onKeyUp,\n onItemActivate,\n onGroupToggle,\n toggleDropdown,\n } = useButtonDropdown({\n items,\n onItemClick,\n onItemFollow,\n hasExpandableGroups: expandableGroups,\n isInRestrictedView,\n usingMouse,\n });\n\n const handleMouseEvent = () => {\n usingMouse.current = true;\n };\n\n const baseProps = getBaseProps(props);\n\n const dropdownRef = useRef<HTMLElement>(null);\n useForwardFocus(ref, dropdownRef);\n\n const clickHandler = () => {\n if (!usingMouse.current) {\n return;\n }\n if (!loading && !disabled) {\n toggleDropdown();\n if (dropdownRef.current) {\n dropdownRef.current.focus();\n }\n }\n };\n\n const canBeOpened = !loading && !disabled;\n const wasOpen = usePrevious(isOpen);\n\n useEffect(() => {\n if (!isOpen && dropdownRef.current && wasOpen) {\n dropdownRef.current.focus();\n }\n }, [isOpen, wasOpen]);\n\n const triggerVariant = variant === 'navigation' ? undefined : variant;\n const iconProps: Partial<ButtonProps & { __iconClass?: string }> =\n variant === 'icon'\n ? {\n iconName: 'ellipsis',\n }\n : {\n iconName: 'caret-down-filled',\n iconAlign: 'right',\n __iconClass: canBeOpened && isOpen ? styles['rotate-up'] : styles['rotate-down'],\n };\n\n const trigger = customTriggerBuilder ? (\n customTriggerBuilder(clickHandler, dropdownRef, disabled, isOpen)\n ) : (\n <InternalButton\n ref={dropdownRef}\n {...iconProps}\n variant={triggerVariant}\n loading={loading}\n disabled={disabled}\n onClick={(event: Event) => {\n event.preventDefault();\n clickHandler();\n }}\n ariaLabel={ariaLabel}\n aria-haspopup={true}\n ariaExpanded={canBeOpened && isOpen}\n formAction=\"none\"\n >\n {children}\n </InternalButton>\n );\n\n const hasHeader = title || description;\n const headerId = useUniqueId('awsui-button-dropdown__header');\n\n return (\n <div\n {...baseProps}\n onKeyDown={onKeyDown}\n onKeyUp={onKeyUp}\n onMouseDown={handleMouseEvent}\n className={clsx(styles['button-dropdown'], styles[`variant-${variant}`], baseProps.className)}\n aria-owns={expandToViewport && isOpen ? dropdownId : undefined}\n ref={__internalRootRef}\n >\n <Dropdown\n open={canBeOpened && isOpen}\n stretchWidth={false}\n stretchTriggerHeight={variant === 'navigation'}\n expandToViewport={expandToViewport}\n preferCenter={preferCenter}\n onDropdownClose={() => {\n toggleDropdown();\n }}\n trigger={trigger}\n dropdownId={dropdownId}\n >\n {hasHeader && (\n <div className={styles.header} id={headerId}>\n {title && (\n <InternalBox fontSize=\"heading-s\" fontWeight=\"bold\">\n <span className={styles.title}>{title}</span>\n </InternalBox>\n )}\n {description && (\n <InternalBox fontSize=\"body-s\">\n <span className={styles.description}>{description}</span>\n </InternalBox>\n )}\n </div>\n )}\n <OptionsList\n open={canBeOpened && isOpen}\n position=\"static\"\n role=\"menu\"\n decreaseTopMargin={true}\n ariaLabelledby={hasHeader ? headerId : undefined}\n >\n <ItemsList\n items={items}\n onItemActivate={onItemActivate}\n onGroupToggle={onGroupToggle}\n hasExpandableGroups={expandableGroups}\n targetItem={targetItem}\n isHighlighted={isHighlighted}\n isExpanded={isExpanded}\n highlightItem={highlightItem}\n expandToViewport={expandToViewport}\n variant={variant}\n />\n </OptionsList>\n </Dropdown>\n </div>\n );\n }\n);\n\nexport default InternalButtonDropdown;\n"]}
|
|
1
|
+
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/button-dropdown/internal.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\nimport React, { useEffect, useRef } from 'react';\nimport clsx from 'clsx';\nimport styles from './styles.css.js';\nimport { ButtonDropdownProps, InternalButtonDropdownProps } from './interfaces';\nimport { getBaseProps } from '../internal/base-component';\nimport { useUniqueId } from '../internal/hooks/use-unique-id';\nimport Dropdown from '../internal/components/dropdown';\nimport ItemsList from './items-list';\nimport { useButtonDropdown } from './utils/use-button-dropdown';\nimport OptionsList from '../internal/components/options-list';\nimport { InternalButton } from '../button/internal';\nimport { ButtonProps } from '../button/interfaces';\nimport { useMobile } from '../internal/hooks/use-mobile';\nimport useForwardFocus from '../internal/hooks/forward-focus';\nimport { usePrevious } from '../internal/hooks/use-previous';\nimport InternalBox from '../box/internal';\nimport { checkSafeUrl } from '../internal/utils/check-safe-url';\n\nconst InternalButtonDropdown = React.forwardRef(\n (\n {\n items,\n variant = 'normal',\n loading = false,\n disabled = false,\n expandableGroups = false,\n children,\n onItemClick,\n onItemFollow,\n customTriggerBuilder,\n expandToViewport,\n ariaLabel,\n title,\n description,\n preferCenter,\n __internalRootRef,\n ...props\n }: InternalButtonDropdownProps,\n ref: React.Ref<ButtonDropdownProps.Ref>\n ) => {\n const isInRestrictedView = useMobile();\n const dropdownId = useUniqueId('dropdown');\n for (const item of items) {\n checkSafeUrl('ButtonDropdown', item.href);\n }\n\n const {\n isOpen,\n targetItem,\n isHighlighted,\n isKeyboardHighlight,\n isExpanded,\n highlightItem,\n onKeyDown,\n onKeyUp,\n onItemActivate,\n onGroupToggle,\n toggleDropdown,\n setIsUsingMouse,\n } = useButtonDropdown({\n items,\n onItemClick,\n onItemFollow,\n hasExpandableGroups: expandableGroups,\n isInRestrictedView,\n });\n\n const handleMouseEvent = () => {\n setIsUsingMouse(true);\n };\n\n const baseProps = getBaseProps(props);\n\n const dropdownRef = useRef<HTMLElement>(null);\n useForwardFocus(ref, dropdownRef);\n\n const clickHandler = () => {\n if (!loading && !disabled) {\n toggleDropdown();\n if (dropdownRef.current) {\n dropdownRef.current.focus();\n }\n }\n };\n\n const canBeOpened = !loading && !disabled;\n const wasOpen = usePrevious(isOpen);\n\n useEffect(() => {\n if (!isOpen && dropdownRef.current && wasOpen) {\n dropdownRef.current.focus();\n }\n }, [isOpen, wasOpen]);\n\n const triggerVariant = variant === 'navigation' ? undefined : variant;\n const iconProps: Partial<ButtonProps & { __iconClass?: string }> =\n variant === 'icon'\n ? {\n iconName: 'ellipsis',\n }\n : {\n iconName: 'caret-down-filled',\n iconAlign: 'right',\n __iconClass: canBeOpened && isOpen ? styles['rotate-up'] : styles['rotate-down'],\n };\n\n const trigger = customTriggerBuilder ? (\n customTriggerBuilder(clickHandler, dropdownRef, disabled, isOpen, ariaLabel)\n ) : (\n <InternalButton\n ref={dropdownRef}\n {...iconProps}\n variant={triggerVariant}\n loading={loading}\n disabled={disabled}\n onClick={(event: Event) => {\n event.preventDefault();\n clickHandler();\n }}\n ariaLabel={ariaLabel}\n aria-haspopup={true}\n ariaExpanded={canBeOpened && isOpen}\n formAction=\"none\"\n >\n {children}\n </InternalButton>\n );\n\n const hasHeader = title || description;\n const headerId = useUniqueId('awsui-button-dropdown__header');\n\n return (\n <div\n {...baseProps}\n onKeyDown={onKeyDown}\n onKeyUp={onKeyUp}\n onMouseDown={handleMouseEvent}\n onMouseMove={handleMouseEvent}\n className={clsx(styles['button-dropdown'], styles[`variant-${variant}`], baseProps.className)}\n aria-owns={expandToViewport && isOpen ? dropdownId : undefined}\n ref={__internalRootRef}\n >\n <Dropdown\n open={canBeOpened && isOpen}\n stretchWidth={false}\n stretchTriggerHeight={variant === 'navigation'}\n expandToViewport={expandToViewport}\n preferCenter={preferCenter}\n onDropdownClose={() => {\n toggleDropdown();\n }}\n trigger={trigger}\n dropdownId={dropdownId}\n >\n {hasHeader && (\n <div className={styles.header} id={headerId}>\n {title && (\n <InternalBox fontSize=\"heading-s\" fontWeight=\"bold\">\n <span className={styles.title}>{title}</span>\n </InternalBox>\n )}\n {description && (\n <InternalBox fontSize=\"body-s\">\n <span className={styles.description}>{description}</span>\n </InternalBox>\n )}\n </div>\n )}\n <OptionsList\n open={canBeOpened && isOpen}\n position=\"static\"\n role=\"menu\"\n decreaseTopMargin={true}\n ariaLabelledby={hasHeader ? headerId : undefined}\n >\n <ItemsList\n items={items}\n onItemActivate={onItemActivate}\n onGroupToggle={onGroupToggle}\n hasExpandableGroups={expandableGroups}\n targetItem={targetItem}\n isHighlighted={isHighlighted}\n isKeyboardHighlight={isKeyboardHighlight}\n isExpanded={isExpanded}\n highlightItem={highlightItem}\n expandToViewport={expandToViewport}\n variant={variant}\n />\n </OptionsList>\n </Dropdown>\n </div>\n );\n }\n);\n\nexport default InternalButtonDropdown;\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { ItemProps } from '../interfaces';
|
|
2
|
-
declare const ItemElement: ({ item, disabled, onItemActivate, highlighted, highlightItem, first, last, hasCategoryHeader, variant, }: ItemProps) => JSX.Element;
|
|
2
|
+
declare const ItemElement: ({ item, disabled, onItemActivate, highlighted, highlightItem, first, last, hasCategoryHeader, isKeyboardHighlighted, variant, }: ItemProps) => JSX.Element;
|
|
3
3
|
export default ItemElement;
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/button-dropdown/item-element/index.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAY1C,QAAA,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/button-dropdown/item-element/index.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAY1C,QAAA,MAAM,WAAW,oIAWd,SAAS,gBAuCX,CAAC;AAkFF,eAAe,WAAW,CAAC"}
|
|
@@ -13,7 +13,7 @@ import { useDropdownContext } from '../../internal/components/dropdown/context';
|
|
|
13
13
|
import { getMenuItemProps } from '../utils/menu-item';
|
|
14
14
|
var ItemElement = function (_a) {
|
|
15
15
|
var _b;
|
|
16
|
-
var item = _a.item, disabled = _a.disabled, onItemActivate = _a.onItemActivate, highlighted = _a.highlighted, highlightItem = _a.highlightItem, _c = _a.first, first = _c === void 0 ? false : _c, last = _a.last, hasCategoryHeader = _a.hasCategoryHeader, _d = _a.variant, variant =
|
|
16
|
+
var item = _a.item, disabled = _a.disabled, onItemActivate = _a.onItemActivate, highlighted = _a.highlighted, highlightItem = _a.highlightItem, _c = _a.first, first = _c === void 0 ? false : _c, last = _a.last, hasCategoryHeader = _a.hasCategoryHeader, _d = _a.isKeyboardHighlighted, isKeyboardHighlighted = _d === void 0 ? false : _d, _e = _a.variant, variant = _e === void 0 ? 'normal' : _e;
|
|
17
17
|
var isLink = isLinkItem(item);
|
|
18
18
|
var onClick = function (event) {
|
|
19
19
|
// Stop propagation to parent node and handle event exclusively in here. This ensures
|
|
@@ -36,6 +36,7 @@ var ItemElement = function (_a) {
|
|
|
36
36
|
_b[styles.first] = first,
|
|
37
37
|
_b[styles.last] = last,
|
|
38
38
|
_b[styles['has-category-header']] = hasCategoryHeader,
|
|
39
|
+
_b[styles['is-focused']] = isKeyboardHighlighted,
|
|
39
40
|
_b)), role: "presentation", "data-testid": item.id, "data-description": item.description, onClick: onClick, onMouseEnter: onHover, onTouchStart: onHover },
|
|
40
41
|
React.createElement(MenuItem, { item: item, disabled: disabled, highlighted: highlighted })));
|
|
41
42
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/button-dropdown/item-element/index.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,OAAO,MAAM,YAAY,CAAC;AAGjC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,oBAAoB,MAAM,iCAAiC,CAAC;AACnE,OAAO,YAAmC,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,IAAM,WAAW,GAAG,UAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/button-dropdown/item-element/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\nimport React, { useEffect, useRef } from 'react';\nimport clsx from 'clsx';\nimport { ItemProps } from '../interfaces';\nimport { isLinkItem } from '../utils/utils';\nimport styles from './styles.css.js';\nimport Tooltip from '../tooltip';\n\nimport { ButtonDropdownProps } from '../interfaces';\nimport { getItemTarget } from '../utils/utils';\nimport useHiddenDescription from '../utils/use-hidden-description';\nimport InternalIcon, { InternalIconProps } from '../../icon/internal';\nimport { useDropdownContext } from '../../internal/components/dropdown/context';\nimport { getMenuItemProps } from '../utils/menu-item';\n\nconst ItemElement = ({\n item,\n disabled,\n onItemActivate,\n highlighted,\n highlightItem,\n first = false,\n last,\n hasCategoryHeader,\n isKeyboardHighlighted = false,\n variant = 'normal',\n}: ItemProps) => {\n const isLink = isLinkItem(item);\n const onClick = (event: React.MouseEvent) => {\n // Stop propagation to parent node and handle event exclusively in here. This ensures\n // that no group will interfere with the default behavior of links\n event.stopPropagation();\n if (!isLink) {\n event.preventDefault();\n }\n if (!disabled) {\n onItemActivate(item, event);\n }\n };\n\n const onHover = (event: React.SyntheticEvent) => {\n event.preventDefault();\n highlightItem(item);\n };\n\n return (\n <li\n className={clsx(styles['item-element'], styles[`variant-${variant}`], {\n [styles.highlighted]: highlighted,\n [styles.disabled]: disabled,\n [styles.first]: first,\n [styles.last]: last,\n [styles['has-category-header']]: hasCategoryHeader,\n [styles['is-focused']]: isKeyboardHighlighted,\n })}\n role=\"presentation\"\n data-testid={item.id}\n data-description={item.description}\n onClick={onClick}\n onMouseEnter={onHover}\n onTouchStart={onHover}\n >\n <MenuItem item={item} disabled={disabled} highlighted={highlighted} />\n </li>\n );\n};\n\ninterface MenuItemProps {\n item: ButtonDropdownProps.Item;\n disabled: boolean;\n highlighted: boolean;\n}\n\nfunction MenuItem({ item, disabled, highlighted }: MenuItemProps) {\n const menuItemRef = useRef<HTMLSpanElement | HTMLAnchorElement>(null);\n\n useEffect(() => {\n if (highlighted && menuItemRef.current) {\n menuItemRef.current.focus();\n }\n }, [highlighted]);\n\n const isDisabledWithReason = disabled && item.disabledReason;\n const { targetProps, descriptionEl } = useHiddenDescription(item.disabledReason);\n const menuItemProps: React.HTMLProps<HTMLSpanElement | HTMLAnchorElement> = {\n className: styles['menu-item'],\n ref: menuItemRef,\n // We are using the roving tabindex technique to manage the focus state of the dropdown.\n // The current element will always have tabindex=0 which means that it can be tabbed to,\n // while all other items have tabindex=-1 so we can focus them when necessary.\n tabIndex: highlighted ? 0 : -1,\n ...getMenuItemProps({ disabled }),\n ...(isDisabledWithReason ? targetProps : {}),\n };\n const menuItem = isLinkItem(item) ? (\n <a\n {...(menuItemProps as React.HTMLProps<HTMLAnchorElement>)}\n href={!disabled ? item.href : undefined}\n target={getItemTarget(item)}\n rel={item.external ? 'noopener noreferrer' : undefined}\n >\n <MenuItemContent item={item} disabled={disabled} />\n </a>\n ) : (\n <span {...menuItemProps}>\n <MenuItemContent item={item} disabled={disabled} />\n </span>\n );\n\n const { position } = useDropdownContext();\n const tooltipPosition = position === 'bottom-left' || position === 'top-left' ? 'left' : 'right';\n return isDisabledWithReason ? (\n <Tooltip content={item.disabledReason} position={tooltipPosition}>\n {menuItem}\n {descriptionEl}\n </Tooltip>\n ) : (\n menuItem\n );\n}\n\nconst MenuItemContent = ({ item, disabled }: { item: ButtonDropdownProps.Item; disabled: boolean }) => {\n const hasIcon = !!(item.iconName || item.iconUrl || item.iconSvg);\n const hasExternal = isLinkItem(item) && item.external;\n return (\n <>\n {hasIcon && <MenuItemIcon name={item.iconName} url={item.iconUrl} svg={item.iconSvg} alt={item.iconAlt} />}{' '}\n {item.text} {hasExternal && <ExternalIcon disabled={disabled} ariaLabel={item.externalIconAriaLabel} />}\n </>\n );\n};\n\nconst MenuItemIcon = (props: InternalIconProps) => (\n <span className={styles.icon}>\n <InternalIcon {...props} />\n </span>\n);\n\nconst ExternalIcon = ({ disabled, ariaLabel }: { disabled: boolean; ariaLabel?: string }) => {\n const icon = <InternalIcon variant={disabled ? 'disabled' : 'normal'} name=\"external\" />;\n return (\n <span className={styles['external-icon']} role={ariaLabel ? 'img' : undefined} aria-label={ariaLabel}>\n {icon}\n </span>\n );\n};\n\nexport default ItemElement;\n"]}
|
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
|
|
2
2
|
import './styles.scoped.css';
|
|
3
3
|
export default {
|
|
4
|
-
"item-element": "awsui_item-
|
|
5
|
-
"disabled": "
|
|
6
|
-
"last": "
|
|
7
|
-
"highlighted": "
|
|
8
|
-
"variant-icon": "awsui_variant-
|
|
9
|
-
"variant-normal": "awsui_variant-
|
|
10
|
-
"variant-primary": "awsui_variant-
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"
|
|
15
|
-
"
|
|
16
|
-
"
|
|
4
|
+
"item-element": "awsui_item-element_93a1u_lwral_93",
|
|
5
|
+
"disabled": "awsui_disabled_93a1u_lwral_103",
|
|
6
|
+
"last": "awsui_last_93a1u_lwral_110",
|
|
7
|
+
"highlighted": "awsui_highlighted_93a1u_lwral_113",
|
|
8
|
+
"variant-icon": "awsui_variant-icon_93a1u_lwral_117",
|
|
9
|
+
"variant-normal": "awsui_variant-normal_93a1u_lwral_117",
|
|
10
|
+
"variant-primary": "awsui_variant-primary_93a1u_lwral_117",
|
|
11
|
+
"is-focused": "awsui_is-focused_93a1u_lwral_127",
|
|
12
|
+
"variant-navigation": "awsui_variant-navigation_93a1u_lwral_131",
|
|
13
|
+
"first": "awsui_first_93a1u_lwral_134",
|
|
14
|
+
"has-category-header": "awsui_has-category-header_93a1u_lwral_134",
|
|
15
|
+
"menu-item": "awsui_menu-item_93a1u_lwral_148",
|
|
16
|
+
"icon": "awsui_icon_93a1u_lwral_166",
|
|
17
|
+
"external-icon": "awsui_external-icon_93a1u_lwral_171"
|
|
17
18
|
};
|
|
18
19
|
|
|
@@ -90,7 +90,7 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
|
|
|
90
90
|
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
91
91
|
SPDX-License-Identifier: Apache-2.0
|
|
92
92
|
*/
|
|
93
|
-
.awsui_item-
|
|
93
|
+
.awsui_item-element_93a1u_lwral_93:not(#\9) {
|
|
94
94
|
position: relative;
|
|
95
95
|
z-index: 1;
|
|
96
96
|
border: var(--border-item-width-qbbbsa, 2px) solid transparent;
|
|
@@ -100,48 +100,52 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
|
|
|
100
100
|
margin-top: calc(-1 * var(--border-field-width-idlekx, 2px));
|
|
101
101
|
cursor: pointer;
|
|
102
102
|
}
|
|
103
|
-
.awsui_item-
|
|
103
|
+
.awsui_item-element_93a1u_lwral_93.awsui_disabled_93a1u_lwral_103:not(#\9) {
|
|
104
104
|
cursor: default;
|
|
105
105
|
color: var(--color-text-dropdown-item-disabled-varol7, #9ba7b6);
|
|
106
106
|
}
|
|
107
|
-
.awsui_item-
|
|
107
|
+
.awsui_item-element_93a1u_lwral_93:not(#\9):first-child {
|
|
108
108
|
margin-top: 0;
|
|
109
109
|
}
|
|
110
|
-
.awsui_item-
|
|
110
|
+
.awsui_item-element_93a1u_lwral_93.awsui_last_93a1u_lwral_110:not(#\9) {
|
|
111
111
|
border-bottom: var(--border-item-width-qbbbsa, 2px) solid var(--color-border-dropdown-group-0utpsr, #e9ebed);
|
|
112
112
|
}
|
|
113
|
-
.awsui_item-
|
|
113
|
+
.awsui_item-element_93a1u_lwral_93.awsui_highlighted_93a1u_lwral_113:not(#\9) {
|
|
114
114
|
color: var(--color-text-dropdown-item-highlighted-oaabyk, #000716);
|
|
115
115
|
z-index: 2;
|
|
116
116
|
}
|
|
117
|
-
.awsui_item-
|
|
117
|
+
.awsui_item-element_93a1u_lwral_93.awsui_highlighted_93a1u_lwral_113.awsui_variant-icon_93a1u_lwral_117:not(#\9), .awsui_item-element_93a1u_lwral_93.awsui_highlighted_93a1u_lwral_113.awsui_variant-normal_93a1u_lwral_117:not(#\9), .awsui_item-element_93a1u_lwral_93.awsui_highlighted_93a1u_lwral_113.awsui_variant-primary_93a1u_lwral_117:not(#\9) {
|
|
118
118
|
background-color: var(--color-background-dropdown-item-hover-mqsxkv, #f4f4f4);
|
|
119
119
|
border-color: var(--color-border-dropdown-item-hover-tyzq9m, #7d8998);
|
|
120
120
|
border-radius: var(--border-radius-item-u2ibpi, 8px);
|
|
121
121
|
}
|
|
122
|
-
.awsui_item-
|
|
122
|
+
.awsui_item-element_93a1u_lwral_93.awsui_highlighted_93a1u_lwral_113.awsui_variant-icon_93a1u_lwral_117.awsui_disabled_93a1u_lwral_103:not(#\9), .awsui_item-element_93a1u_lwral_93.awsui_highlighted_93a1u_lwral_113.awsui_variant-normal_93a1u_lwral_117.awsui_disabled_93a1u_lwral_103:not(#\9), .awsui_item-element_93a1u_lwral_93.awsui_highlighted_93a1u_lwral_113.awsui_variant-primary_93a1u_lwral_117.awsui_disabled_93a1u_lwral_103:not(#\9) {
|
|
123
123
|
color: var(--color-text-dropdown-item-dimmed-jyqdrs, #9ba7b6);
|
|
124
124
|
border-color: var(--color-border-dropdown-item-dimmed-hover-6dhy15, #7d8998);
|
|
125
125
|
background-color: var(--color-background-dropdown-item-dimmed-qw48ma, transparent);
|
|
126
126
|
}
|
|
127
|
-
.awsui_item-
|
|
127
|
+
.awsui_item-element_93a1u_lwral_93.awsui_highlighted_93a1u_lwral_113.awsui_variant-icon_93a1u_lwral_117.awsui_is-focused_93a1u_lwral_127:not(#\9), .awsui_item-element_93a1u_lwral_93.awsui_highlighted_93a1u_lwral_113.awsui_variant-normal_93a1u_lwral_117.awsui_is-focused_93a1u_lwral_127:not(#\9), .awsui_item-element_93a1u_lwral_93.awsui_highlighted_93a1u_lwral_113.awsui_variant-primary_93a1u_lwral_117.awsui_is-focused_93a1u_lwral_127:not(#\9) {
|
|
128
|
+
border-color: var(--color-border-item-focused-ap3b6s, #0972d3);
|
|
129
|
+
box-shadow: inset 0 0 0 var(--border-control-focus-ring-shadow-spread-srzyiu, 0px) var(--color-border-item-focused-ap3b6s, #0972d3);
|
|
130
|
+
}
|
|
131
|
+
.awsui_item-element_93a1u_lwral_93.awsui_variant-navigation_93a1u_lwral_131.awsui_highlighted_93a1u_lwral_113:not(#\9) {
|
|
128
132
|
color: var(--color-text-accent-s1eqko, #0972d3);
|
|
129
133
|
}
|
|
130
|
-
.awsui_item-
|
|
134
|
+
.awsui_item-element_93a1u_lwral_93.awsui_variant-navigation_93a1u_lwral_131.awsui_first_93a1u_lwral_134:not(#\9):not(.awsui_has-category-header_93a1u_lwral_134) {
|
|
131
135
|
padding-top: var(--space-xxs-ynfts5, 4px);
|
|
132
136
|
}
|
|
133
|
-
.awsui_item-
|
|
137
|
+
.awsui_item-element_93a1u_lwral_93.awsui_variant-navigation_93a1u_lwral_131.awsui_last_93a1u_lwral_110:not(#\9) {
|
|
134
138
|
padding-bottom: var(--space-xxs-ynfts5, 4px);
|
|
135
139
|
}
|
|
136
|
-
.awsui_item-
|
|
140
|
+
.awsui_item-element_93a1u_lwral_93.awsui_variant-navigation_93a1u_lwral_131.awsui_first_93a1u_lwral_134.awsui_last_93a1u_lwral_110:not(#\9) {
|
|
137
141
|
padding-bottom: var(--space-xxs-ynfts5, 4px);
|
|
138
142
|
padding-top: var(--space-xxs-ynfts5, 4px);
|
|
139
143
|
}
|
|
140
|
-
.awsui_item-
|
|
144
|
+
.awsui_item-element_93a1u_lwral_93.awsui_variant-navigation_93a1u_lwral_131.awsui_last_93a1u_lwral_110:not(#\9):last-child {
|
|
141
145
|
padding-bottom: var(--space-xxs-ynfts5, 4px);
|
|
142
146
|
}
|
|
143
147
|
|
|
144
|
-
.awsui_menu-
|
|
148
|
+
.awsui_menu-item_93a1u_lwral_148:not(#\9) {
|
|
145
149
|
min-width: 0;
|
|
146
150
|
-ms-word-break: break-all;
|
|
147
151
|
word-break: break-word;
|
|
@@ -152,18 +156,18 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
|
|
|
152
156
|
text-decoration: none;
|
|
153
157
|
/* stylelint-disable-next-line selector-max-type */
|
|
154
158
|
}
|
|
155
|
-
.awsui_menu-
|
|
159
|
+
.awsui_menu-item_93a1u_lwral_148:not(#\9):focus {
|
|
156
160
|
outline: none;
|
|
157
161
|
}
|
|
158
|
-
.awsui_has-category-
|
|
162
|
+
.awsui_has-category-header_93a1u_lwral_134 > .awsui_menu-item_93a1u_lwral_148:not(#\9), .awsui_has-category-header_93a1u_lwral_134 > span > .awsui_menu-item_93a1u_lwral_148:not(#\9) {
|
|
159
163
|
padding-left: var(--space-xxl-2nvmf1, 32px);
|
|
160
164
|
}
|
|
161
165
|
|
|
162
|
-
.
|
|
166
|
+
.awsui_icon_93a1u_lwral_166:not(#\9) {
|
|
163
167
|
padding-right: var(--space-xs-rsr2qu, 8px);
|
|
164
168
|
flex-shrink: 0;
|
|
165
169
|
}
|
|
166
170
|
|
|
167
|
-
.awsui_external-
|
|
171
|
+
.awsui_external-icon_93a1u_lwral_171:not(#\9) {
|
|
168
172
|
margin-left: var(--space-xxs-ynfts5, 4px);
|
|
169
173
|
}
|
|
@@ -2,18 +2,19 @@
|
|
|
2
2
|
// es-module interop with Babel and Typescript
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
module.exports.default = {
|
|
5
|
-
"item-element": "awsui_item-
|
|
6
|
-
"disabled": "
|
|
7
|
-
"last": "
|
|
8
|
-
"highlighted": "
|
|
9
|
-
"variant-icon": "awsui_variant-
|
|
10
|
-
"variant-normal": "awsui_variant-
|
|
11
|
-
"variant-primary": "awsui_variant-
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
"
|
|
5
|
+
"item-element": "awsui_item-element_93a1u_lwral_93",
|
|
6
|
+
"disabled": "awsui_disabled_93a1u_lwral_103",
|
|
7
|
+
"last": "awsui_last_93a1u_lwral_110",
|
|
8
|
+
"highlighted": "awsui_highlighted_93a1u_lwral_113",
|
|
9
|
+
"variant-icon": "awsui_variant-icon_93a1u_lwral_117",
|
|
10
|
+
"variant-normal": "awsui_variant-normal_93a1u_lwral_117",
|
|
11
|
+
"variant-primary": "awsui_variant-primary_93a1u_lwral_117",
|
|
12
|
+
"is-focused": "awsui_is-focused_93a1u_lwral_127",
|
|
13
|
+
"variant-navigation": "awsui_variant-navigation_93a1u_lwral_131",
|
|
14
|
+
"first": "awsui_first_93a1u_lwral_134",
|
|
15
|
+
"has-category-header": "awsui_has-category-header_93a1u_lwral_134",
|
|
16
|
+
"menu-item": "awsui_menu-item_93a1u_lwral_148",
|
|
17
|
+
"icon": "awsui_icon_93a1u_lwral_166",
|
|
18
|
+
"external-icon": "awsui_external-icon_93a1u_lwral_171"
|
|
18
19
|
};
|
|
19
20
|
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { ItemListProps } from './interfaces';
|
|
2
|
-
export default function ItemsList({ items, onItemActivate, onGroupToggle, targetItem, isHighlighted, isExpanded, highlightItem, categoryDisabled, hasExpandableGroups, hasCategoryHeader, expandToViewport, variant, }: ItemListProps): JSX.Element;
|
|
2
|
+
export default function ItemsList({ items, onItemActivate, onGroupToggle, targetItem, isHighlighted, isKeyboardHighlight, isExpanded, highlightItem, categoryDisabled, hasExpandableGroups, hasCategoryHeader, expandToViewport, variant, }: ItemListProps): JSX.Element;
|
|
3
3
|
//# sourceMappingURL=items-list.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"items-list.d.ts","sourceRoot":"","sources":["../../../src/button-dropdown/items-list.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAQ7C,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAChC,KAAK,EACL,cAAc,EACd,aAAa,EACb,UAAU,EACV,aAAa,EACb,UAAU,EACV,aAAa,EACb,gBAAwB,EACxB,mBAA2B,EAC3B,iBAAyB,EACzB,gBAAwB,EACxB,OAAkB,GACnB,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"items-list.d.ts","sourceRoot":"","sources":["../../../src/button-dropdown/items-list.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAQ7C,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAChC,KAAK,EACL,cAAc,EACd,aAAa,EACb,UAAU,EACV,aAAa,EACb,mBAAmB,EACnB,UAAU,EACV,aAAa,EACb,gBAAwB,EACxB,mBAA2B,EAC3B,iBAAyB,EACzB,gBAAwB,EACxB,OAAkB,GACnB,EAAE,aAAa,eAyEf"}
|
|
@@ -8,17 +8,17 @@ import { isItemGroup } from './utils/utils';
|
|
|
8
8
|
import { useMobile } from '../internal/hooks/use-mobile';
|
|
9
9
|
import MobileExpandableCategoryElement from './category-elements/mobile-expandable-category-element';
|
|
10
10
|
export default function ItemsList(_a) {
|
|
11
|
-
var items = _a.items, onItemActivate = _a.onItemActivate, onGroupToggle = _a.onGroupToggle, targetItem = _a.targetItem, isHighlighted = _a.isHighlighted, isExpanded = _a.isExpanded, highlightItem = _a.highlightItem, _b = _a.categoryDisabled, categoryDisabled = _b === void 0 ? false : _b, _c = _a.hasExpandableGroups, hasExpandableGroups = _c === void 0 ? false : _c, _d = _a.hasCategoryHeader, hasCategoryHeader = _d === void 0 ? false : _d, _e = _a.expandToViewport, expandToViewport = _e === void 0 ? false : _e, _f = _a.variant, variant = _f === void 0 ? 'normal' : _f;
|
|
11
|
+
var items = _a.items, onItemActivate = _a.onItemActivate, onGroupToggle = _a.onGroupToggle, targetItem = _a.targetItem, isHighlighted = _a.isHighlighted, isKeyboardHighlight = _a.isKeyboardHighlight, isExpanded = _a.isExpanded, highlightItem = _a.highlightItem, _b = _a.categoryDisabled, categoryDisabled = _b === void 0 ? false : _b, _c = _a.hasExpandableGroups, hasExpandableGroups = _c === void 0 ? false : _c, _d = _a.hasCategoryHeader, hasCategoryHeader = _d === void 0 ? false : _d, _e = _a.expandToViewport, expandToViewport = _e === void 0 ? false : _e, _f = _a.variant, variant = _f === void 0 ? 'normal' : _f;
|
|
12
12
|
var isMobile = useMobile();
|
|
13
13
|
var elements = items.map(function (item, index) {
|
|
14
14
|
var _a, _b, _c, _d;
|
|
15
15
|
if (!isItemGroup(item)) {
|
|
16
|
-
return (React.createElement(ItemElement, { key: index, item: item, onItemActivate: onItemActivate, disabled: (_a = item.disabled) !== null && _a !== void 0 ? _a : categoryDisabled, highlighted: isHighlighted(item), highlightItem: highlightItem, first: index === 0 || isItemGroup(items[index - 1]), last: index === items.length - 1 || isItemGroup(items[index + 1]), hasCategoryHeader: hasCategoryHeader, variant: variant }));
|
|
16
|
+
return (React.createElement(ItemElement, { key: index, item: item, onItemActivate: onItemActivate, disabled: (_a = item.disabled) !== null && _a !== void 0 ? _a : categoryDisabled, highlighted: isHighlighted(item), isKeyboardHighlighted: isKeyboardHighlight(item), highlightItem: highlightItem, first: index === 0 || isItemGroup(items[index - 1]), last: index === items.length - 1 || isItemGroup(items[index + 1]), hasCategoryHeader: hasCategoryHeader, variant: variant }));
|
|
17
17
|
}
|
|
18
18
|
if (hasExpandableGroups) {
|
|
19
|
-
return item.text ? (isMobile ? (React.createElement(MobileExpandableCategoryElement, { key: index, item: item, onItemActivate: onItemActivate, onGroupToggle: onGroupToggle, targetItem: targetItem, isHighlighted: isHighlighted, isExpanded: isExpanded, highlightItem: highlightItem, disabled: (_b = item.disabled) !== null && _b !== void 0 ? _b : false, variant: variant })) : (React.createElement(ExpandableCategoryElement, { key: index, item: item, onItemActivate: onItemActivate, onGroupToggle: onGroupToggle, targetItem: targetItem, isHighlighted: isHighlighted, isExpanded: isExpanded, highlightItem: highlightItem, disabled: (_c = item.disabled) !== null && _c !== void 0 ? _c : false, expandToViewport: expandToViewport, variant: variant }))) : null;
|
|
19
|
+
return item.text ? (isMobile ? (React.createElement(MobileExpandableCategoryElement, { key: index, item: item, onItemActivate: onItemActivate, onGroupToggle: onGroupToggle, targetItem: targetItem, isHighlighted: isHighlighted, isKeyboardHighlight: isKeyboardHighlight, isExpanded: isExpanded, highlightItem: highlightItem, disabled: (_b = item.disabled) !== null && _b !== void 0 ? _b : false, variant: variant })) : (React.createElement(ExpandableCategoryElement, { key: index, item: item, onItemActivate: onItemActivate, onGroupToggle: onGroupToggle, targetItem: targetItem, isHighlighted: isHighlighted, isKeyboardHighlight: isKeyboardHighlight, isExpanded: isExpanded, highlightItem: highlightItem, disabled: (_c = item.disabled) !== null && _c !== void 0 ? _c : false, expandToViewport: expandToViewport, variant: variant }))) : null;
|
|
20
20
|
}
|
|
21
|
-
return (React.createElement(CategoryElement, { key: index, item: item, onItemActivate: onItemActivate, onGroupToggle: onGroupToggle, targetItem: targetItem, isHighlighted: isHighlighted, isExpanded: isExpanded, highlightItem: highlightItem, disabled: (_d = item.disabled) !== null && _d !== void 0 ? _d : false, variant: variant }));
|
|
21
|
+
return (React.createElement(CategoryElement, { key: index, item: item, onItemActivate: onItemActivate, onGroupToggle: onGroupToggle, targetItem: targetItem, isHighlighted: isHighlighted, isKeyboardHighlight: isKeyboardHighlight, isExpanded: isExpanded, highlightItem: highlightItem, disabled: (_d = item.disabled) !== null && _d !== void 0 ? _d : false, variant: variant }));
|
|
22
22
|
});
|
|
23
23
|
return React.createElement(React.Fragment, null, elements);
|
|
24
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"items-list.js","sourceRoot":"","sources":["../../../src/button-dropdown/items-list.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,WAAW,MAAM,gBAAgB,CAAC;AACzC,OAAO,yBAAyB,MAAM,iDAAiD,CAAC;AACxF,OAAO,eAAe,MAAM,sCAAsC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,+BAA+B,MAAM,wDAAwD,CAAC;AAErG,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"items-list.js","sourceRoot":"","sources":["../../../src/button-dropdown/items-list.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\nimport React from 'react';\nimport { ItemListProps } from './interfaces';\nimport ItemElement from './item-element';\nimport ExpandableCategoryElement from './category-elements/expandable-category-element';\nimport CategoryElement from './category-elements/category-element';\nimport { isItemGroup } from './utils/utils';\nimport { useMobile } from '../internal/hooks/use-mobile';\nimport MobileExpandableCategoryElement from './category-elements/mobile-expandable-category-element';\n\nexport default function ItemsList({\n items,\n onItemActivate,\n onGroupToggle,\n targetItem,\n isHighlighted,\n isKeyboardHighlight,\n isExpanded,\n highlightItem,\n categoryDisabled = false,\n hasExpandableGroups = false,\n hasCategoryHeader = false,\n expandToViewport = false,\n variant = 'normal',\n}: ItemListProps) {\n const isMobile = useMobile();\n\n const elements = items.map((item, index) => {\n if (!isItemGroup(item)) {\n return (\n <ItemElement\n key={index}\n item={item}\n onItemActivate={onItemActivate}\n disabled={item.disabled ?? categoryDisabled}\n highlighted={isHighlighted(item)}\n isKeyboardHighlighted={isKeyboardHighlight(item)}\n highlightItem={highlightItem}\n first={index === 0 || isItemGroup(items[index - 1])}\n last={index === items.length - 1 || isItemGroup(items[index + 1])}\n hasCategoryHeader={hasCategoryHeader}\n variant={variant}\n />\n );\n }\n if (hasExpandableGroups) {\n return item.text ? (\n isMobile ? (\n <MobileExpandableCategoryElement\n key={index}\n item={item}\n onItemActivate={onItemActivate}\n onGroupToggle={onGroupToggle}\n targetItem={targetItem}\n isHighlighted={isHighlighted}\n isKeyboardHighlight={isKeyboardHighlight}\n isExpanded={isExpanded}\n highlightItem={highlightItem}\n disabled={item.disabled ?? false}\n variant={variant}\n />\n ) : (\n <ExpandableCategoryElement\n key={index}\n item={item}\n onItemActivate={onItemActivate}\n onGroupToggle={onGroupToggle}\n targetItem={targetItem}\n isHighlighted={isHighlighted}\n isKeyboardHighlight={isKeyboardHighlight}\n isExpanded={isExpanded}\n highlightItem={highlightItem}\n disabled={item.disabled ?? false}\n expandToViewport={expandToViewport}\n variant={variant}\n />\n )\n ) : null;\n }\n return (\n <CategoryElement\n key={index}\n item={item}\n onItemActivate={onItemActivate}\n onGroupToggle={onGroupToggle}\n targetItem={targetItem}\n isHighlighted={isHighlighted}\n isKeyboardHighlight={isKeyboardHighlight}\n isExpanded={isExpanded}\n highlightItem={highlightItem}\n disabled={item.disabled ?? false}\n variant={variant}\n />\n );\n });\n\n return <>{elements}</>;\n}\n"]}
|
|
@@ -5,7 +5,6 @@ interface UseButtonDropdownOptions extends ButtonDropdownSettings {
|
|
|
5
5
|
items: ButtonDropdownProps.Items;
|
|
6
6
|
onItemClick?: CancelableEventHandler<ButtonDropdownProps.ItemClickDetails>;
|
|
7
7
|
onItemFollow?: CancelableEventHandler<ButtonDropdownProps.ItemClickDetails>;
|
|
8
|
-
usingMouse: React.MutableRefObject<boolean>;
|
|
9
8
|
}
|
|
10
9
|
interface UseButtonDropdownApi extends HighlightProps {
|
|
11
10
|
isOpen: boolean;
|
|
@@ -14,7 +13,8 @@ interface UseButtonDropdownApi extends HighlightProps {
|
|
|
14
13
|
onItemActivate: ItemActivate;
|
|
15
14
|
onGroupToggle: GroupToggle;
|
|
16
15
|
toggleDropdown: () => void;
|
|
16
|
+
setIsUsingMouse: (isUsingMouse: boolean) => void;
|
|
17
17
|
}
|
|
18
|
-
export declare function useButtonDropdown({ items, onItemClick, onItemFollow, hasExpandableGroups, isInRestrictedView,
|
|
18
|
+
export declare function useButtonDropdown({ items, onItemClick, onItemFollow, hasExpandableGroups, isInRestrictedView, }: UseButtonDropdownOptions): UseButtonDropdownApi;
|
|
19
19
|
export {};
|
|
20
20
|
//# sourceMappingURL=use-button-dropdown.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-button-dropdown.d.ts","sourceRoot":"","sources":["../../../../src/button-dropdown/utils/use-button-dropdown.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACvH,OAAO,EAAuB,sBAAsB,EAAoB,MAAM,uBAAuB,CAAC;AAKtG,UAAU,wBAAyB,SAAQ,sBAAsB;IAC/D,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC;IACjC,WAAW,CAAC,EAAE,sBAAsB,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAC3E,YAAY,CAAC,EAAE,sBAAsB,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"use-button-dropdown.d.ts","sourceRoot":"","sources":["../../../../src/button-dropdown/utils/use-button-dropdown.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACvH,OAAO,EAAuB,sBAAsB,EAAoB,MAAM,uBAAuB,CAAC;AAKtG,UAAU,wBAAyB,SAAQ,sBAAsB;IAC/D,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC;IACjC,WAAW,CAAC,EAAE,sBAAsB,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAC3E,YAAY,CAAC,EAAE,sBAAsB,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;CAC7E;AAED,UAAU,oBAAqB,SAAQ,cAAc;IACnD,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC;IAChD,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC;IAC9C,cAAc,EAAE,YAAY,CAAC;IAC7B,aAAa,EAAE,WAAW,CAAC;IAC3B,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,eAAe,EAAE,CAAC,YAAY,EAAE,OAAO,KAAK,IAAI,CAAC;CAClD;AAED,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,kBAA0B,GAC3B,EAAE,wBAAwB,GAAG,oBAAoB,CAoJjD"}
|
|
@@ -4,12 +4,12 @@ import { KeyCode } from '../../internal/keycode';
|
|
|
4
4
|
import { getItemTarget, isItemGroup, isLinkItem } from './utils';
|
|
5
5
|
import useHighlightedMenu from './use-highlighted-menu';
|
|
6
6
|
export function useButtonDropdown(_a) {
|
|
7
|
-
var items = _a.items, onItemClick = _a.onItemClick, onItemFollow = _a.onItemFollow, hasExpandableGroups = _a.hasExpandableGroups, _b = _a.isInRestrictedView, isInRestrictedView = _b === void 0 ? false : _b
|
|
7
|
+
var items = _a.items, onItemClick = _a.onItemClick, onItemFollow = _a.onItemFollow, hasExpandableGroups = _a.hasExpandableGroups, _b = _a.isInRestrictedView, isInRestrictedView = _b === void 0 ? false : _b;
|
|
8
8
|
var _c = useHighlightedMenu({
|
|
9
9
|
items: items,
|
|
10
10
|
hasExpandableGroups: hasExpandableGroups,
|
|
11
11
|
isInRestrictedView: isInRestrictedView
|
|
12
|
-
}), targetItem = _c.targetItem, isHighlighted = _c.isHighlighted, isExpanded = _c.isExpanded, highlightItem = _c.highlightItem, moveHighlight = _c.moveHighlight, expandGroup = _c.expandGroup, collapseGroup = _c.collapseGroup, reset = _c.reset;
|
|
12
|
+
}), targetItem = _c.targetItem, isHighlighted = _c.isHighlighted, isKeyboardHighlight = _c.isKeyboardHighlight, isExpanded = _c.isExpanded, highlightItem = _c.highlightItem, moveHighlight = _c.moveHighlight, expandGroup = _c.expandGroup, collapseGroup = _c.collapseGroup, reset = _c.reset, setIsUsingMouse = _c.setIsUsingMouse;
|
|
13
13
|
var _d = useOpenState({ onClose: reset }), isOpen = _d.isOpen, closeDropdown = _d.closeDropdown, toggleDropdown = _d.toggleDropdown;
|
|
14
14
|
var onGroupToggle = function (item) { return (!isExpanded(item) ? expandGroup(item) : collapseGroup()); };
|
|
15
15
|
var onItemActivate = function (item, event) {
|
|
@@ -57,7 +57,7 @@ export function useButtonDropdown(_a) {
|
|
|
57
57
|
}
|
|
58
58
|
};
|
|
59
59
|
var activate = function (event, isEnter) {
|
|
60
|
-
|
|
60
|
+
setIsUsingMouse(false);
|
|
61
61
|
// if item is a link we rely on default behavior of an anchor, no need to prevent
|
|
62
62
|
if (targetItem && isLinkItem(targetItem) && isEnter) {
|
|
63
63
|
return;
|
|
@@ -66,6 +66,7 @@ export function useButtonDropdown(_a) {
|
|
|
66
66
|
actOnParentDropdown(event);
|
|
67
67
|
};
|
|
68
68
|
var onKeyDown = function (event) {
|
|
69
|
+
setIsUsingMouse(false);
|
|
69
70
|
switch (event.keyCode) {
|
|
70
71
|
case KeyCode.down: {
|
|
71
72
|
doVerticalNavigation(1);
|
|
@@ -79,7 +80,6 @@ export function useButtonDropdown(_a) {
|
|
|
79
80
|
}
|
|
80
81
|
case KeyCode.space: {
|
|
81
82
|
// Prevent scrolling the list of items and highlighting the trigger
|
|
82
|
-
usingMouse.current = false;
|
|
83
83
|
event.preventDefault();
|
|
84
84
|
break;
|
|
85
85
|
}
|
|
@@ -123,13 +123,15 @@ export function useButtonDropdown(_a) {
|
|
|
123
123
|
isOpen: isOpen,
|
|
124
124
|
targetItem: targetItem,
|
|
125
125
|
isHighlighted: isHighlighted,
|
|
126
|
+
isKeyboardHighlight: isKeyboardHighlight,
|
|
126
127
|
isExpanded: isExpanded,
|
|
127
128
|
highlightItem: highlightItem,
|
|
128
129
|
onKeyDown: onKeyDown,
|
|
129
130
|
onKeyUp: onKeyUp,
|
|
130
131
|
onItemActivate: onItemActivate,
|
|
131
132
|
onGroupToggle: onGroupToggle,
|
|
132
|
-
toggleDropdown: toggleDropdown
|
|
133
|
+
toggleDropdown: toggleDropdown,
|
|
134
|
+
setIsUsingMouse: setIsUsingMouse
|
|
133
135
|
};
|
|
134
136
|
}
|
|
135
137
|
//# sourceMappingURL=use-button-dropdown.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-button-dropdown.js","sourceRoot":"","sources":["../../../../src/button-dropdown/utils/use-button-dropdown.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,6DAA6D,CAAC;AAE3F,OAAO,EAAE,mBAAmB,EAA0B,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACtG,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,kBAAkB,MAAM,wBAAwB,CAAC;AAkBxD,MAAM,UAAU,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"use-button-dropdown.js","sourceRoot":"","sources":["../../../../src/button-dropdown/utils/use-button-dropdown.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';\n\nimport { useOpenState } from '../../internal/components/options-list/utils/use-open-state';\nimport { ButtonDropdownProps, ButtonDropdownSettings, GroupToggle, HighlightProps, ItemActivate } from '../interfaces';\nimport { fireCancelableEvent, CancelableEventHandler, isPlainLeftClick } from '../../internal/events';\nimport { KeyCode } from '../../internal/keycode';\nimport { getItemTarget, isItemGroup, isLinkItem } from './utils';\nimport useHighlightedMenu from './use-highlighted-menu';\n\ninterface UseButtonDropdownOptions extends ButtonDropdownSettings {\n items: ButtonDropdownProps.Items;\n onItemClick?: CancelableEventHandler<ButtonDropdownProps.ItemClickDetails>;\n onItemFollow?: CancelableEventHandler<ButtonDropdownProps.ItemClickDetails>;\n}\n\ninterface UseButtonDropdownApi extends HighlightProps {\n isOpen: boolean;\n onKeyDown: (event: React.KeyboardEvent) => void;\n onKeyUp: (event: React.KeyboardEvent) => void;\n onItemActivate: ItemActivate;\n onGroupToggle: GroupToggle;\n toggleDropdown: () => void;\n setIsUsingMouse: (isUsingMouse: boolean) => void;\n}\n\nexport function useButtonDropdown({\n items,\n onItemClick,\n onItemFollow,\n hasExpandableGroups,\n isInRestrictedView = false,\n}: UseButtonDropdownOptions): UseButtonDropdownApi {\n const {\n targetItem,\n isHighlighted,\n isKeyboardHighlight,\n isExpanded,\n highlightItem,\n moveHighlight,\n expandGroup,\n collapseGroup,\n reset,\n setIsUsingMouse,\n } = useHighlightedMenu({\n items,\n hasExpandableGroups,\n isInRestrictedView,\n });\n\n const { isOpen, closeDropdown, toggleDropdown } = useOpenState({ onClose: reset });\n\n const onGroupToggle: GroupToggle = item => (!isExpanded(item) ? expandGroup(item) : collapseGroup());\n\n const onItemActivate: ItemActivate = (item, event) => {\n const details = {\n id: item.id || 'undefined',\n href: item.href,\n external: item.external,\n target: getItemTarget(item),\n };\n if (onItemFollow && item.href && isPlainLeftClick(event)) {\n fireCancelableEvent(onItemFollow, details, event);\n }\n if (onItemClick) {\n fireCancelableEvent(onItemClick, details, event);\n }\n closeDropdown();\n };\n\n const doVerticalNavigation = (direction: -1 | 1) => {\n if (isOpen) {\n moveHighlight(direction);\n }\n };\n\n const openAndSelectFirst = (event: React.KeyboardEvent) => {\n toggleDropdown();\n moveHighlight(1);\n event.preventDefault();\n };\n\n const actOnParentDropdown = (event: React.KeyboardEvent) => {\n // if there is no highlighted item we act on the trigger by opening or closing dropdown\n if (!targetItem) {\n if (isOpen && !isInRestrictedView) {\n toggleDropdown();\n } else {\n openAndSelectFirst(event);\n }\n } else {\n if (isItemGroup(targetItem)) {\n onGroupToggle(targetItem, event);\n } else {\n onItemActivate(targetItem, event);\n }\n }\n };\n\n const activate = (event: React.KeyboardEvent, isEnter?: boolean) => {\n setIsUsingMouse(false);\n\n // if item is a link we rely on default behavior of an anchor, no need to prevent\n if (targetItem && isLinkItem(targetItem) && isEnter) {\n return;\n }\n\n event.preventDefault();\n actOnParentDropdown(event);\n };\n\n const onKeyDown = (event: React.KeyboardEvent) => {\n setIsUsingMouse(false);\n switch (event.keyCode) {\n case KeyCode.down: {\n doVerticalNavigation(1);\n event.preventDefault();\n break;\n }\n case KeyCode.up: {\n doVerticalNavigation(-1);\n event.preventDefault();\n break;\n }\n case KeyCode.space: {\n // Prevent scrolling the list of items and highlighting the trigger\n event.preventDefault();\n break;\n }\n case KeyCode.enter: {\n if (!targetItem?.disabled) {\n activate(event, true);\n }\n break;\n }\n case KeyCode.left:\n case KeyCode.right: {\n if (targetItem && !targetItem.disabled && isItemGroup(targetItem) && !isExpanded(targetItem)) {\n expandGroup();\n } else if (hasExpandableGroups) {\n collapseGroup();\n }\n\n event.preventDefault();\n break;\n }\n case KeyCode.escape: {\n closeDropdown();\n event.preventDefault();\n break;\n }\n case KeyCode.tab: {\n closeDropdown();\n break;\n }\n }\n };\n const onKeyUp = (event: React.KeyboardEvent) => {\n // We need to handle activating items with Space separately because there is a bug\n // in Firefox where changing the focus during a Space keydown event it will trigger\n // unexpected click events on the new element: https://bugzilla.mozilla.org/show_bug.cgi?id=1220143\n if (event.keyCode === KeyCode.space && !targetItem?.disabled) {\n activate(event);\n }\n };\n\n return {\n isOpen,\n targetItem,\n isHighlighted,\n isKeyboardHighlight,\n isExpanded,\n highlightItem,\n onKeyDown,\n onKeyUp,\n onItemActivate,\n onGroupToggle,\n toggleDropdown,\n setIsUsingMouse,\n };\n}\n"]}
|
|
@@ -9,6 +9,7 @@ interface UseHighlightedMenuApi extends HighlightProps {
|
|
|
9
9
|
expandGroup: (group?: ButtonDropdownProps.ItemGroup) => void;
|
|
10
10
|
collapseGroup: () => void;
|
|
11
11
|
reset: () => void;
|
|
12
|
+
setIsUsingMouse: (isUsingMouse: boolean) => void;
|
|
12
13
|
}
|
|
13
14
|
export default function useHighlightedMenu({ items, hasExpandableGroups, isInRestrictedView, }: UseHighlightedMenuOptions): UseHighlightedMenuApi;
|
|
14
15
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-highlighted-menu.d.ts","sourceRoot":"","sources":["../../../../src/button-dropdown/utils/use-highlighted-menu.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAIpE,UAAU,yBAAyB;IACjC,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC;IACjC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,UAAU,qBAAsB,SAAQ,cAAc;IACpD,aAAa,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;IAC3C,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE,mBAAmB,CAAC,SAAS,KAAK,IAAI,CAAC;IAC7D,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,KAAK,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"use-highlighted-menu.d.ts","sourceRoot":"","sources":["../../../../src/button-dropdown/utils/use-highlighted-menu.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAIpE,UAAU,yBAAyB;IACjC,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC;IACjC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,UAAU,qBAAsB,SAAQ,cAAc;IACpD,aAAa,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;IAC3C,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE,mBAAmB,CAAC,SAAS,KAAK,IAAI,CAAC;IAC7D,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,eAAe,EAAE,CAAC,YAAY,EAAE,OAAO,KAAK,IAAI,CAAC;CAClD;AAED,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,EACzC,KAAK,EACL,mBAAmB,EACnB,kBAA0B,GAC3B,EAAE,yBAAyB,GAAG,qBAAqB,CA6GnD"}
|