intergalactic 15.60.1 → 15.61.0-prerelease.0-prerelease-07b38ef0
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/CHANGELOG.md +23 -0
- package/base-trigger/lib/cjs/BaseTrigger.js +18 -18
- package/base-trigger/lib/cjs/ButtonTrigger.js +3 -3
- package/base-trigger/lib/cjs/FilterTrigger.js +7 -7
- package/base-trigger/lib/cjs/LinkTrigger.js +12 -12
- package/base-trigger/lib/es6/BaseTrigger.js +18 -18
- package/base-trigger/lib/es6/ButtonTrigger.js +3 -3
- package/base-trigger/lib/es6/FilterTrigger.js +7 -7
- package/base-trigger/lib/es6/LinkTrigger.js +12 -12
- package/d3-chart/lib/cjs/Area.js +11 -11
- package/d3-chart/lib/cjs/Axis.js +14 -14
- package/d3-chart/lib/cjs/Bar.js +10 -10
- package/d3-chart/lib/cjs/Bubble.js +12 -12
- package/d3-chart/lib/cjs/Donut.js +9 -9
- package/d3-chart/lib/cjs/Dots.js +8 -8
- package/d3-chart/lib/cjs/HorizontalBar.js +10 -10
- package/d3-chart/lib/cjs/Hover.js +3 -3
- package/d3-chart/lib/cjs/Line.js +9 -9
- package/d3-chart/lib/cjs/Plot.js +3 -3
- package/d3-chart/lib/cjs/Radar.js +19 -19
- package/d3-chart/lib/cjs/RadialTree.js +11 -11
- package/d3-chart/lib/cjs/ReferenceLine.js +9 -9
- package/d3-chart/lib/cjs/ScatterPlot.js +9 -9
- package/d3-chart/lib/cjs/Tooltip.js +9 -9
- package/d3-chart/lib/cjs/Venn.js +9 -9
- package/d3-chart/lib/cjs/a11y/PlotA11yModule.js +2 -2
- package/d3-chart/lib/cjs/a11y/PlotA11yView.js +2 -2
- package/d3-chart/lib/cjs/component/ChartLegend/LegendFlex/LegendFlex.js +4 -4
- package/d3-chart/lib/cjs/component/ChartLegend/LegendItem/LegendItem.js +17 -17
- package/d3-chart/lib/cjs/component/ChartLegend/LegendTable/LegendTable.js +6 -6
- package/d3-chart/lib/es6/Area.js +11 -11
- package/d3-chart/lib/es6/Axis.js +14 -14
- package/d3-chart/lib/es6/Bar.js +10 -10
- package/d3-chart/lib/es6/Bubble.js +12 -12
- package/d3-chart/lib/es6/Donut.js +9 -9
- package/d3-chart/lib/es6/Dots.js +8 -8
- package/d3-chart/lib/es6/HorizontalBar.js +10 -10
- package/d3-chart/lib/es6/Hover.js +3 -3
- package/d3-chart/lib/es6/Line.js +9 -9
- package/d3-chart/lib/es6/Plot.js +3 -3
- package/d3-chart/lib/es6/Radar.js +19 -19
- package/d3-chart/lib/es6/RadialTree.js +11 -11
- package/d3-chart/lib/es6/ReferenceLine.js +9 -9
- package/d3-chart/lib/es6/ScatterPlot.js +9 -9
- package/d3-chart/lib/es6/Tooltip.js +9 -9
- package/d3-chart/lib/es6/Venn.js +9 -9
- package/d3-chart/lib/es6/a11y/PlotA11yModule.js +2 -2
- package/d3-chart/lib/es6/a11y/PlotA11yView.js +2 -2
- package/d3-chart/lib/es6/component/ChartLegend/LegendFlex/LegendFlex.js +4 -4
- package/d3-chart/lib/es6/component/ChartLegend/LegendItem/LegendItem.js +17 -17
- package/d3-chart/lib/es6/component/ChartLegend/LegendTable/LegendTable.js +6 -6
- package/date-picker/lib/cjs/components/Calendar.js +21 -21
- package/date-picker/lib/cjs/components/DateRangeComparatorAbstract.js +26 -26
- package/date-picker/lib/cjs/components/InputTrigger.js +26 -26
- package/date-picker/lib/cjs/components/PickerAbstract.js +26 -26
- package/date-picker/lib/cjs/components/RangePickerAbstract.js +26 -26
- package/date-picker/lib/es6/components/Calendar.js +21 -21
- package/date-picker/lib/es6/components/DateRangeComparatorAbstract.js +26 -26
- package/date-picker/lib/es6/components/InputTrigger.js +26 -26
- package/date-picker/lib/es6/components/PickerAbstract.js +26 -26
- package/date-picker/lib/es6/components/RangePickerAbstract.js +26 -26
- package/dropdown/lib/cjs/Dropdown.js +2 -2
- package/dropdown/lib/es6/Dropdown.js +2 -2
- package/dropdown-menu/index.d.ts +9 -0
- package/dropdown-menu/lib/cjs/DropdownMenu.js +311 -95
- package/dropdown-menu/lib/cjs/DropdownMenu.js.map +1 -1
- package/dropdown-menu/lib/cjs/index.d.js.map +1 -1
- package/dropdown-menu/lib/cjs/style/dropdown-menu.shadow.css +20 -1
- package/dropdown-menu/lib/cjs/styleScrollArea.js +6 -6
- package/dropdown-menu/lib/es6/DropdownMenu.js +316 -97
- package/dropdown-menu/lib/es6/DropdownMenu.js.map +1 -1
- package/dropdown-menu/lib/es6/index.d.js.map +1 -1
- package/dropdown-menu/lib/es6/style/dropdown-menu.shadow.css +20 -1
- package/dropdown-menu/lib/es6/styleScrollArea.js +6 -6
- package/dropdown-menu/lib/types/index.d.ts +9 -0
- package/errors/lib/cjs/Error.js +9 -9
- package/errors/lib/es6/Error.js +9 -9
- package/feature-popover/lib/cjs/FeaturePopover.js +10 -10
- package/feature-popover/lib/es6/FeaturePopover.js +10 -10
- package/format-text/lib/cjs/FormatText.js +5 -5
- package/format-text/lib/cjs/style/format-text.shadow.css +3 -1
- package/format-text/lib/es6/FormatText.js +5 -5
- package/format-text/lib/es6/style/format-text.shadow.css +3 -1
- package/input-tags/lib/cjs/InputTags.js +12 -12
- package/input-tags/lib/es6/InputTags.js +12 -12
- package/link/lib/cjs/Link.js +12 -12
- package/link/lib/cjs/style/link.shadow.css +4 -6
- package/link/lib/es6/Link.js +12 -12
- package/link/lib/es6/style/link.shadow.css +4 -6
- package/package.json +6 -6
- package/pagination/lib/cjs/Pagination.js +10 -10
- package/pagination/lib/es6/Pagination.js +10 -10
- package/popper/lib/cjs/Popper.js +6 -6
- package/popper/lib/es6/Popper.js +6 -6
- package/select/lib/cjs/InputSearch.js +6 -6
- package/select/lib/cjs/Select.js +9 -9
- package/select/lib/es6/InputSearch.js +6 -6
- package/select/lib/es6/Select.js +9 -9
- package/tag/index.d.ts +35 -33
- package/tag/lib/cjs/Tag.js +89 -56
- package/tag/lib/cjs/Tag.js.map +1 -1
- package/tag/lib/cjs/index.d.js.map +1 -1
- package/tag/lib/cjs/style/tag.shadow.css +27 -2
- package/tag/lib/es6/Tag.js +89 -56
- package/tag/lib/es6/Tag.js.map +1 -1
- package/tag/lib/es6/index.d.js.map +1 -1
- package/tag/lib/es6/style/tag.shadow.css +27 -2
- package/tag/lib/types/index.d.ts +35 -33
- package/time-picker/lib/cjs/TimePicker.js +12 -12
- package/time-picker/lib/es6/TimePicker.js +12 -12
- package/tooltip/lib/cjs/Tooltip.js +7 -7
- package/tooltip/lib/es6/Tooltip.js +7 -7
- package/utils/lib/themes/auto.css +6 -6
- package/utils/lib/themes/dark.css +0 -2
- package/utils/lib/themes/dark.json +0 -1
- package/utils/lib/themes/default.css +6 -4
- package/utils/lib/themes/default.json +3 -2
- package/utils/lib/themes/light.css +6 -4
- package/utils/lib/themes/light.json +3 -2
- package/utils/lib/use/useFocusLock.js +5 -0
- package/utils/lib/use/useFocusLock.js.map +1 -1
- package/utils/lib/use/useFocusLock.mjs +5 -0
- package/utils/lib/use/useFocusLock.mjs.map +1 -1
@@ -9,14 +9,16 @@ import _inherits from "@babel/runtime/helpers/inherits";
|
|
9
9
|
import _createSuper from "@babel/runtime/helpers/createSuper";
|
10
10
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
11
11
|
import { sstyled as _sstyled } from 'intergalactic/core';
|
12
|
+
import { assignProps as _assignProps9 } from 'intergalactic/core';
|
13
|
+
import { assignProps as _assignProps8 } from 'intergalactic/core';
|
14
|
+
import { assignProps as _assignProps7 } from 'intergalactic/core';
|
12
15
|
import { assignProps as _assignProps6 } from 'intergalactic/core';
|
13
16
|
import { assignProps as _assignProps5 } from 'intergalactic/core';
|
14
17
|
import { assignProps as _assignProps4 } from 'intergalactic/core';
|
15
18
|
import { assignProps as _assignProps3 } from 'intergalactic/core';
|
16
19
|
import { assignProps as _assignProps2 } from 'intergalactic/core';
|
17
20
|
import { assignProps as _assignProps } from 'intergalactic/core';
|
18
|
-
var _excluded = ["className"]
|
19
|
-
_excluded2 = ["className"];
|
21
|
+
var _excluded = ["className"];
|
20
22
|
import React from 'react';
|
21
23
|
import cn from 'classnames';
|
22
24
|
import createComponent, { Component, sstyled, Root } from 'intergalactic/core';
|
@@ -26,24 +28,28 @@ import ScrollAreaComponent from 'intergalactic/scroll-area';
|
|
26
28
|
import uniqueIDEnhancement from 'intergalactic/utils/lib/uniqueID';
|
27
29
|
import i18nEnhance from 'intergalactic/utils/lib/enhances/i18nEnhance';
|
28
30
|
import { localizedMessages } from './translations/__intergalactic-dynamic-locales';
|
29
|
-
import {
|
31
|
+
import { useFocusLock } from 'intergalactic/utils/lib/use/useFocusLock';
|
30
32
|
import scrollStyles from './styleScrollArea';
|
31
33
|
/*__reshadow-styles__:"./style/dropdown-menu.shadow.css"*/
|
32
|
-
var style = ( /*__reshadow_css_start__*/_sstyled.insert( /*__inner_css_start__*/".
|
33
|
-
"__SDropdownMenuList": "
|
34
|
-
"__SDropdownMenuItem": "
|
35
|
-
"_highlighted": "
|
36
|
-
"_disabled": "
|
37
|
-
"_size_l": "
|
38
|
-
"_size_m": "
|
39
|
-
"
|
40
|
-
"
|
41
|
-
"
|
42
|
-
"
|
43
|
-
"
|
34
|
+
var style = ( /*__reshadow_css_start__*/_sstyled.insert( /*__inner_css_start__*/".___SDropdownMenuItem_1578a_gg_,.___SDropdownMenuList_1578a_gg_{position:relative;color:var(--intergalactic-text-primary, #191b23)}.___SDropdownMenuList_1578a_gg_{max-height:240px;padding:var(--intergalactic-spacing-1x, 4px)0;min-height:26px;min-width:32px;box-sizing:content-box;z-index:0}.___SDropdownMenuItem_1578a_gg_{display:flex;align-items:center;-webkit-text-decoration:none;text-decoration:none;box-sizing:border-box;cursor:pointer;width:100%;text-align:left;line-height:normal}@media (hover:hover){.___SDropdownMenuItem_1578a_gg_:hover{background-color:var(--intergalactic-dropdown-menu-item-hover, #f4f5f9)}}.___SDropdownMenuItem_1578a_gg_:focus{outline:0}.___SDropdownMenuItem_1578a_gg_.__selected_1578a_gg_{background-color:var(--intergalactic-dropdown-menu-item-selected, rgba(196, 229, 254, 0.7));box-shadow:2px 0 0 0 var(--intergalactic-control-primary-info, #008ff8) inset}@media (hover:hover){.___SDropdownMenuItem_1578a_gg_.__selected_1578a_gg_:hover{background-color:var(--intergalactic-dropdown-menu-item-selected-hover, #c4e5fe)}}.___SDropdownMenuItem_1578a_gg_.__highlighted_1578a_gg_:not(:focus-within){z-index:1;box-shadow:var(--intergalactic-keyboard-focus, 0px 0px 0px 3px rgba(0, 143, 248, 0.5)) inset}.___SDropdownMenuItem_1578a_gg_.__disabled_1578a_gg_{opacity:var(--intergalactic-disabled-opacity, 0.3);cursor:default;pointer-events:none}.___SDropdownMenuItem_1578a_gg_._size_l_1578a_gg_{font-size:var(--intergalactic-fs-300, 16px);line-height:var(--intergalactic-lh-300, 150%);padding:var(--intergalactic-spacing-2x, 8px) var(--intergalactic-spacing-3x, 12px);min-height:40px}.___SDropdownMenuItem_1578a_gg_._size_m_1578a_gg_{font-size:var(--intergalactic-fs-200, 14px);line-height:var(--intergalactic-lh-200, 142%);padding:calc(var(--intergalactic-spacing-1x, 4px) + var(--intergalactic-spacing-05x, 2px)) var(--intergalactic-spacing-2x, 8px);min-height:32px}.___SDropdownMenuItem_1578a_gg_.__notInteractive_1578a_gg_{cursor:default}@media (hover:hover){.___SDropdownMenuItem_1578a_gg_.__notInteractive_1578a_gg_:hover{background:0 0}}.___SDropdownMenuItem_1578a_gg_._variant_hint_1578a_gg_{color:var(--intergalactic-text-secondary, #6c6e79);cursor:default}@media (hover:hover){.___SDropdownMenuItem_1578a_gg_._variant_hint_1578a_gg_:hover{background:0 0}}.___SDropdownMenuItem_1578a_gg_._variant_title_1578a_gg_{font-weight:var(--intergalactic-bold, 700);cursor:default}@media (hover:hover){.___SDropdownMenuItem_1578a_gg_._variant_title_1578a_gg_:hover{background:0 0}}.___SDropdownMenuItem_1578a_gg_.__visible_1578a_gg_{background-color:var(--intergalactic-dropdown-menu-item-hover, #f4f5f9)}.___SDropdownMenuItem_1578a_gg_.__nesting-trigger_1578a_gg_{justify-content:space-between}.___SDropdownMenuItemAddon_1578a_gg_{display:inline-flex;margin-left:var(--intergalactic-spacing-2x, 8px);margin-right:var(--intergalactic-spacing-2x, 8px)}.___SDropdownMenuItemAddon_1578a_gg_:first-child{margin-left:0}.___SDropdownMenuItemAddon_1578a_gg_:last-child{margin-right:0}.___SDropdownMenuNesting_1578a_gg_,.___SDropdownMenuNesting_1578a_gg_._size_l_1578a_gg_,.___SDropdownMenuNesting_1578a_gg_._size_m_1578a_gg_{padding:0}.___SDropdownMenuNesting_1578a_gg_.__highlighted_1578a_gg_{z-index:1;box-shadow:var(--intergalactic-keyboard-focus, 0px 0px 0px 3px rgba(0, 143, 248, 0.5)) inset}" /*__inner_css_end__*/, "1578a_gg_") /*__reshadow_css_end__*/, {
|
35
|
+
"__SDropdownMenuList": "___SDropdownMenuList_1578a_gg_",
|
36
|
+
"__SDropdownMenuItem": "___SDropdownMenuItem_1578a_gg_",
|
37
|
+
"_highlighted": "__highlighted_1578a_gg_",
|
38
|
+
"_disabled": "__disabled_1578a_gg_",
|
39
|
+
"_size_l": "_size_l_1578a_gg_",
|
40
|
+
"_size_m": "_size_m_1578a_gg_",
|
41
|
+
"_visible": "__visible_1578a_gg_",
|
42
|
+
"_nesting-trigger": "__nesting-trigger_1578a_gg_",
|
43
|
+
"__SDropdownMenuNesting": "___SDropdownMenuNesting_1578a_gg_",
|
44
|
+
"_selected": "__selected_1578a_gg_",
|
45
|
+
"_notInteractive": "__notInteractive_1578a_gg_",
|
46
|
+
"_variant_hint": "_variant_hint_1578a_gg_",
|
47
|
+
"_variant_title": "_variant_title_1578a_gg_",
|
48
|
+
"__SDropdownMenuItemAddon": "___SDropdownMenuItemAddon_1578a_gg_"
|
44
49
|
});
|
45
|
-
|
46
|
-
|
50
|
+
import { setFocus } from 'intergalactic/utils/lib/focus-lock/setFocus';
|
51
|
+
import { isFocusInside } from 'intergalactic/utils/lib/focus-lock/isFocusInside';
|
52
|
+
import { getFocusableIn } from 'intergalactic/utils/lib/focus-lock/getFocusableIn';
|
47
53
|
var DropdownMenuRoot = /*#__PURE__*/function (_Component) {
|
48
54
|
_inherits(DropdownMenuRoot, _Component);
|
49
55
|
var _super = _createSuper(DropdownMenuRoot);
|
@@ -54,55 +60,194 @@ var DropdownMenuRoot = /*#__PURE__*/function (_Component) {
|
|
54
60
|
args[_key] = arguments[_key];
|
55
61
|
}
|
56
62
|
_this = _super.call.apply(_super, [this].concat(args));
|
63
|
+
_defineProperty(_assertThisInitialized(_this), "state", {
|
64
|
+
focusLockItemIndex: null
|
65
|
+
});
|
57
66
|
_defineProperty(_assertThisInitialized(_this), "popperRef", /*#__PURE__*/React.createRef());
|
67
|
+
_defineProperty(_assertThisInitialized(_this), "triggerRef", /*#__PURE__*/React.createRef());
|
58
68
|
_defineProperty(_assertThisInitialized(_this), "itemProps", []);
|
69
|
+
_defineProperty(_assertThisInitialized(_this), "itemRefs", []);
|
59
70
|
_defineProperty(_assertThisInitialized(_this), "highlightedItemRef", /*#__PURE__*/React.createRef());
|
71
|
+
_defineProperty(_assertThisInitialized(_this), "ignoreTriggerKeyboardFocusUntil", 0);
|
60
72
|
_defineProperty(_assertThisInitialized(_this), "prevHighlightedIndex", null);
|
73
|
+
_defineProperty(_assertThisInitialized(_this), "focusTrigger", function () {
|
74
|
+
var trigger = _this.triggerRef.current;
|
75
|
+
if (!trigger) return;
|
76
|
+
if (isFocusInside(trigger)) return;
|
77
|
+
setFocus(trigger);
|
78
|
+
});
|
61
79
|
_defineProperty(_assertThisInitialized(_this), "bindHandlerKeyDown", function (place) {
|
62
80
|
return function (e) {
|
63
81
|
var amount = e.shiftKey ? 5 : 1;
|
64
82
|
var targetTagName = e.target.tagName;
|
65
|
-
|
83
|
+
var _this$asProps = _this.asProps,
|
84
|
+
visible = _this$asProps.visible,
|
85
|
+
highlightedIndex = _this$asProps.highlightedIndex,
|
86
|
+
placement = _this$asProps.placement;
|
87
|
+
if (e.key === ' ' && ['INPUT', 'TEXTAREA', 'BUTTON'].includes(targetTagName)) return;
|
66
88
|
if (e.key === 'Enter') {
|
67
89
|
if (targetTagName === 'TEXTAREA') return;
|
68
90
|
if (place === 'popper' && (targetTagName === 'BUTTON' || targetTagName === 'A')) return;
|
69
91
|
}
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
92
|
+
if (visible && e.key === 'Tab') {
|
93
|
+
var item = highlightedIndex !== null && _this.itemRefs[highlightedIndex];
|
94
|
+
if (item && getFocusableIn(item).length !== 0) {
|
95
|
+
_this.setState({
|
96
|
+
focusLockItemIndex: highlightedIndex
|
97
|
+
});
|
98
|
+
} else {
|
99
|
+
_this.handlers.highlightedIndex(null);
|
100
|
+
}
|
74
101
|
return;
|
75
102
|
}
|
76
|
-
if (
|
77
|
-
|
78
|
-
|
79
|
-
|
103
|
+
if (e.key === 'Escape' && _this.state.focusLockItemIndex !== null) {
|
104
|
+
_this.setState({
|
105
|
+
focusLockItemIndex: null
|
106
|
+
});
|
107
|
+
return false;
|
108
|
+
}
|
109
|
+
var verticalPlacement = !placement || placement.startsWith('top') || placement.startsWith('bottom');
|
110
|
+
if (['ArrowDown', 'ArrowUp'].includes(e.key) && verticalPlacement) {
|
111
|
+
e.preventDefault();
|
112
|
+
_this.handlers.visible(true);
|
113
|
+
}
|
114
|
+
if (['ArrowLeft', 'ArrowRight'].includes(e.key) && !verticalPlacement) {
|
115
|
+
var show = e.key === 'ArrowRight' && placement.startsWith('right') || e.key === 'ArrowLeft' && placement.startsWith('left');
|
116
|
+
var hide = e.key === 'ArrowLeft' && placement.startsWith('right') || e.key === 'ArrowRight' && placement.startsWith('left');
|
117
|
+
var visibleChanged = visible && hide || !visible && show;
|
118
|
+
if (show) {
|
119
|
+
_this.handlers.visible(true);
|
120
|
+
} else if (hide) {
|
121
|
+
_this.handlers.visible(false);
|
122
|
+
}
|
123
|
+
if (visibleChanged) {
|
124
|
+
e.preventDefault();
|
125
|
+
e.stopPropagation();
|
126
|
+
return;
|
127
|
+
}
|
128
|
+
}
|
129
|
+
if (['ArrowLeft', 'ArrowRight'].includes(e.key)) {
|
130
|
+
var _item = highlightedIndex !== null && _this.itemRefs[highlightedIndex];
|
131
|
+
var focusable = getFocusableIn(_item);
|
132
|
+
if (focusable.length > 0 && _item) {
|
133
|
+
var focusedIndex = focusable.indexOf(document.activeElement);
|
134
|
+
if (e.key === 'ArrowRight') {
|
135
|
+
if (focusedIndex === -1) {
|
136
|
+
_this.setState({
|
137
|
+
focusLockItemIndex: highlightedIndex
|
138
|
+
});
|
139
|
+
}
|
140
|
+
var nextFocused = focusable[focusedIndex + 1];
|
141
|
+
if (nextFocused) {
|
142
|
+
e.preventDefault();
|
143
|
+
e.stopPropagation();
|
144
|
+
nextFocused.focus();
|
145
|
+
}
|
146
|
+
} else if (e.key === 'ArrowLeft') {
|
147
|
+
if (focusedIndex === 0) {
|
148
|
+
_this.setState({
|
149
|
+
focusLockItemIndex: null
|
150
|
+
});
|
151
|
+
}
|
152
|
+
var prevFocused = focusable[focusedIndex - 1];
|
153
|
+
if (prevFocused) {
|
154
|
+
e.preventDefault();
|
155
|
+
e.stopPropagation();
|
156
|
+
prevFocused.focus();
|
157
|
+
}
|
158
|
+
}
|
159
|
+
}
|
160
|
+
}
|
80
161
|
switch (e.key) {
|
81
162
|
case 'ArrowDown':
|
82
163
|
{
|
83
|
-
|
84
|
-
|
164
|
+
if (visible) {
|
165
|
+
_this.moveHighlightedIndex(amount, e);
|
166
|
+
if (isFocusInside(_this.popperRef.current)) {
|
167
|
+
_this.focusTrigger();
|
168
|
+
}
|
169
|
+
e.preventDefault();
|
170
|
+
e.stopPropagation();
|
171
|
+
}
|
85
172
|
break;
|
86
173
|
}
|
87
174
|
case 'ArrowUp':
|
88
175
|
{
|
89
|
-
|
90
|
-
|
176
|
+
if (visible) {
|
177
|
+
_this.moveHighlightedIndex(-amount, e);
|
178
|
+
if (isFocusInside(_this.popperRef.current)) {
|
179
|
+
_this.focusTrigger();
|
180
|
+
}
|
181
|
+
e.preventDefault();
|
182
|
+
e.stopPropagation();
|
183
|
+
}
|
91
184
|
break;
|
92
185
|
}
|
93
186
|
case ' ':
|
94
187
|
case 'Enter':
|
95
188
|
if (_this.highlightedItemRef.current) {
|
189
|
+
e.stopPropagation();
|
190
|
+
e.preventDefault();
|
96
191
|
_this.highlightedItemRef.current.click();
|
97
192
|
} else {
|
98
|
-
if (place === 'trigger')
|
193
|
+
if (place === 'trigger') {
|
194
|
+
_this.handlers.visible(false);
|
195
|
+
e.preventDefault();
|
196
|
+
}
|
99
197
|
}
|
100
198
|
break;
|
101
199
|
}
|
102
200
|
};
|
103
201
|
});
|
202
|
+
_defineProperty(_assertThisInitialized(_this), "handleTriggerKeyboardFocus", function () {
|
203
|
+
if (_this.ignoreTriggerKeyboardFocusUntil > Date.now()) return false;
|
204
|
+
});
|
205
|
+
_defineProperty(_assertThisInitialized(_this), "handleNestingClick", function (event) {
|
206
|
+
var _focusable$;
|
207
|
+
var itemIndex = _this.itemRefs.indexOf(event.currentTarget);
|
208
|
+
if (itemIndex === -1) return;
|
209
|
+
var focusable = getFocusableIn(event.currentTarget);
|
210
|
+
(_focusable$ = focusable[0]) === null || _focusable$ === void 0 ? void 0 : _focusable$.focus();
|
211
|
+
if (focusable[0] && _this.state.focusLockItemIndex === null) {
|
212
|
+
_this.setState({
|
213
|
+
focusLockItemIndex: null
|
214
|
+
});
|
215
|
+
event.preventDefault();
|
216
|
+
event.stopPropagation();
|
217
|
+
}
|
218
|
+
});
|
219
|
+
_defineProperty(_assertThisInitialized(_this), "handleNestingKeyDown", function (event) {
|
220
|
+
if (event.key === ' ') {
|
221
|
+
_this.handleNestingClick(event);
|
222
|
+
}
|
223
|
+
});
|
224
|
+
_defineProperty(_assertThisInitialized(_this), "getNestingProps", function () {
|
225
|
+
var size = _this.asProps.size;
|
226
|
+
return {
|
227
|
+
size: size,
|
228
|
+
onClick: _this.handleNestingClick,
|
229
|
+
onKeyDown: _this.handleNestingKeyDown
|
230
|
+
};
|
231
|
+
});
|
232
|
+
_defineProperty(_assertThisInitialized(_this), "handleNestedVisibleChange", function (lastUserInteraction) {
|
233
|
+
if (_this.asProps.visible && _this.asProps.highlightedIndex === null && lastUserInteraction === 'keyboard') {
|
234
|
+
_this.handlers.highlightedIndex(0);
|
235
|
+
}
|
236
|
+
});
|
237
|
+
_defineProperty(_assertThisInitialized(_this), "getNestingTriggerProps", function () {
|
238
|
+
var _this$asProps2 = _this.asProps,
|
239
|
+
size = _this$asProps2.size,
|
240
|
+
visible = _this$asProps2.visible;
|
241
|
+
return {
|
242
|
+
size: size,
|
243
|
+
visible: visible,
|
244
|
+
onNestedVisibleChange: _this.handleNestedVisibleChange
|
245
|
+
};
|
246
|
+
});
|
104
247
|
_defineProperty(_assertThisInitialized(_this), "scrollToNode", function (node) {
|
105
|
-
|
248
|
+
if (node) {
|
249
|
+
_this.highlightedItemRef.current = node;
|
250
|
+
}
|
106
251
|
setTimeout(function () {
|
107
252
|
if (node !== null && node !== void 0 && node.scrollIntoView) {
|
108
253
|
if (_this.asProps.highlightedIndex !== _this.prevHighlightedIndex) {
|
@@ -120,21 +265,26 @@ var DropdownMenuRoot = /*#__PURE__*/function (_Component) {
|
|
120
265
|
_createClass(DropdownMenuRoot, [{
|
121
266
|
key: "uncontrolledProps",
|
122
267
|
value: function uncontrolledProps() {
|
268
|
+
var _this2 = this;
|
123
269
|
return {
|
124
270
|
highlightedIndex: null,
|
125
|
-
visible: null
|
271
|
+
visible: [null, function (visible) {
|
272
|
+
if (!visible) {
|
273
|
+
_this2.ignoreTriggerKeyboardFocusUntil = Date.now() + 100;
|
274
|
+
}
|
275
|
+
}]
|
126
276
|
};
|
127
277
|
}
|
128
278
|
}, {
|
129
279
|
key: "getTriggerProps",
|
130
280
|
value: function getTriggerProps() {
|
131
|
-
var _this$
|
132
|
-
size = _this$
|
133
|
-
uid = _this$
|
134
|
-
disablePortal = _this$
|
135
|
-
visible = _this$
|
136
|
-
getI18nText = _this$
|
137
|
-
highlightedIndex = _this$
|
281
|
+
var _this$asProps3 = this.asProps,
|
282
|
+
size = _this$asProps3.size,
|
283
|
+
uid = _this$asProps3.uid,
|
284
|
+
disablePortal = _this$asProps3.disablePortal,
|
285
|
+
visible = _this$asProps3.visible,
|
286
|
+
getI18nText = _this$asProps3.getI18nText,
|
287
|
+
highlightedIndex = _this$asProps3.highlightedIndex;
|
138
288
|
return {
|
139
289
|
size: size,
|
140
290
|
id: "igc-".concat(uid, "-trigger"),
|
@@ -142,15 +292,17 @@ var DropdownMenuRoot = /*#__PURE__*/function (_Component) {
|
|
142
292
|
focusHint: visible && !disablePortal ? getI18nText('triggerHint') : undefined,
|
143
293
|
'aria-expanded': visible ? 'true' : 'false',
|
144
294
|
'aria-activedescendant': visible && highlightedIndex !== null ? "igc-".concat(uid, "-option-").concat(highlightedIndex) : undefined,
|
145
|
-
onKeyDown: this.bindHandlerKeyDown('trigger')
|
295
|
+
onKeyDown: this.bindHandlerKeyDown('trigger'),
|
296
|
+
ref: this.triggerRef,
|
297
|
+
onKeyboardFocus: this.handleTriggerKeyboardFocus
|
146
298
|
};
|
147
299
|
}
|
148
300
|
}, {
|
149
301
|
key: "getListProps",
|
150
302
|
value: function getListProps() {
|
151
|
-
var _this$
|
152
|
-
size = _this$
|
153
|
-
uid = _this$
|
303
|
+
var _this$asProps4 = this.asProps,
|
304
|
+
size = _this$asProps4.size,
|
305
|
+
uid = _this$asProps4.uid;
|
154
306
|
return {
|
155
307
|
size: size,
|
156
308
|
uid: uid,
|
@@ -160,12 +312,12 @@ var DropdownMenuRoot = /*#__PURE__*/function (_Component) {
|
|
160
312
|
}, {
|
161
313
|
key: "getPopperProps",
|
162
314
|
value: function getPopperProps() {
|
163
|
-
var _this$
|
164
|
-
uid = _this$
|
165
|
-
disablePortal = _this$
|
166
|
-
ignorePortalsStacking = _this$
|
167
|
-
interaction = _this$
|
168
|
-
highlightedIndex = _this$
|
315
|
+
var _this$asProps5 = this.asProps,
|
316
|
+
uid = _this$asProps5.uid,
|
317
|
+
disablePortal = _this$asProps5.disablePortal,
|
318
|
+
ignorePortalsStacking = _this$asProps5.ignorePortalsStacking,
|
319
|
+
interaction = _this$asProps5.interaction,
|
320
|
+
highlightedIndex = _this$asProps5.highlightedIndex;
|
169
321
|
return {
|
170
322
|
ref: this.popperRef,
|
171
323
|
tabIndex: 0,
|
@@ -180,21 +332,29 @@ var DropdownMenuRoot = /*#__PURE__*/function (_Component) {
|
|
180
332
|
}, {
|
181
333
|
key: "getItemProps",
|
182
334
|
value: function getItemProps(props, index) {
|
183
|
-
var
|
184
|
-
|
185
|
-
|
186
|
-
|
335
|
+
var _this3 = this;
|
336
|
+
var _this$asProps6 = this.asProps,
|
337
|
+
size = _this$asProps6.size,
|
338
|
+
highlightedIndex = _this$asProps6.highlightedIndex,
|
339
|
+
uid = _this$asProps6.uid;
|
187
340
|
var highlighted = index === highlightedIndex;
|
188
|
-
var
|
341
|
+
var ref = this.itemRefs[index];
|
189
342
|
this.itemProps[index] = props;
|
190
343
|
if (highlighted) {
|
191
|
-
|
344
|
+
ref = function ref(node) {
|
345
|
+
_this3.itemRefs[index] = node;
|
346
|
+
_this3.scrollToNode(node);
|
347
|
+
};
|
192
348
|
}
|
193
|
-
return
|
349
|
+
return {
|
194
350
|
id: "igc-".concat(uid, "-option-").concat(index),
|
195
351
|
size: size,
|
196
|
-
highlighted: highlighted
|
197
|
-
|
352
|
+
highlighted: highlighted,
|
353
|
+
focusLock: this.state.focusLockItemIndex === index,
|
354
|
+
triggerRef: this.triggerRef,
|
355
|
+
ref: ref,
|
356
|
+
index: index
|
357
|
+
};
|
198
358
|
}
|
199
359
|
}, {
|
200
360
|
key: "getItemHintProps",
|
@@ -225,6 +385,8 @@ var DropdownMenuRoot = /*#__PURE__*/function (_Component) {
|
|
225
385
|
if (highlightedIndex == null) {
|
226
386
|
if (selectedIndex !== -1) {
|
227
387
|
highlightedIndex = selectedIndex;
|
388
|
+
} else if (this.highlightedItemRef.current) {
|
389
|
+
highlightedIndex = this.prevHighlightedIndex;
|
228
390
|
} else {
|
229
391
|
highlightedIndex = amount < 0 ? 0 : itemsLastIndex;
|
230
392
|
}
|
@@ -244,22 +406,25 @@ var DropdownMenuRoot = /*#__PURE__*/function (_Component) {
|
|
244
406
|
}, {
|
245
407
|
key: "componentDidUpdate",
|
246
408
|
value: function componentDidUpdate() {
|
247
|
-
var
|
248
|
-
if (!visible) {
|
409
|
+
var _this4 = this;
|
410
|
+
if (!this.asProps.visible) {
|
249
411
|
this.handlers.highlightedIndex(null);
|
250
412
|
}
|
413
|
+
if ((this.state.focusLockItemIndex !== this.asProps.highlightedIndex || !this.asProps.visible) && this.state.focusLockItemIndex !== null) {
|
414
|
+
setTimeout(function () {
|
415
|
+
_this4.setState({
|
416
|
+
focusLockItemIndex: null
|
417
|
+
});
|
418
|
+
}, 0);
|
419
|
+
}
|
251
420
|
}
|
252
421
|
}, {
|
253
422
|
key: "render",
|
254
423
|
value: function render() {
|
255
424
|
var _ref = this.asProps;
|
256
|
-
var
|
257
|
-
Children = _this$asProps5.Children,
|
258
|
-
interaction = _this$asProps5.interaction,
|
259
|
-
dataUiName = _this$asProps5['data-ui-name'];
|
260
|
-
var props = {};
|
425
|
+
var Children = this.asProps.Children;
|
261
426
|
this.itemProps = [];
|
262
|
-
return /*#__PURE__*/React.createElement(Dropdown, _assignProps(
|
427
|
+
return /*#__PURE__*/React.createElement(Dropdown, _assignProps({}, _ref), /*#__PURE__*/React.createElement(Children, null));
|
263
428
|
}
|
264
429
|
}]);
|
265
430
|
return DropdownMenuRoot;
|
@@ -277,10 +442,10 @@ _defineProperty(DropdownMenuRoot, "defaultProps", {
|
|
277
442
|
});
|
278
443
|
function List(props) {
|
279
444
|
var _ref2 = arguments[0],
|
280
|
-
|
445
|
+
_ref10;
|
281
446
|
var SDropdownMenuList = ScrollAreaComponent;
|
282
447
|
var uid = props.uid;
|
283
|
-
return
|
448
|
+
return _ref10 = sstyled(props.styles), /*#__PURE__*/React.createElement(SDropdownMenuList, _ref10.cn("SDropdownMenuList", _objectSpread({}, _assignProps2({
|
284
449
|
"tabIndex": null,
|
285
450
|
"role": 'menu',
|
286
451
|
"aria-labelledby": "igc-".concat(uid, "-trigger"),
|
@@ -308,22 +473,72 @@ function Menu(props) {
|
|
308
473
|
};
|
309
474
|
return /*#__PURE__*/React.createElement(DropdownMenu.Popper, popperProps, /*#__PURE__*/React.createElement(DropdownMenu.List, _assignProps3({}, _ref3)));
|
310
475
|
}
|
311
|
-
function Item(
|
312
|
-
var
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
476
|
+
function Item(_ref16) {
|
477
|
+
var _ref4 = arguments[0],
|
478
|
+
_ref11;
|
479
|
+
var styles = _ref16.styles,
|
480
|
+
label = _ref16.label,
|
481
|
+
triggerRef = _ref16.triggerRef,
|
482
|
+
focusLock = _ref16.focusLock,
|
483
|
+
disabled = _ref16.disabled,
|
484
|
+
highlighted = _ref16.highlighted;
|
485
|
+
var SDropdownMenuItem = Flex;
|
486
|
+
var ref = React.useRef();
|
487
|
+
useFocusLock(ref, false, triggerRef, !focusLock || disabled, true);
|
488
|
+
return _ref11 = sstyled(styles), /*#__PURE__*/React.createElement(SDropdownMenuItem, _ref11.cn("SDropdownMenuItem", _objectSpread({}, _assignProps4({
|
489
|
+
"ref": ref,
|
490
|
+
"role": 'menuitem',
|
491
|
+
"tabIndex": -1,
|
492
|
+
"id": label,
|
493
|
+
"use:highlighted": !disabled && highlighted
|
494
|
+
}, _ref4))));
|
495
|
+
}
|
496
|
+
function Nesting(_ref17) {
|
497
|
+
var _ref5 = arguments[0],
|
498
|
+
_ref12;
|
499
|
+
var styles = _ref17.styles;
|
500
|
+
var SDropdownMenuNesting = DropdownMenu.Item;
|
501
|
+
return _ref12 = sstyled(styles), /*#__PURE__*/React.createElement(SDropdownMenuNesting, _ref12.cn("SDropdownMenuNesting", _objectSpread({}, _assignProps5({
|
502
|
+
"aria-haspopup": 'true'
|
503
|
+
}, _ref5))));
|
504
|
+
}
|
505
|
+
function NestingTrigger(_ref18) {
|
506
|
+
var _ref6 = arguments[0],
|
507
|
+
_ref13;
|
508
|
+
var styles = _ref18.styles,
|
509
|
+
visible = _ref18.visible,
|
510
|
+
onNestedVisibleChange = _ref18.onNestedVisibleChange;
|
511
|
+
var SDropdownMenuItem = Flex;
|
512
|
+
var lastUserInteractionRef = React.useRef(undefined);
|
513
|
+
React.useEffect(function () {
|
514
|
+
onNestedVisibleChange(lastUserInteractionRef.current);
|
515
|
+
}, [visible]);
|
516
|
+
var handleMouseEvent = React.useCallback(function () {
|
517
|
+
lastUserInteractionRef.current = 'mouse';
|
518
|
+
}, []);
|
519
|
+
var handleKeyboardEvent = React.useCallback(function () {
|
520
|
+
lastUserInteractionRef.current = 'keyboard';
|
521
|
+
}, []);
|
522
|
+
React.useEffect(function () {
|
523
|
+
document.addEventListener('mouseover', handleMouseEvent, {
|
524
|
+
capture: true
|
525
|
+
});
|
526
|
+
document.addEventListener('keydown', handleKeyboardEvent, {
|
527
|
+
capture: true
|
528
|
+
});
|
529
|
+
return function () {
|
530
|
+
document.removeEventListener('mouseover', handleMouseEvent, {
|
531
|
+
capture: true
|
532
|
+
});
|
533
|
+
document.removeEventListener('keydown', handleKeyboardEvent, {
|
534
|
+
capture: true
|
535
|
+
});
|
536
|
+
};
|
537
|
+
}, []);
|
538
|
+
return _ref13 = sstyled(styles), /*#__PURE__*/React.createElement(SDropdownMenuItem, _ref13.cn("SDropdownMenuItem", _objectSpread({}, _assignProps6({
|
539
|
+
"nesting-trigger": true,
|
540
|
+
"tabIndex": 0
|
541
|
+
}, _ref6))));
|
327
542
|
}
|
328
543
|
function Addon(props) {
|
329
544
|
var _useBox = useBox(props, props.forwardRef),
|
@@ -331,33 +546,33 @@ function Addon(props) {
|
|
331
546
|
SDropdownMenuItemAddon = _useBox2[0],
|
332
547
|
_useBox2$ = _useBox2[1],
|
333
548
|
className = _useBox2$.className,
|
334
|
-
other = _objectWithoutProperties(_useBox2$,
|
549
|
+
other = _objectWithoutProperties(_useBox2$, _excluded);
|
335
550
|
var styles = sstyled(props.styles);
|
336
551
|
return /*#__PURE__*/React.createElement(SDropdownMenuItemAddon, _extends({
|
337
552
|
className: cn(styles.cn('SDropdownMenuItemAddon', props).className, className) || undefined
|
338
553
|
}, other));
|
339
554
|
}
|
340
555
|
function Hint(props) {
|
341
|
-
var
|
342
|
-
|
556
|
+
var _ref7 = arguments[0],
|
557
|
+
_ref14;
|
343
558
|
var SDropdownMenuItem = Flex;
|
344
|
-
return
|
559
|
+
return _ref14 = sstyled(props.styles), /*#__PURE__*/React.createElement(SDropdownMenuItem, _ref14.cn("SDropdownMenuItem", _objectSpread({}, _assignProps7({
|
345
560
|
"variant": 'hint'
|
346
|
-
},
|
561
|
+
}, _ref7))));
|
347
562
|
}
|
348
563
|
function Title(props) {
|
349
|
-
var
|
350
|
-
|
564
|
+
var _ref8 = arguments[0],
|
565
|
+
_ref15;
|
351
566
|
var SDropdownMenuItem = Flex;
|
352
|
-
return
|
567
|
+
return _ref15 = sstyled(props.styles), /*#__PURE__*/React.createElement(SDropdownMenuItem, _ref15.cn("SDropdownMenuItem", _objectSpread({}, _assignProps8({
|
353
568
|
"variant": 'title'
|
354
|
-
},
|
569
|
+
}, _ref8))));
|
355
570
|
}
|
356
571
|
function Trigger() {
|
357
|
-
var
|
358
|
-
return /*#__PURE__*/React.createElement(Dropdown.Trigger,
|
572
|
+
var _ref9 = arguments[0];
|
573
|
+
return /*#__PURE__*/React.createElement(Dropdown.Trigger, _assignProps9({
|
359
574
|
"aria-haspopup": 'true'
|
360
|
-
},
|
575
|
+
}, _ref9));
|
361
576
|
}
|
362
577
|
var DropdownMenu = createComponent(DropdownMenuRoot, {
|
363
578
|
Trigger: Trigger,
|
@@ -367,6 +582,10 @@ var DropdownMenu = createComponent(DropdownMenuRoot, {
|
|
367
582
|
Item: [Item, {
|
368
583
|
Addon: Addon
|
369
584
|
}],
|
585
|
+
Nesting: [Nesting, {
|
586
|
+
Trigger: NestingTrigger,
|
587
|
+
Addon: Addon
|
588
|
+
}],
|
370
589
|
ItemTitle: Title,
|
371
590
|
ItemHint: Hint
|
372
591
|
}, {
|