@procore/core-react 12.50.0 → 12.51.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -0
- package/README.md +14 -0
- package/dist/AnchorNavigation/AnchorNavigation.styles.js +4 -4
- package/dist/AnchorNavigation/AnchorNavigationProvider.js +11 -2
- package/dist/AnchorNavigation/AnchorNavigationProvider.js.map +1 -1
- package/dist/Avatar/Avatar.styles.js +5 -5
- package/dist/AvatarStack/AvatarStack.styles.js +8 -8
- package/dist/Badge/Badge.styles.js +2 -2
- package/dist/BadgePill/BadgePill.styles.js +4 -4
- package/dist/Banner/Banner.styles.js +10 -10
- package/dist/Box/Box.styles.js +1 -1
- package/dist/Breadcrumbs/Breadcrumbs.d.ts +15 -2
- package/dist/Breadcrumbs/Breadcrumbs.js +27 -4
- package/dist/Breadcrumbs/Breadcrumbs.js.map +1 -1
- package/dist/Breadcrumbs/Breadcrumbs.styles.js +4 -4
- package/dist/Breadcrumbs/Breadcrumbs.types.d.ts +9 -0
- package/dist/Breadcrumbs/Breadcrumbs.types.js.map +1 -1
- package/dist/Button/Button.styles.js +11 -12
- package/dist/Button/Button.styles.js.map +1 -1
- package/dist/Calendar/Calendar.styles.js +9 -9
- package/dist/Card/Card.styles.js +1 -1
- package/dist/Checkbox/Checkbox.styles.js +6 -6
- package/dist/ContactItem/ContactItem.styles.js +5 -5
- package/dist/Content/Content.styles.js +2 -2
- package/dist/DateInput/DateInput.styles.js +6 -6
- package/dist/DetailPage/DetailPage.styles.js +7 -7
- package/dist/Dropdown/Dropdown.js +2 -2
- package/dist/Dropdown/Dropdown.js.map +1 -1
- package/dist/Dropdown/Dropdown.styles.js +3 -3
- package/dist/Dropdown/Dropdown.types.d.ts +12 -2
- package/dist/Dropdown/Dropdown.types.js.map +1 -1
- package/dist/DropdownFlyout/DropdownFlyout.helpers.d.ts +3 -0
- package/dist/DropdownFlyout/DropdownFlyout.helpers.js +30 -2
- package/dist/DropdownFlyout/DropdownFlyout.helpers.js.map +1 -1
- package/dist/DropdownFlyout/DropdownFlyout.js +7 -1
- package/dist/DropdownFlyout/DropdownFlyout.js.map +1 -1
- package/dist/DropdownFlyout/DropdownFlyout.styles.js +5 -5
- package/dist/DropdownFlyout/DropdownFlyout.styles.js.map +1 -1
- package/dist/DropdownFlyout/DropdownFlyout.types.d.ts +4 -0
- package/dist/DropdownFlyout/DropdownFlyout.types.js.map +1 -1
- package/dist/Dropzone/Dropzone.js +1 -1
- package/dist/Dropzone/Dropzone.styles.js +9 -9
- package/dist/EmptyState/EmptyState.styles.js +6 -6
- package/dist/Field/Field.styles.js +3 -3
- package/dist/FileList/FileList.styles.js +3 -3
- package/dist/FileSelect/FileExplorer/FileExplorer.styles.js +9 -9
- package/dist/FileSelect/FileExplorer/FileExplorerSidebar.styles.js +3 -3
- package/dist/FileSelect/FileSelect.styles.js +2 -2
- package/dist/FileSelect/FileSelectDropzone/FileSelectDropzone.styles.js +3 -3
- package/dist/FileSelect/FileTokenList/FileTokenList.styles.js +2 -2
- package/dist/FileSelect/GridSource/GridSource.styles.js +6 -6
- package/dist/FileSelect/LocalSource/LocalSource.styles.js +4 -4
- package/dist/FileSelect/SourceItem/SourceItem.styles.js +3 -3
- package/dist/FileSelect/ThumbnailList/ThumbnailList.styles.js +6 -6
- package/dist/FileSelect/TreeSource/TreeSource.styles.js +1 -1
- package/dist/FileToken/FileToken.styles.js +6 -6
- package/dist/FilterToken/FilterToken.styles.js +5 -5
- package/dist/FlexList/FlexList.styles.js +1 -1
- package/dist/Form/Form.styles.js +13 -13
- package/dist/Form/StyledFormikForm.styles.js +2 -2
- package/dist/GhostPlaceholder/GhostPlaceholder.styles.js +3 -3
- package/dist/GhostPlaceholder/GhostPlaceholder.styles.js.map +1 -1
- package/dist/GhostPlaceholder/GhostPlaceholder.types.d.ts +10 -0
- package/dist/GhostPlaceholder/GhostPlaceholder.types.js.map +1 -1
- package/dist/Grid/Grid.styles.js +2 -2
- package/dist/GroupSelect/GroupSelect.styles.js +1 -1
- package/dist/Input/Input.styles.js +1 -1
- package/dist/Link/Link.styles.js +1 -1
- package/dist/ListPage/ListPage.styles.js +8 -8
- package/dist/Loader/Loader.styles.js +2 -2
- package/dist/Menu/Menu.js +7 -0
- package/dist/Menu/Menu.js.map +1 -1
- package/dist/Menu/Menu.types.d.ts +1 -0
- package/dist/Menu/Menu.types.js.map +1 -1
- package/dist/MenuImperative/MenuImperative.styles.d.ts +1 -0
- package/dist/MenuImperative/MenuImperative.styles.js +25 -22
- package/dist/MenuImperative/MenuImperative.styles.js.map +1 -1
- package/dist/MenuImperative/sensors.js +20 -4
- package/dist/MenuImperative/sensors.js.map +1 -1
- package/dist/Modal/Modal.styles.js +13 -13
- package/dist/MultiSelect/MultiSelect.styles.js +8 -8
- package/dist/NextMenu/NextMenu.styles.js +3 -3
- package/dist/NextTile/NextTile.styles.js +5 -5
- package/dist/Notation/Notation.js +1 -1
- package/dist/NumberInput/NumberInput.styles.js +7 -7
- package/dist/Overlay/OverlayArrow.styles.js +1 -1
- package/dist/PageLayout/PageLayout.styles.js +17 -19
- package/dist/PageLayout/PageLayout.styles.js.map +1 -1
- package/dist/PageTemplate/PageFooterTemplate/PageFooterTemplate.styles.js +1 -1
- package/dist/PageTemplate/PageHeaderTemplate/PageHeaderTemplate.styles.js +3 -3
- package/dist/PageTemplate/PagePaneTemplate/PagePaneTemplate.styles.js +2 -2
- package/dist/PageTemplate/PageTemplate/PageTemplate.styles.js +3 -3
- package/dist/Pagination/Pagination.styles.js +5 -5
- package/dist/Panel/Panel.styles.js +11 -11
- package/dist/Pill/Pill.styles.js +3 -3
- package/dist/PillSelect/PillSelect.styles.js +4 -4
- package/dist/Popover/Popover.styles.js +2 -2
- package/dist/Portal/Portal.styles.js +1 -1
- package/dist/ProgressBar/ProgressBar.styles.js +2 -2
- package/dist/RadioButton/RadioButton.styles.js +3 -3
- package/dist/Required/Required.styles.js +3 -3
- package/dist/Search/Search.styles.js +5 -5
- package/dist/Section/Section.styles.js +7 -7
- package/dist/SegmentedController/SegmentedController.styles.js +4 -4
- package/dist/Select/Select.styles.js +8 -8
- package/dist/Semantic/Semantic.styles.js +9 -9
- package/dist/Slider/Slider.styles.js +5 -5
- package/dist/Spinner/Spinner.styles.js +7 -7
- package/dist/SplitViewCard/SplitViewCard.styles.js +8 -8
- package/dist/SuperSelect/SuperSelect.components.js +2 -0
- package/dist/SuperSelect/SuperSelect.components.js.map +1 -1
- package/dist/SuperSelect/SuperSelect.presets.styles.js +1 -1
- package/dist/SuperSelect/SuperSelect.styles.d.ts +1 -0
- package/dist/SuperSelect/SuperSelect.styles.js +79 -76
- package/dist/SuperSelect/SuperSelect.styles.js.map +1 -1
- package/dist/SuperSelect/SuperSelect.types.d.ts +1 -0
- package/dist/SuperSelect/SuperSelect.types.js.map +1 -1
- package/dist/SuperSelect/useSuperSelect.js +1 -0
- package/dist/SuperSelect/useSuperSelect.js.map +1 -1
- package/dist/Switch/Switch.styles.js +4 -4
- package/dist/Table/Table.styles.js +29 -29
- package/dist/TableShelf/TableShelf.styles.js +5 -5
- package/dist/Tabs/Tabs.styles.js +16 -16
- package/dist/Tearsheet/Tearsheet.styles.js +5 -5
- package/dist/TextArea/TextArea.styles.js +1 -1
- package/dist/TextEditorOutput/TextEditorOutput.styles.js +1 -1
- package/dist/Thumbnail/Thumbnail.styles.js +21 -21
- package/dist/ThumbnailGrid/ThumbnailGrid.styles.js +7 -7
- package/dist/TieredSelect/TieredSelect.styles.js +9 -9
- package/dist/Tile/Tile.styles.js +8 -8
- package/dist/Title/Title.styles.js +7 -7
- package/dist/Toast/Toast.styles.js +3 -3
- package/dist/ToggleButton/ToggleButton.styles.js +1 -1
- package/dist/Token/Token.styles.js +5 -5
- package/dist/ToolHeader/ToolHeader.styles.js +6 -6
- package/dist/ToolLandingPage/ToolLandingPage.styles.js +3 -3
- package/dist/Tooltip/Tooltip.styles.js +3 -3
- package/dist/Tree/Tree.js +1 -1
- package/dist/Tree/Tree.styles.js +10 -10
- package/dist/Typeahead/Typeahead.styles.js +4 -4
- package/dist/Typography/Typography.styles.js +1 -1
- package/dist/Typography/Typography.table.story.js +2 -2
- package/dist/_hooks/I18n.d.ts +137 -10
- package/dist/_locales/de-DE.json +9 -5
- package/dist/_locales/en-AU.json +8 -4
- package/dist/_locales/en-CA.json +8 -4
- package/dist/_locales/en-GB.json +8 -4
- package/dist/_locales/en.json +1 -1
- package/dist/_locales/es-ES.json +8 -4
- package/dist/_locales/es.json +7 -3
- package/dist/_locales/fr-CA.json +11 -7
- package/dist/_locales/fr-FR.json +9 -5
- package/dist/_locales/is-IS.json +8 -4
- package/dist/_locales/it-IT.json +7 -3
- package/dist/_locales/ja-JP.json +9 -5
- package/dist/_locales/nb-NO.json +80 -76
- package/dist/_locales/pl-PL.json +8 -4
- package/dist/_locales/pt-BR.json +7 -3
- package/dist/_locales/pt-PT.json +14 -10
- package/dist/_locales/th-TH.json +8 -4
- package/dist/_locales/zh-SG.json +7 -3
- package/dist/_locales/zh-TW.json +13 -9
- package/dist/_storyHelpers_/components/Deprecation.styles.js +1 -1
- package/dist/_storyHelpers_/components/StoryGrid.js +3 -3
- package/dist/_storyHelpers_/primaryButtonThemeCssVars.d.ts +8 -0
- package/dist/_storyHelpers_/primaryButtonThemeCssVars.js +9 -0
- package/dist/_storyHelpers_/primaryButtonThemeCssVars.js.map +1 -0
- package/dist/_typedoc/AnchorNavigation/AnchorNavigation.types.json +4 -4
- package/dist/_typedoc/Avatar/Avatar.types.json +20 -20
- package/dist/_typedoc/AvatarStack/AvatarStack.types.json +25 -25
- package/dist/_typedoc/Badge/Badge.types.json +6 -6
- package/dist/_typedoc/Banner/Banner.types.json +15 -15
- package/dist/_typedoc/Box/Box.types.json +68 -68
- package/dist/_typedoc/Breadcrumbs/Breadcrumbs.types.json +32 -10
- package/dist/_typedoc/Button/Button.types.json +14 -14
- package/dist/_typedoc/Calendar/Calendar.types.json +80 -80
- package/dist/_typedoc/Card/Card.types.json +6 -6
- package/dist/_typedoc/Checkbox/Checkbox.types.json +8 -8
- package/dist/_typedoc/ContactItem/ContactItem.types.json +9 -9
- package/dist/_typedoc/DateInput/DateInput.types.json +35 -35
- package/dist/_typedoc/DateSelect/DateSelect.types.json +14 -14
- package/dist/_typedoc/DetailPage/DetailPage.types.json +5 -5
- package/dist/_typedoc/Dropdown/Dropdown.types.json +41 -40
- package/dist/_typedoc/DropdownFlyout/DropdownFlyout.types.json +41 -31
- package/dist/_typedoc/Dropzone/Dropzone.types.json +44 -44
- package/dist/_typedoc/EmptyState/EmptyState.types.json +18 -18
- package/dist/_typedoc/FileList/FileList.types.json +9 -9
- package/dist/_typedoc/FileSelect/FileSelect.types.json +27 -27
- package/dist/_typedoc/FileSelect/GridSource/GridSource.types.json +20 -20
- package/dist/_typedoc/FileSelect/LocalSource/LocalSource.types.json +14 -14
- package/dist/_typedoc/FileSelect/TreeSource/TreeSource.types.json +9 -9
- package/dist/_typedoc/Flex/Flex.types.json +27 -27
- package/dist/_typedoc/FlexList/FlexList.types.json +30 -30
- package/dist/_typedoc/Form/Form.types.json +770 -770
- package/dist/_typedoc/GhostPlaceholder/GhostPlaceholder.types.json +14 -13
- package/dist/_typedoc/Grid/Grid.types.json +8 -8
- package/dist/_typedoc/GroupSelect/GroupSelect.types.json +54 -54
- package/dist/_typedoc/Input/Input.types.json +2 -2
- package/dist/_typedoc/Link/Link.types.json +1 -1
- package/dist/_typedoc/ListPage/ListPage.types.json +13 -13
- package/dist/_typedoc/Menu/Menu.types.json +62 -62
- package/dist/_typedoc/MenuImperative/MenuImperative.types.json +84 -84
- package/dist/_typedoc/Modal/Modal.types.json +48 -48
- package/dist/_typedoc/MultiSelect/MultiSelect.types.json +33 -33
- package/dist/_typedoc/NextTile/NextTile.types.json +33 -33
- package/dist/_typedoc/Notation/Notation.types.json +4 -4
- package/dist/_typedoc/NumberInput/NumberInput.types.json +52 -52
- package/dist/_typedoc/OverlayTrigger/OverlayTrigger.types.json +33 -33
- package/dist/_typedoc/PageLayout/PageLayout.types.json +39 -39
- package/dist/_typedoc/Pagination/Pagination.types.json +7 -7
- package/dist/_typedoc/Panel/Panel.types.json +28 -28
- package/dist/_typedoc/Pill/Pill.types.json +2 -2
- package/dist/_typedoc/PillSelect/PillSelect.types.json +49 -49
- package/dist/_typedoc/Popover/Popover.types.json +15 -15
- package/dist/_typedoc/ProgressBar/ProgressBar.types.json +7 -7
- package/dist/_typedoc/RadioButton/RadioButton.types.json +6 -6
- package/dist/_typedoc/Required/Required.types.json +5 -5
- package/dist/_typedoc/Search/Search.types.json +18 -18
- package/dist/_typedoc/Section/Section.types.json +15 -15
- package/dist/_typedoc/SegmentedController/SegmentedController.types.json +21 -21
- package/dist/_typedoc/Select/Select.types.json +67 -67
- package/dist/_typedoc/SettingsPage/SettingsPage.types.json +10 -10
- package/dist/_typedoc/Slider/Slider.types.json +6 -6
- package/dist/_typedoc/Spinner/Spinner.types.json +9 -9
- package/dist/_typedoc/SplitViewCard/SplitViewCard.types.json +14 -14
- package/dist/_typedoc/Table/Table.types.json +105 -105
- package/dist/_typedoc/Tabs/Tabs.types.json +23 -23
- package/dist/_typedoc/Tearsheet/Tearsheet.types.json +17 -17
- package/dist/_typedoc/TextArea/TextArea.types.json +3 -3
- package/dist/_typedoc/TextEditor/TextEditor.types.json +11 -11
- package/dist/_typedoc/TextEditorOutput/TextEditorOutput.types.json +4 -4
- package/dist/_typedoc/Thumbnail/Thumbnail.types.json +19 -19
- package/dist/_typedoc/TieredDropdown/TieredDropdown.types.json +43 -43
- package/dist/_typedoc/TieredSelect/TieredSelect.types.json +29 -29
- package/dist/_typedoc/Tile/Tile.types.json +8 -8
- package/dist/_typedoc/Title/Title.types.json +1 -1
- package/dist/_typedoc/Toast/Toast.types.json +4 -4
- package/dist/_typedoc/ToggleButton/ToggleButton.types.json +4 -4
- package/dist/_typedoc/Token/Token.types.json +7 -7
- package/dist/_typedoc/ToolHeader/ToolHeader.types.json +10 -10
- package/dist/_typedoc/ToolLandingPage/ToolLandingPage.types.json +8 -8
- package/dist/_typedoc/Tooltip/Tooltip.types.json +15 -15
- package/dist/_typedoc/Tree/Tree.types.json +88 -88
- package/dist/_typedoc/Typeahead/Typeahead.types.json +2 -2
- package/dist/_typedoc/Typography/Typography.types.json +9 -9
- package/dist/_typedoc/_utils/types.json +3 -3
- package/dist/_typedoc/a11y-tips.json +1 -1
- package/dist/_utils/shadowDOM.d.ts +3 -0
- package/dist/_utils/shadowDOM.js +20 -0
- package/dist/_utils/shadowDOM.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
|
@@ -7,11 +7,11 @@ export var loaderTransitionDuration = 250;
|
|
|
7
7
|
var movingStripes = /*#__PURE__*/keyframes(["from{background-position:", "px 0;}100%{background-position:0 ", "px;}"], backgroundSize, backgroundSize);
|
|
8
8
|
export var StyledLoader = /*#__PURE__*/styled.div.withConfig({
|
|
9
9
|
displayName: "StyledLoader",
|
|
10
|
-
componentId: "core-
|
|
10
|
+
componentId: "core-12_51_0__sc-wgvjj9-0"
|
|
11
11
|
})(["display:block;height:100%;left:0;min-width:12px;position:absolute;transition:width ", "ms ease-out;top:0;"], loaderTransitionDuration);
|
|
12
12
|
export var StyledGradient = /*#__PURE__*/styled.div.withConfig({
|
|
13
13
|
displayName: "StyledGradient",
|
|
14
|
-
componentId: "core-
|
|
14
|
+
componentId: "core-12_51_0__sc-wgvjj9-1"
|
|
15
15
|
})(["height:100%;", ""], function (_ref) {
|
|
16
16
|
var $animated = _ref.$animated;
|
|
17
17
|
return $animated ? css(["@media (prefers-reduced-motion:no-preference){animation:", " 0.5s linear infinite;}background-image:linear-gradient( 45deg,", " 26%,", " 25%,", " 51%,", " 50%,", " 76%,", " 75%,", " );background-size:", "px ", "px;"], movingStripes, color1, color2, color2, color1, color1, color2, color2, backgroundSize, backgroundSize) : css(["background-color:", ";"], colors.blue50);
|
package/dist/Menu/Menu.js
CHANGED
|
@@ -78,6 +78,7 @@ export function useMenu(_ref) {
|
|
|
78
78
|
size: 0
|
|
79
79
|
});
|
|
80
80
|
var highlighted = React.useRef(null);
|
|
81
|
+
var keyboardNavigated = React.useRef(false);
|
|
81
82
|
var keyHandlerRef = externalKeyHandlerRef || /*#__PURE__*/React.createRef();
|
|
82
83
|
var selectItem = React.useCallback(function (selection) {
|
|
83
84
|
onSelect(selection);
|
|
@@ -85,9 +86,11 @@ export function useMenu(_ref) {
|
|
|
85
86
|
var _onKeyDown = React.useCallback(function (e) {
|
|
86
87
|
var key = e.key;
|
|
87
88
|
if (key === 'ArrowDown' || key === 'Down') {
|
|
89
|
+
keyboardNavigated.current = true;
|
|
88
90
|
listNavigation.increment();
|
|
89
91
|
e.preventDefault();
|
|
90
92
|
} else if (key === 'ArrowUp' || key === 'Up') {
|
|
93
|
+
keyboardNavigated.current = true;
|
|
91
94
|
listNavigation.decrement();
|
|
92
95
|
e.preventDefault();
|
|
93
96
|
} else if (key === 'Enter') {
|
|
@@ -118,6 +121,7 @@ export function useMenu(_ref) {
|
|
|
118
121
|
},
|
|
119
122
|
highlighted: highlighted,
|
|
120
123
|
isSelectable: isSelectable,
|
|
124
|
+
keyboardNavigated: keyboardNavigated,
|
|
121
125
|
listNavigation: listNavigation,
|
|
122
126
|
multiple: multiple,
|
|
123
127
|
onScrollBottom: onScrollBottom,
|
|
@@ -212,6 +216,7 @@ export var Item = /*#__PURE__*/React.forwardRef(function Item(_ref4, ref) {
|
|
|
212
216
|
props = _objectWithoutProperties(_ref4, _excluded3);
|
|
213
217
|
var _useMenuHookContext = useMenuHookContext(),
|
|
214
218
|
highlighted = _useMenuHookContext.highlighted,
|
|
219
|
+
keyboardNavigated = _useMenuHookContext.keyboardNavigated,
|
|
215
220
|
listNavigation = _useMenuHookContext.listNavigation,
|
|
216
221
|
multiple = _useMenuHookContext.multiple,
|
|
217
222
|
selectItem = _useMenuHookContext.selectItem;
|
|
@@ -256,11 +261,13 @@ export var Item = /*#__PURE__*/React.forwardRef(function Item(_ref4, ref) {
|
|
|
256
261
|
_onMouseMove(event);
|
|
257
262
|
}
|
|
258
263
|
if (listNavigation.index !== index) {
|
|
264
|
+
keyboardNavigated.current = false;
|
|
259
265
|
listNavigation.set(index);
|
|
260
266
|
}
|
|
261
267
|
},
|
|
262
268
|
ref: itemRef,
|
|
263
269
|
role: "menuitem",
|
|
270
|
+
$focusVisible: isHighlighted && keyboardNavigated.current,
|
|
264
271
|
$highlighted: isHighlighted,
|
|
265
272
|
$selected: selected
|
|
266
273
|
}), children);
|
package/dist/Menu/Menu.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Menu.js","names":["React","StyledFooter","StyledGroup","StyledGroupLabel","StyledHeader","StyledItem","StyledMenu","StyledOptions","StyledSearch","StyledWrapper","useOverlayTriggerContext","Typeahead","useEventListener","useI18nContext","useListNavigation","addSubcomponents","usingHookOrDefault","onScrollBottomThreshold","isItem","element","type","Item","scrollIntoView","index","parentElement","scrollTop","offsetTop","clientHeight","_element$parentElemen","parentHeight","checkBottomScrollPosition","callback","onScroll","e","currentTarget","HTMLElement","scrollHeight","noop","useMenu","_ref","_ref$isSelectable","isSelectable","externalKeyHandlerRef","keyHandlerRef","_ref$multiple","multiple","onScrollBottom","_ref$onSearch","onSearch","_ref$onSelect","onSelect","_ref$scrollable","scrollable","listNavigation","circular","initialIndex","size","highlighted","useRef","createRef","selectItem","useCallback","selection","onKeyDown","key","increment","preventDefault","decrement","current","click","useEffect","el","addEventListener","removeEventListener","domHandlers","nativeEvent","MenuHookContext","createContext","useMenuHookContext","context","useContext","Error","Menu_","forwardRef","Menu","_ref2","ref","children","_ref2$UNSAFE_closesOn","UNSAFE_closesOnSelect","_ref2$isSelectable","_ref2$onSelect","_ref2$scrollable","usingHook","props","_objectWithoutProperties","_excluded","overlayTriggerContext","menu","reset","hide","event","createElement","Provider","value","_objectSpread","_extends","role","tabIndex","Group","_ref3","item","_excluded2","_ref4","_ref4$index","_ref4$onClick","onClick","_ref4$selected","selected","_ref4$suggested","suggested","onMouseMove","_excluded3","_useMenuHookContext","itemRef","isHighlighted","set","group","$highlighted","$selected","Options","_ref5","className","_ref5$scrollable","_useMenuHookContext2","menuScrollable","optionsRef","Children","toArray","filter","length","setSize","handler","scope","$scrollable","map","child","isValidElement","selectableIndex","cloneElement","Search","_ref6","_ref6$i18nScope","i18nScope","placeholder","_onChange","onChange","_excluded4","I18n","_React$useState","useState","_React$useState2","_slicedToArray","setValue","_menu$onSearch","target","call","autoFocus","t","Header","_ref7","_objectDestructuringEmpty","Footer","_ref8","_ref8$padding","padding","_excluded5","displayName"],"sources":["../../src/Menu/Menu.tsx"],"sourcesContent":["import React from 'react'\nimport {\n StyledFooter,\n StyledGroup,\n StyledGroupLabel,\n StyledHeader,\n StyledItem,\n StyledMenu,\n StyledOptions,\n StyledSearch,\n StyledWrapper,\n} from '../MenuImperative/MenuImperative.styles'\nimport { useOverlayTriggerContext } from '../OverlayTrigger/OverlayTrigger'\nimport type { TypeaheadProps } from '../Typeahead'\nimport { Typeahead } from '../Typeahead'\nimport { useEventListener } from '../_hooks/EventListener'\nimport { useI18nContext } from '../_hooks/I18n'\nimport { useListNavigation } from '../_hooks/ListNavigation'\nimport { addSubcomponents } from '../_utils/addSubcomponents'\nimport { usingHookOrDefault } from '../_utils/usingHookOrDefault'\nimport type {\n ElementTypeChecker,\n MenuFooterProps,\n MenuGroupProps,\n MenuHeaderProps,\n MenuHook,\n MenuHookConfig,\n MenuItemProps,\n MenuOptionsProps,\n MenuProps,\n MenuSearchProps,\n MenuSelection,\n} from './Menu.types'\n\nconst onScrollBottomThreshold = 8\n\nexport const isItem: ElementTypeChecker = (element) => element.type === Item\n\nfunction scrollIntoView(index: number, element: HTMLElement) {\n if (!element.parentElement) {\n return\n }\n\n if (index === 0) {\n element.parentElement.scrollTop = 0\n\n return\n }\n\n const { offsetTop, clientHeight } = element\n\n const { scrollTop, clientHeight: parentHeight } = element.parentElement\n\n if (offsetTop < scrollTop) {\n element.parentElement.scrollTop = offsetTop\n } else if (offsetTop + clientHeight > scrollTop + parentHeight) {\n element.parentElement.scrollTop = offsetTop - parentHeight + clientHeight\n }\n}\n\nfunction checkBottomScrollPosition(callback?: (e: Event) => void) {\n return function onScroll(e: Event) {\n if (\n callback &&\n e.currentTarget instanceof HTMLElement &&\n e.currentTarget.scrollTop >=\n e.currentTarget.scrollHeight -\n e.currentTarget.clientHeight -\n onScrollBottomThreshold\n ) {\n callback(e)\n }\n }\n}\n\nfunction noop() {}\n\nexport function useMenu({\n isSelectable = isItem,\n keyHandlerRef: externalKeyHandlerRef,\n multiple = false,\n onScrollBottom,\n onSearch = noop,\n onSelect = noop,\n scrollable = true,\n}: MenuHookConfig): MenuHook {\n const listNavigation = useListNavigation({\n circular: !onScrollBottom,\n initialIndex: 0,\n size: 0,\n })\n\n const highlighted = React.useRef<HTMLDivElement>(null)\n\n const keyHandlerRef = externalKeyHandlerRef || React.createRef<HTMLElement>()\n\n const selectItem = React.useCallback(\n (selection: MenuSelection) => {\n onSelect(selection)\n },\n [onSelect]\n )\n\n const onKeyDown = React.useCallback(\n function (e: KeyboardEvent) {\n const { key } = e\n\n if (key === 'ArrowDown' || key === 'Down') {\n listNavigation.increment()\n e.preventDefault()\n } else if (key === 'ArrowUp' || key === 'Up') {\n listNavigation.decrement()\n e.preventDefault()\n } else if (key === 'Enter') {\n if (highlighted.current) {\n highlighted.current.click()\n }\n }\n },\n [listNavigation]\n )\n\n // TODO - deprecate keyhandlerRef, this is just for backwards compatibility since we already exposed it\n React.useEffect(\n function () {\n let el: HTMLElement\n\n if (keyHandlerRef.current) {\n keyHandlerRef.current.addEventListener('keydown', onKeyDown)\n\n el = keyHandlerRef.current\n }\n\n return function () {\n if (el) {\n el.removeEventListener('keydown', onKeyDown)\n }\n }\n },\n [keyHandlerRef, onKeyDown]\n )\n\n return {\n domHandlers: {\n onKeyDown: (e: React.KeyboardEvent<HTMLElement>) =>\n onKeyDown(e.nativeEvent),\n },\n highlighted,\n isSelectable,\n listNavigation,\n multiple,\n onScrollBottom,\n onSearch,\n scrollable,\n selectItem,\n }\n}\n\nexport const MenuHookContext = React.createContext<MenuHook | null>(null)\n\nexport function useMenuHookContext(): MenuHook {\n const context = React.useContext(MenuHookContext)\n\n if (context === null) {\n throw new Error(\n 'Cannot find `MenuHook` context, please wrap your component in `<MenuHookContext.Provider>`'\n )\n }\n\n return context\n}\n\nexport const Menu_ = React.forwardRef<HTMLDivElement, MenuProps>(function Menu(\n {\n children,\n UNSAFE_closesOnSelect = true,\n isSelectable = isItem,\n keyHandlerRef,\n onScrollBottom,\n onSelect = noop,\n onSearch,\n scrollable = true,\n usingHook,\n ...props\n },\n ref\n) {\n // Don't be tempted to put this in useMenu. In order for hooks to be portable\n // across the dom tree, they should not contain context consumers.\n const overlayTriggerContext = useOverlayTriggerContext()\n\n const menu = usingHookOrDefault(\n usingHook,\n useMenu\n )({\n isSelectable,\n keyHandlerRef,\n onScrollBottom,\n onSelect,\n onSearch,\n scrollable,\n })\n\n React.useEffect(\n function () {\n // When unmounting, reset the listNavigation index and set\n // the current highlighted item to null. we only want to run this once,\n // so don't pass any dependencies\n return function () {\n menu.listNavigation.reset()\n menu.highlighted.current = null\n }\n },\n /* eslint-disable */ [] /* eslint-enable */\n )\n\n function selectItem(selection: MenuSelection) {\n menu.selectItem(selection)\n\n if (UNSAFE_closesOnSelect) {\n overlayTriggerContext.hide(selection.event)\n }\n }\n\n return (\n <MenuHookContext.Provider value={{ ...menu, selectItem }}>\n <StyledWrapper {...menu.domHandlers} ref={ref} role=\"menu\" tabIndex={0}>\n <StyledMenu {...props}>{children}</StyledMenu>\n </StyledWrapper>\n </MenuHookContext.Provider>\n )\n})\n\nexport const Group = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & MenuGroupProps\n>(function Group({ children, item, ...props }, ref) {\n return (\n <StyledGroup\n {...props}\n ref={ref}\n // onClick={(event) => {\n // TODO: implement selecting groups?\n // }}\n >\n <StyledGroupLabel>{children}</StyledGroupLabel>\n </StyledGroup>\n )\n})\n\nexport const Item = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & MenuItemProps\n>(function Item(\n {\n children,\n index = 0,\n item,\n onClick = noop,\n selected = false,\n suggested = false,\n onMouseMove,\n ...props\n },\n ref\n) {\n const { highlighted, listNavigation, multiple, selectItem } =\n useMenuHookContext()\n\n const itemRef =\n // eslint-disable-next-line react-hooks/rules-of-hooks\n (ref as React.RefObject<HTMLDivElement>) || React.useRef<HTMLDivElement>()\n\n const isHighlighted = index === listNavigation.index\n\n React.useEffect(\n function () {\n // When mounting, check if this item is selected or suggested, and if\n // it is, then set it as the current index and scroll to it.\n // We only want to run this once, so don't pass any dependencies\n\n if (multiple) {\n // don't do this behavior in multiple mode\n return\n }\n\n if (itemRef.current && (selected || suggested)) {\n highlighted.current = itemRef.current\n listNavigation.set(index)\n }\n },\n /* eslint-disable */ [] /* eslint-enable */\n )\n\n React.useEffect(\n function () {\n // If this item has become highlighted, scroll to it\n if (itemRef.current && isHighlighted) {\n highlighted.current = itemRef.current\n scrollIntoView(index, itemRef.current)\n }\n },\n [highlighted, index, isHighlighted, itemRef]\n )\n\n return (\n <StyledItem\n {...props}\n onClick={(event: React.MouseEvent<HTMLDivElement>) => {\n listNavigation.set(index)\n\n selectItem({ event: event.nativeEvent, item, group: false })\n\n onClick(event)\n }}\n onMouseMove={(event: React.MouseEvent<HTMLDivElement>) => {\n if (onMouseMove) {\n onMouseMove(event)\n }\n if (listNavigation.index !== index) {\n listNavigation.set(index)\n }\n }}\n ref={itemRef}\n role=\"menuitem\"\n $highlighted={isHighlighted}\n $selected={selected}\n >\n {children}\n </StyledItem>\n )\n})\n\nexport const Options = React.forwardRef<HTMLDivElement, MenuOptionsProps>(\n function Options({ children, className, scrollable = true }, ref) {\n const {\n listNavigation,\n isSelectable,\n onScrollBottom,\n scrollable: menuScrollable,\n } = useMenuHookContext()\n\n const optionsRef =\n (ref as React.RefObject<HTMLDivElement>) || React.createRef()\n\n const size = React.Children.toArray(children).filter(isSelectable).length\n\n React.useEffect(\n function () {\n listNavigation.setSize(size)\n },\n [listNavigation, size]\n )\n\n useEventListener({\n event: 'scroll',\n handler: checkBottomScrollPosition(onScrollBottom),\n scope: optionsRef,\n })\n\n let index = 0\n\n return (\n <StyledOptions\n className={className}\n ref={optionsRef}\n $scrollable={menuScrollable || scrollable}\n >\n {React.Children.map(children, (child) => {\n if (React.isValidElement(child) && isSelectable(child)) {\n const selectableIndex = index\n\n index = index + 1\n\n return React.cloneElement(child, {\n index: selectableIndex,\n })\n }\n\n return child\n })}\n </StyledOptions>\n )\n }\n)\n\nexport const Search = ({\n className,\n i18nScope = 'core.menu',\n placeholder,\n onChange: _onChange,\n ...props\n}: MenuSearchProps) => {\n const I18n = useI18nContext()\n const menu = useMenuHookContext()\n\n const [value, setValue] = React.useState('')\n\n const onChange: TypeaheadProps['onChange'] = React.useCallback(\n function (value: string, event: any) {\n setValue(event.target.value)\n menu.onSearch?.(event)\n menu.listNavigation.set(0)\n _onChange?.(event)\n },\n [_onChange]\n )\n\n return (\n <StyledSearch className={className}>\n <Typeahead\n {...props}\n autoFocus={true}\n placeholder={placeholder || I18n.t('search', { scope: i18nScope })}\n onChange={onChange}\n value={value}\n />\n </StyledSearch>\n )\n}\n\nexport const Header = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & MenuHeaderProps\n>(function Header({ ...props }, ref) {\n return <StyledHeader ref={ref} {...props} />\n})\n\nexport const Footer = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & MenuFooterProps\n>(function Footer({ padding = 'md lg', ...props }, ref) {\n return <StyledFooter ref={ref} padding={padding} {...props} />\n})\n\nMenu_.displayName = 'Menu'\n\nFooter.displayName = 'Menu.Footer'\n\nGroup.displayName = 'Menu.Group'\n\nHeader.displayName = 'Menu.Header'\n\nItem.displayName = 'Menu.Item'\n\nOptions.displayName = 'Menu.Options'\n\nSearch.displayName = 'Menu.Search'\n\n/**\n\n Menus are used in conjunction with components that contain dropdowns.\n For example, multi select, single select, and dropdown.\n\n @since 10.19.0\n\n @see [Storybook](https://stories.core.procore.com/?path=/story/core-react_demos-menu--demo)\n\n @see [Design Guidelines](https://design.procore.com/menu)\n\n */\nexport const Menu = addSubcomponents(\n {\n Footer,\n Group,\n Header,\n Item,\n Options,\n Search,\n },\n Menu_\n)\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Menu.js","names":["React","StyledFooter","StyledGroup","StyledGroupLabel","StyledHeader","StyledItem","StyledMenu","StyledOptions","StyledSearch","StyledWrapper","useOverlayTriggerContext","Typeahead","useEventListener","useI18nContext","useListNavigation","addSubcomponents","usingHookOrDefault","onScrollBottomThreshold","isItem","element","type","Item","scrollIntoView","index","parentElement","scrollTop","offsetTop","clientHeight","_element$parentElemen","parentHeight","checkBottomScrollPosition","callback","onScroll","e","currentTarget","HTMLElement","scrollHeight","noop","useMenu","_ref","_ref$isSelectable","isSelectable","externalKeyHandlerRef","keyHandlerRef","_ref$multiple","multiple","onScrollBottom","_ref$onSearch","onSearch","_ref$onSelect","onSelect","_ref$scrollable","scrollable","listNavigation","circular","initialIndex","size","highlighted","useRef","keyboardNavigated","createRef","selectItem","useCallback","selection","onKeyDown","key","current","increment","preventDefault","decrement","click","useEffect","el","addEventListener","removeEventListener","domHandlers","nativeEvent","MenuHookContext","createContext","useMenuHookContext","context","useContext","Error","Menu_","forwardRef","Menu","_ref2","ref","children","_ref2$UNSAFE_closesOn","UNSAFE_closesOnSelect","_ref2$isSelectable","_ref2$onSelect","_ref2$scrollable","usingHook","props","_objectWithoutProperties","_excluded","overlayTriggerContext","menu","reset","hide","event","createElement","Provider","value","_objectSpread","_extends","role","tabIndex","Group","_ref3","item","_excluded2","_ref4","_ref4$index","_ref4$onClick","onClick","_ref4$selected","selected","_ref4$suggested","suggested","onMouseMove","_excluded3","_useMenuHookContext","itemRef","isHighlighted","set","group","$focusVisible","$highlighted","$selected","Options","_ref5","className","_ref5$scrollable","_useMenuHookContext2","menuScrollable","optionsRef","Children","toArray","filter","length","setSize","handler","scope","$scrollable","map","child","isValidElement","selectableIndex","cloneElement","Search","_ref6","_ref6$i18nScope","i18nScope","placeholder","_onChange","onChange","_excluded4","I18n","_React$useState","useState","_React$useState2","_slicedToArray","setValue","_menu$onSearch","target","call","autoFocus","t","Header","_ref7","_objectDestructuringEmpty","Footer","_ref8","_ref8$padding","padding","_excluded5","displayName"],"sources":["../../src/Menu/Menu.tsx"],"sourcesContent":["import React from 'react'\nimport {\n StyledFooter,\n StyledGroup,\n StyledGroupLabel,\n StyledHeader,\n StyledItem,\n StyledMenu,\n StyledOptions,\n StyledSearch,\n StyledWrapper,\n} from '../MenuImperative/MenuImperative.styles'\nimport { useOverlayTriggerContext } from '../OverlayTrigger/OverlayTrigger'\nimport type { TypeaheadProps } from '../Typeahead'\nimport { Typeahead } from '../Typeahead'\nimport { useEventListener } from '../_hooks/EventListener'\nimport { useI18nContext } from '../_hooks/I18n'\nimport { useListNavigation } from '../_hooks/ListNavigation'\nimport { addSubcomponents } from '../_utils/addSubcomponents'\nimport { usingHookOrDefault } from '../_utils/usingHookOrDefault'\nimport type {\n ElementTypeChecker,\n MenuFooterProps,\n MenuGroupProps,\n MenuHeaderProps,\n MenuHook,\n MenuHookConfig,\n MenuItemProps,\n MenuOptionsProps,\n MenuProps,\n MenuSearchProps,\n MenuSelection,\n} from './Menu.types'\n\nconst onScrollBottomThreshold = 8\n\nexport const isItem: ElementTypeChecker = (element) => element.type === Item\n\nfunction scrollIntoView(index: number, element: HTMLElement) {\n if (!element.parentElement) {\n return\n }\n\n if (index === 0) {\n element.parentElement.scrollTop = 0\n\n return\n }\n\n const { offsetTop, clientHeight } = element\n\n const { scrollTop, clientHeight: parentHeight } = element.parentElement\n\n if (offsetTop < scrollTop) {\n element.parentElement.scrollTop = offsetTop\n } else if (offsetTop + clientHeight > scrollTop + parentHeight) {\n element.parentElement.scrollTop = offsetTop - parentHeight + clientHeight\n }\n}\n\nfunction checkBottomScrollPosition(callback?: (e: Event) => void) {\n return function onScroll(e: Event) {\n if (\n callback &&\n e.currentTarget instanceof HTMLElement &&\n e.currentTarget.scrollTop >=\n e.currentTarget.scrollHeight -\n e.currentTarget.clientHeight -\n onScrollBottomThreshold\n ) {\n callback(e)\n }\n }\n}\n\nfunction noop() {}\n\nexport function useMenu({\n isSelectable = isItem,\n keyHandlerRef: externalKeyHandlerRef,\n multiple = false,\n onScrollBottom,\n onSearch = noop,\n onSelect = noop,\n scrollable = true,\n}: MenuHookConfig): MenuHook {\n const listNavigation = useListNavigation({\n circular: !onScrollBottom,\n initialIndex: 0,\n size: 0,\n })\n\n const highlighted = React.useRef<HTMLDivElement>(null)\n const keyboardNavigated = React.useRef(false)\n\n const keyHandlerRef = externalKeyHandlerRef || React.createRef<HTMLElement>()\n\n const selectItem = React.useCallback(\n (selection: MenuSelection) => {\n onSelect(selection)\n },\n [onSelect]\n )\n\n const onKeyDown = React.useCallback(\n function (e: KeyboardEvent) {\n const { key } = e\n\n if (key === 'ArrowDown' || key === 'Down') {\n keyboardNavigated.current = true\n listNavigation.increment()\n e.preventDefault()\n } else if (key === 'ArrowUp' || key === 'Up') {\n keyboardNavigated.current = true\n listNavigation.decrement()\n e.preventDefault()\n } else if (key === 'Enter') {\n if (highlighted.current) {\n highlighted.current.click()\n }\n }\n },\n [listNavigation]\n )\n\n // TODO - deprecate keyhandlerRef, this is just for backwards compatibility since we already exposed it\n React.useEffect(\n function () {\n let el: HTMLElement\n\n if (keyHandlerRef.current) {\n keyHandlerRef.current.addEventListener('keydown', onKeyDown)\n\n el = keyHandlerRef.current\n }\n\n return function () {\n if (el) {\n el.removeEventListener('keydown', onKeyDown)\n }\n }\n },\n [keyHandlerRef, onKeyDown]\n )\n\n return {\n domHandlers: {\n onKeyDown: (e: React.KeyboardEvent<HTMLElement>) =>\n onKeyDown(e.nativeEvent),\n },\n highlighted,\n isSelectable,\n keyboardNavigated,\n listNavigation,\n multiple,\n onScrollBottom,\n onSearch,\n scrollable,\n selectItem,\n }\n}\n\nexport const MenuHookContext = React.createContext<MenuHook | null>(null)\n\nexport function useMenuHookContext(): MenuHook {\n const context = React.useContext(MenuHookContext)\n\n if (context === null) {\n throw new Error(\n 'Cannot find `MenuHook` context, please wrap your component in `<MenuHookContext.Provider>`'\n )\n }\n\n return context\n}\n\nexport const Menu_ = React.forwardRef<HTMLDivElement, MenuProps>(function Menu(\n {\n children,\n UNSAFE_closesOnSelect = true,\n isSelectable = isItem,\n keyHandlerRef,\n onScrollBottom,\n onSelect = noop,\n onSearch,\n scrollable = true,\n usingHook,\n ...props\n },\n ref\n) {\n // Don't be tempted to put this in useMenu. In order for hooks to be portable\n // across the dom tree, they should not contain context consumers.\n const overlayTriggerContext = useOverlayTriggerContext()\n\n const menu = usingHookOrDefault(\n usingHook,\n useMenu\n )({\n isSelectable,\n keyHandlerRef,\n onScrollBottom,\n onSelect,\n onSearch,\n scrollable,\n })\n\n React.useEffect(\n function () {\n // When unmounting, reset the listNavigation index and set\n // the current highlighted item to null. we only want to run this once,\n // so don't pass any dependencies\n return function () {\n menu.listNavigation.reset()\n menu.highlighted.current = null\n }\n },\n /* eslint-disable */ [] /* eslint-enable */\n )\n\n function selectItem(selection: MenuSelection) {\n menu.selectItem(selection)\n\n if (UNSAFE_closesOnSelect) {\n overlayTriggerContext.hide(selection.event)\n }\n }\n\n return (\n <MenuHookContext.Provider value={{ ...menu, selectItem }}>\n <StyledWrapper {...menu.domHandlers} ref={ref} role=\"menu\" tabIndex={0}>\n <StyledMenu {...props}>{children}</StyledMenu>\n </StyledWrapper>\n </MenuHookContext.Provider>\n )\n})\n\nexport const Group = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & MenuGroupProps\n>(function Group({ children, item, ...props }, ref) {\n return (\n <StyledGroup\n {...props}\n ref={ref}\n // onClick={(event) => {\n // TODO: implement selecting groups?\n // }}\n >\n <StyledGroupLabel>{children}</StyledGroupLabel>\n </StyledGroup>\n )\n})\n\nexport const Item = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & MenuItemProps\n>(function Item(\n {\n children,\n index = 0,\n item,\n onClick = noop,\n selected = false,\n suggested = false,\n onMouseMove,\n ...props\n },\n ref\n) {\n const {\n highlighted,\n keyboardNavigated,\n listNavigation,\n multiple,\n selectItem,\n } = useMenuHookContext()\n\n const itemRef =\n // eslint-disable-next-line react-hooks/rules-of-hooks\n (ref as React.RefObject<HTMLDivElement>) || React.useRef<HTMLDivElement>()\n\n const isHighlighted = index === listNavigation.index\n\n React.useEffect(\n function () {\n // When mounting, check if this item is selected or suggested, and if\n // it is, then set it as the current index and scroll to it.\n // We only want to run this once, so don't pass any dependencies\n\n if (multiple) {\n // don't do this behavior in multiple mode\n return\n }\n\n if (itemRef.current && (selected || suggested)) {\n highlighted.current = itemRef.current\n listNavigation.set(index)\n }\n },\n /* eslint-disable */ [] /* eslint-enable */\n )\n\n React.useEffect(\n function () {\n // If this item has become highlighted, scroll to it\n if (itemRef.current && isHighlighted) {\n highlighted.current = itemRef.current\n scrollIntoView(index, itemRef.current)\n }\n },\n [highlighted, index, isHighlighted, itemRef]\n )\n\n return (\n <StyledItem\n {...props}\n onClick={(event: React.MouseEvent<HTMLDivElement>) => {\n listNavigation.set(index)\n\n selectItem({ event: event.nativeEvent, item, group: false })\n\n onClick(event)\n }}\n onMouseMove={(event: React.MouseEvent<HTMLDivElement>) => {\n if (onMouseMove) {\n onMouseMove(event)\n }\n if (listNavigation.index !== index) {\n keyboardNavigated.current = false\n listNavigation.set(index)\n }\n }}\n ref={itemRef}\n role=\"menuitem\"\n $focusVisible={isHighlighted && keyboardNavigated.current}\n $highlighted={isHighlighted}\n $selected={selected}\n >\n {children}\n </StyledItem>\n )\n})\n\nexport const Options = React.forwardRef<HTMLDivElement, MenuOptionsProps>(\n function Options({ children, className, scrollable = true }, ref) {\n const {\n listNavigation,\n isSelectable,\n onScrollBottom,\n scrollable: menuScrollable,\n } = useMenuHookContext()\n\n const optionsRef =\n (ref as React.RefObject<HTMLDivElement>) || React.createRef()\n\n const size = React.Children.toArray(children).filter(isSelectable).length\n\n React.useEffect(\n function () {\n listNavigation.setSize(size)\n },\n [listNavigation, size]\n )\n\n useEventListener({\n event: 'scroll',\n handler: checkBottomScrollPosition(onScrollBottom),\n scope: optionsRef,\n })\n\n let index = 0\n\n return (\n <StyledOptions\n className={className}\n ref={optionsRef}\n $scrollable={menuScrollable || scrollable}\n >\n {React.Children.map(children, (child) => {\n if (React.isValidElement(child) && isSelectable(child)) {\n const selectableIndex = index\n\n index = index + 1\n\n return React.cloneElement(child, {\n index: selectableIndex,\n })\n }\n\n return child\n })}\n </StyledOptions>\n )\n }\n)\n\nexport const Search = ({\n className,\n i18nScope = 'core.menu',\n placeholder,\n onChange: _onChange,\n ...props\n}: MenuSearchProps) => {\n const I18n = useI18nContext()\n const menu = useMenuHookContext()\n\n const [value, setValue] = React.useState('')\n\n const onChange: TypeaheadProps['onChange'] = React.useCallback(\n function (value: string, event: any) {\n setValue(event.target.value)\n menu.onSearch?.(event)\n menu.listNavigation.set(0)\n _onChange?.(event)\n },\n [_onChange]\n )\n\n return (\n <StyledSearch className={className}>\n <Typeahead\n {...props}\n autoFocus={true}\n placeholder={placeholder || I18n.t('search', { scope: i18nScope })}\n onChange={onChange}\n value={value}\n />\n </StyledSearch>\n )\n}\n\nexport const Header = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & MenuHeaderProps\n>(function Header({ ...props }, ref) {\n return <StyledHeader ref={ref} {...props} />\n})\n\nexport const Footer = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & MenuFooterProps\n>(function Footer({ padding = 'md lg', ...props }, ref) {\n return <StyledFooter ref={ref} padding={padding} {...props} />\n})\n\nMenu_.displayName = 'Menu'\n\nFooter.displayName = 'Menu.Footer'\n\nGroup.displayName = 'Menu.Group'\n\nHeader.displayName = 'Menu.Header'\n\nItem.displayName = 'Menu.Item'\n\nOptions.displayName = 'Menu.Options'\n\nSearch.displayName = 'Menu.Search'\n\n/**\n\n Menus are used in conjunction with components that contain dropdowns.\n For example, multi select, single select, and dropdown.\n\n @since 10.19.0\n\n @see [Storybook](https://stories.core.procore.com/?path=/story/core-react_demos-menu--demo)\n\n @see [Design Guidelines](https://design.procore.com/menu)\n\n */\nexport const Menu = addSubcomponents(\n {\n Footer,\n Group,\n Header,\n Item,\n Options,\n Search,\n },\n Menu_\n)\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Menu.types.js","names":[],"sources":["../../src/Menu/Menu.types.ts"],"sourcesContent":["import type React from 'react'\nimport type { BoxProps } from '../Box/Box.types'\nimport type { SearchHook } from '../Search/Search.types'\nimport type {\n TypeaheadInputProps,\n TypeaheadProps,\n} from '../Typeahead/Typeahead.types'\nimport type { ListNavigationApi } from '../_hooks/ListNavigation'\nimport type { ChangeEvent } from '../_hooks/TextEntry'\nimport type { Props } from '../_utils/types'\n\nexport type ElementTypeChecker = (\n element: any,\n index?: number,\n list?: any[]\n) => boolean\n\nexport interface MenuSelection {\n /**\n * @since 10.19.0\n */\n event: Event\n /**\n * @since 10.19.0\n */\n group: boolean\n /**\n * @since 10.19.0\n */\n item: any\n}\n\nexport interface MenuNavigationProps extends Props {\n /**\n * @since 10.19.0\n */\n index?: number\n /**\n * @since 10.19.0\n */\n ref?: React.Ref<any>\n}\n\nexport interface MenuItemProps extends MenuNavigationProps {\n /**\n * @since 10.19.0\n */\n children?: React.ReactNode\n /**\n * @since 10.19.0\n */\n className?: string\n /**\n * Value which can be passed around various callback functions.\n * Can be anything!\n * @since 10.19.0\n */\n item?: any\n /**\n * @since 10.19.0\n */\n onClick?: (event: React.MouseEvent<HTMLElement, MouseEvent>) => any\n /**\n * Is the item selected\n * @default false\n * @since 10.19.0\n */\n selected?: boolean\n /**\n * @since 10.19.0\n */\n suggested?: boolean\n}\n\nexport interface MenuGroupProps {\n /**\n * @since 10.19.0\n */\n className?: string\n\n /**\n * Can the group item be clicked\n * @since 10.19.0\n */\n clickable?: boolean\n\n /**\n * Value which can be passed around various callback functions.\n * Can be anything!\n * @since 10.19.0\n */\n item?: any\n}\n\nexport interface MenuOptionsProps {\n /**\n * @since 10.19.0\n */\n children?: React.ReactNode\n /**\n * @since 10.19.0\n */\n className?: string\n /**\n * @since 10.19.0\n */\n padding?: string\n\n /**\n * @default true\n */\n scrollable?: boolean\n}\n\nexport interface MenuSearchProps\n extends Omit<TypeaheadProps, 'onChange'>,\n TypeaheadInputProps,\n Props {\n /**\n * The i18n key to use for the menu search's configurable strings. Defaults to\n * using the core library's default strings.\n * @since 10.19.0\n */\n i18nScope?: string\n /**\n * @since 10.21.0\n */\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void\n}\n\nexport interface MenuHeaderProps extends Props {\n /**\n * @since 10.19.0\n */\n tabIndex?: number\n}\n\nexport interface MenuFooterProps extends Omit<BoxProps, 'as'> {}\n\nexport interface MenuHookConfig {\n /**\n * @since 10.19.0\n */\n isSelectable?: MenuHook['isSelectable']\n /**\n * @since 10.19.0\n */\n keyHandlerRef?: React.RefObject<HTMLElement>\n /**\n * @since 10.19.0\n */\n multiple?: boolean\n /**\n * @since 10.19.0\n */\n onScrollBottom?: MenuHook['onScrollBottom']\n /**\n * @since 10.19.0\n */\n onSearch?: (event: ChangeEvent) => void\n /**\n * @since 10.19.0\n */\n onSelect?: MenuHook['selectItem']\n /**\n * @since 10.19.0\n */\n scrollable?: MenuHook['scrollable']\n /**\n * @since 10.19.0\n */\n usingSearchHook?: SearchHook\n}\n\nexport interface MenuHook {\n /**\n * @since 10.19.0\n */\n domHandlers: {\n onKeyDown: (e: React.KeyboardEvent<HTMLElement>) => void\n }\n /**\n * @since 10.19.0\n */\n highlighted: React.MutableRefObject<HTMLDivElement | null>\n /**\n * @since 10.19.0\n */\n isSelectable: ElementTypeChecker\n /**\n * @since 10.19.0\n */\n listNavigation: ListNavigationApi\n /**\n * @since 10.19.0\n */\n multiple: boolean\n /**\n * @since 10.19.0\n */\n onScrollBottom?: (e: Event) => void\n /**\n * @since 11\n */\n onSearch?: (event: ChangeEvent) => void\n /**\n * @default true\n */\n scrollable: boolean\n /**\n * @since 10.19.0\n */\n selectItem: (selection: MenuSelection) => void\n}\n\n// TODO unify with MenuHookConfig\nexport interface MenuProps extends Props, Omit<MenuOptionsProps, 'padding'> {\n /**\n * @deprecated\n *\n * The `isSelectable` prop has been deprecated and will be removed in a future version.\n * Menu item selection is now handled internally and there is no need to configure this\n * anymore.\n *\n * @deprecatedSince 10.20.0\n * @since 10.19.0\n */\n isSelectable?: ElementTypeChecker\n\n /**\n * Ref object which will get the key handler listeners\n * @since 10.19.0\n */\n keyHandlerRef?: React.RefObject<HTMLElement>\n /**\n * @since 10.19.0\n */\n onScrollBottom?: (e: Event) => void\n\n /**\n * Callback for selecting an item from the menu. `item` will be the `item` prop supplied to the\n * `Item` component. `group` will be `true` if the clicked item was a group label.\n * @since 10.19.0\n */\n onSelect?: (selection: MenuSelection) => any\n /**\n * @since 11\n */\n onSearch?: (event: ChangeEvent) => void\n /**\n * @deprecatedSince 9\n * @deprecated Never offically documented/supported. Please migrate to the other props like `onSelect` and `onSearch` on the `Menu` component. In v11, the **internal only** `useMenu` removed its search state. You should not be using `useMenu` nor this `usingHook` prop.\n * @since 10.19.0\n */\n usingHook?: MenuHook\n\n /**\n * Unsafe, do not use\n * @deprecatedSince 9\n * @deprecated Never offically documented/supported\n * @since 10.19.0\n */\n UNSAFE_closesOnSelect?: boolean\n}\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"Menu.types.js","names":[],"sources":["../../src/Menu/Menu.types.ts"],"sourcesContent":["import type React from 'react'\nimport type { BoxProps } from '../Box/Box.types'\nimport type { SearchHook } from '../Search/Search.types'\nimport type {\n TypeaheadInputProps,\n TypeaheadProps,\n} from '../Typeahead/Typeahead.types'\nimport type { ListNavigationApi } from '../_hooks/ListNavigation'\nimport type { ChangeEvent } from '../_hooks/TextEntry'\nimport type { Props } from '../_utils/types'\n\nexport type ElementTypeChecker = (\n element: any,\n index?: number,\n list?: any[]\n) => boolean\n\nexport interface MenuSelection {\n /**\n * @since 10.19.0\n */\n event: Event\n /**\n * @since 10.19.0\n */\n group: boolean\n /**\n * @since 10.19.0\n */\n item: any\n}\n\nexport interface MenuNavigationProps extends Props {\n /**\n * @since 10.19.0\n */\n index?: number\n /**\n * @since 10.19.0\n */\n ref?: React.Ref<any>\n}\n\nexport interface MenuItemProps extends MenuNavigationProps {\n /**\n * @since 10.19.0\n */\n children?: React.ReactNode\n /**\n * @since 10.19.0\n */\n className?: string\n /**\n * Value which can be passed around various callback functions.\n * Can be anything!\n * @since 10.19.0\n */\n item?: any\n /**\n * @since 10.19.0\n */\n onClick?: (event: React.MouseEvent<HTMLElement, MouseEvent>) => any\n /**\n * Is the item selected\n * @default false\n * @since 10.19.0\n */\n selected?: boolean\n /**\n * @since 10.19.0\n */\n suggested?: boolean\n}\n\nexport interface MenuGroupProps {\n /**\n * @since 10.19.0\n */\n className?: string\n\n /**\n * Can the group item be clicked\n * @since 10.19.0\n */\n clickable?: boolean\n\n /**\n * Value which can be passed around various callback functions.\n * Can be anything!\n * @since 10.19.0\n */\n item?: any\n}\n\nexport interface MenuOptionsProps {\n /**\n * @since 10.19.0\n */\n children?: React.ReactNode\n /**\n * @since 10.19.0\n */\n className?: string\n /**\n * @since 10.19.0\n */\n padding?: string\n\n /**\n * @default true\n */\n scrollable?: boolean\n}\n\nexport interface MenuSearchProps\n extends Omit<TypeaheadProps, 'onChange'>,\n TypeaheadInputProps,\n Props {\n /**\n * The i18n key to use for the menu search's configurable strings. Defaults to\n * using the core library's default strings.\n * @since 10.19.0\n */\n i18nScope?: string\n /**\n * @since 10.21.0\n */\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void\n}\n\nexport interface MenuHeaderProps extends Props {\n /**\n * @since 10.19.0\n */\n tabIndex?: number\n}\n\nexport interface MenuFooterProps extends Omit<BoxProps, 'as'> {}\n\nexport interface MenuHookConfig {\n /**\n * @since 10.19.0\n */\n isSelectable?: MenuHook['isSelectable']\n /**\n * @since 10.19.0\n */\n keyHandlerRef?: React.RefObject<HTMLElement>\n /**\n * @since 10.19.0\n */\n multiple?: boolean\n /**\n * @since 10.19.0\n */\n onScrollBottom?: MenuHook['onScrollBottom']\n /**\n * @since 10.19.0\n */\n onSearch?: (event: ChangeEvent) => void\n /**\n * @since 10.19.0\n */\n onSelect?: MenuHook['selectItem']\n /**\n * @since 10.19.0\n */\n scrollable?: MenuHook['scrollable']\n /**\n * @since 10.19.0\n */\n usingSearchHook?: SearchHook\n}\n\nexport interface MenuHook {\n /**\n * @since 10.19.0\n */\n domHandlers: {\n onKeyDown: (e: React.KeyboardEvent<HTMLElement>) => void\n }\n /**\n * @since 10.19.0\n */\n highlighted: React.MutableRefObject<HTMLDivElement | null>\n /**\n * @since 10.19.0\n */\n isSelectable: ElementTypeChecker\n keyboardNavigated: React.MutableRefObject<boolean>\n /**\n * @since 10.19.0\n */\n listNavigation: ListNavigationApi\n /**\n * @since 10.19.0\n */\n multiple: boolean\n /**\n * @since 10.19.0\n */\n onScrollBottom?: (e: Event) => void\n /**\n * @since 11\n */\n onSearch?: (event: ChangeEvent) => void\n /**\n * @default true\n */\n scrollable: boolean\n /**\n * @since 10.19.0\n */\n selectItem: (selection: MenuSelection) => void\n}\n\n// TODO unify with MenuHookConfig\nexport interface MenuProps extends Props, Omit<MenuOptionsProps, 'padding'> {\n /**\n * @deprecated\n *\n * The `isSelectable` prop has been deprecated and will be removed in a future version.\n * Menu item selection is now handled internally and there is no need to configure this\n * anymore.\n *\n * @deprecatedSince 10.20.0\n * @since 10.19.0\n */\n isSelectable?: ElementTypeChecker\n\n /**\n * Ref object which will get the key handler listeners\n * @since 10.19.0\n */\n keyHandlerRef?: React.RefObject<HTMLElement>\n /**\n * @since 10.19.0\n */\n onScrollBottom?: (e: Event) => void\n\n /**\n * Callback for selecting an item from the menu. `item` will be the `item` prop supplied to the\n * `Item` component. `group` will be `true` if the clicked item was a group label.\n * @since 10.19.0\n */\n onSelect?: (selection: MenuSelection) => any\n /**\n * @since 11\n */\n onSearch?: (event: ChangeEvent) => void\n /**\n * @deprecatedSince 9\n * @deprecated Never offically documented/supported. Please migrate to the other props like `onSelect` and `onSearch` on the `Menu` component. In v11, the **internal only** `useMenu` removed its search state. You should not be using `useMenu` nor this `usingHook` prop.\n * @since 10.19.0\n */\n usingHook?: MenuHook\n\n /**\n * Unsafe, do not use\n * @deprecatedSince 9\n * @deprecated Never offically documented/supported\n * @since 10.19.0\n */\n UNSAFE_closesOnSelect?: boolean\n}\n"],"mappings":""}
|
|
@@ -13,6 +13,7 @@ export declare const StyledItem: import("styled-components/dist/types").IStyledC
|
|
|
13
13
|
$disabled?: boolean | undefined;
|
|
14
14
|
$selected?: boolean | undefined;
|
|
15
15
|
$highlighted?: boolean | undefined;
|
|
16
|
+
$focusVisible?: boolean | undefined;
|
|
16
17
|
$isDraggable?: boolean | undefined;
|
|
17
18
|
$isDragging?: boolean | undefined;
|
|
18
19
|
}>> & string;
|
|
@@ -11,15 +11,15 @@ var optionMinHeight = 32;
|
|
|
11
11
|
// Do not merge with StyledMenu, needed for max-height working in IE
|
|
12
12
|
export var StyledWrapper = /*#__PURE__*/styled.div.withConfig({
|
|
13
13
|
displayName: "StyledWrapper",
|
|
14
|
-
componentId: "core-
|
|
14
|
+
componentId: "core-12_51_0__sc-z984sz-0"
|
|
15
15
|
})(["border-radius:inherit;display:flex;max-height:inherit;min-width:inherit;outline:none;width:inherit;"]);
|
|
16
16
|
export var StyledMenu = /*#__PURE__*/styled.div.withConfig({
|
|
17
17
|
displayName: "StyledMenu",
|
|
18
|
-
componentId: "core-
|
|
18
|
+
componentId: "core-12_51_0__sc-z984sz-1"
|
|
19
19
|
})(["border-radius:inherit;display:flex;flex-direction:column;outline:0;width:100%;"]);
|
|
20
20
|
export var StyledOptions = /*#__PURE__*/styled.div.withConfig({
|
|
21
21
|
displayName: "StyledOptions",
|
|
22
|
-
componentId: "core-
|
|
22
|
+
componentId: "core-12_51_0__sc-z984sz-2"
|
|
23
23
|
})(["flex-basis:auto;flex-grow:1;flex-shrink:1;min-height:", "px;", ";padding:", "px 0;position:relative;&:focus-visible{", " margin:-1px;}ol&{padding:", "px 0;list-style-type:none;margin:0;}"], optionMinHeight, function (_ref) {
|
|
24
24
|
var _ref$$scrollable = _ref.$scrollable,
|
|
25
25
|
$scrollable = _ref$$scrollable === void 0 ? true : _ref$$scrollable;
|
|
@@ -27,59 +27,62 @@ export var StyledOptions = /*#__PURE__*/styled.div.withConfig({
|
|
|
27
27
|
}, spacing.sm, getFocus(), spacing.sm);
|
|
28
28
|
export var StyledGrip = /*#__PURE__*/styled.div.withConfig({
|
|
29
29
|
displayName: "StyledGrip",
|
|
30
|
-
componentId: "core-
|
|
30
|
+
componentId: "core-12_51_0__sc-z984sz-3"
|
|
31
31
|
})(["padding:0 2px;height:24px;"]);
|
|
32
32
|
export var StyledHeader = /*#__PURE__*/styled.div.withConfig({
|
|
33
33
|
displayName: "StyledHeader",
|
|
34
|
-
componentId: "core-
|
|
34
|
+
componentId: "core-12_51_0__sc-z984sz-4"
|
|
35
35
|
})([""]);
|
|
36
36
|
export var StyledSearch = /*#__PURE__*/styled.div.withConfig({
|
|
37
37
|
displayName: "StyledSearch",
|
|
38
|
-
componentId: "core-
|
|
38
|
+
componentId: "core-12_51_0__sc-z984sz-5"
|
|
39
39
|
})(["padding:", "px ", "px ", "px;", " > *{pointer-events:none;}"], spacing.lg, spacing.lg, spacing.sm, StyledButton);
|
|
40
40
|
export var StyledGroup = /*#__PURE__*/styled.div.withConfig({
|
|
41
41
|
displayName: "StyledGroup",
|
|
42
|
-
componentId: "core-
|
|
42
|
+
componentId: "core-12_51_0__sc-z984sz-6"
|
|
43
43
|
})(["&:not(:first-child){margin-top:", "px;}"], spacing.md);
|
|
44
44
|
export var StyledGroupLabel = /*#__PURE__*/styled.span.withConfig({
|
|
45
45
|
displayName: "StyledGroupLabel",
|
|
46
|
-
componentId: "core-
|
|
46
|
+
componentId: "core-12_51_0__sc-z984sz-7"
|
|
47
47
|
})(["", " display:block;color:", ";font-weight:", ";padding:", "px ", "px;cursor:default;"], getTypographyIntent('body'), colors.gray15, typographyWeights.semibold, spacing.xs, spacing.lg);
|
|
48
48
|
export var StyledItem = /*#__PURE__*/styled.div.withConfig({
|
|
49
49
|
displayName: "StyledItem",
|
|
50
|
-
componentId: "core-
|
|
51
|
-
})(["", ";", " cursor:pointer;list-style-type:none;padding:", "px ", "px;a{color:", ";display:block;margin:-", "px -", "px;padding:", "px ", "px;text-decoration:none;&:hover{color:", ";text-decoration:none;}}&[data-highlighted='true']{background-color:", ";}", " ", "{color:inherit;cursor:pointer;}", " ", " ", ""], getTypographyIntent('body'), function (_ref2) {
|
|
50
|
+
componentId: "core-12_51_0__sc-z984sz-8"
|
|
51
|
+
})(["", ";", " cursor:pointer;list-style-type:none;padding:", "px ", "px;a{color:", ";display:block;margin:-", "px -", "px;padding:", "px ", "px;text-decoration:none;&:hover{color:", ";text-decoration:none;}}&[data-highlighted='true']{background-color:", ";}&[data-focus-visible='true']{box-shadow:inset 0 0 0 2px ", ";}", " ", " ", "{color:inherit;cursor:pointer;}", " ", " ", ""], getTypographyIntent('body'), function (_ref2) {
|
|
52
52
|
var as = _ref2.as;
|
|
53
53
|
return as === 'a' && css(["display:block;text-decoration:none;"]);
|
|
54
|
-
}, spacing.xs, spacing.lg, colors.gray15, spacing.xs, spacing.lg, spacing.xs, spacing.lg, colors.gray15, colors.gray96, function (_ref3) {
|
|
55
|
-
var $
|
|
54
|
+
}, spacing.xs, spacing.lg, colors.gray15, spacing.xs, spacing.lg, spacing.xs, spacing.lg, colors.gray15, colors.gray96, colors.blue40, function (_ref3) {
|
|
55
|
+
var $focusVisible = _ref3.$focusVisible;
|
|
56
|
+
return $focusVisible && css(["box-shadow:inset 0 0 0 2px ", ";"], colors.blue40);
|
|
57
|
+
}, function (_ref4) {
|
|
58
|
+
var $highlighted = _ref4.$highlighted;
|
|
56
59
|
return $highlighted && "background-color: ".concat(colors.gray96, ";");
|
|
57
|
-
}, StyledCheckboxLabel, function (
|
|
58
|
-
var $disabled =
|
|
59
|
-
$selected =
|
|
60
|
+
}, StyledCheckboxLabel, function (_ref5) {
|
|
61
|
+
var $disabled = _ref5.$disabled,
|
|
62
|
+
$selected = _ref5.$selected;
|
|
60
63
|
if ($disabled) {
|
|
61
64
|
return css(["&,", "{color:", ";cursor:default;}"], StyledCheckboxLabel, colors.gray85);
|
|
62
65
|
} else if ($selected) {
|
|
63
66
|
return css(["color:", ";font-weight:700;a,a:hover{color:", ";text-decoration:none;}&[data-highlighted='true']{background-color:", ";}"], colors.blue50, colors.blue50, colors.gray96);
|
|
64
67
|
}
|
|
65
68
|
return css(["color:", ";&[data-highlighted='true']{background-color:", ";}"], colors.gray15, colors.gray96);
|
|
66
|
-
}, function (
|
|
67
|
-
var $isDraggable =
|
|
69
|
+
}, function (_ref6) {
|
|
70
|
+
var $isDraggable = _ref6.$isDraggable;
|
|
68
71
|
if ($isDraggable) {
|
|
69
72
|
return css(["display:flex;align-items:center;", "{cursor:grab;&:before,&:after{cursor:pointer;}}&&&{padding-left:0;}"], StyledCheckboxLabel);
|
|
70
73
|
}
|
|
71
|
-
}, function (
|
|
72
|
-
var $isDragging =
|
|
74
|
+
}, function (_ref7) {
|
|
75
|
+
var $isDragging = _ref7.$isDragging;
|
|
73
76
|
if ($isDragging) {
|
|
74
|
-
return css(["background-color:", ";"], colors.gray96);
|
|
77
|
+
return css(["background-color:", ";box-shadow:none;"], colors.gray96);
|
|
75
78
|
}
|
|
76
79
|
});
|
|
77
80
|
export var StyledDroppable = /*#__PURE__*/styled.div.withConfig({
|
|
78
81
|
displayName: "StyledDroppable",
|
|
79
|
-
componentId: "core-
|
|
82
|
+
componentId: "core-12_51_0__sc-z984sz-9"
|
|
80
83
|
})(["", ",", "{padding-left:28px;}"], StyledGroup, StyledItem);
|
|
81
84
|
export var StyledFooter = /*#__PURE__*/styled(Box).withConfig({
|
|
82
85
|
displayName: "StyledFooter",
|
|
83
|
-
componentId: "core-
|
|
86
|
+
componentId: "core-12_51_0__sc-z984sz-10"
|
|
84
87
|
})(["border-top:1px solid ", ";border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;"], colors.gray85);
|
|
85
88
|
//# sourceMappingURL=MenuImperative.styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuImperative.styles.js","names":["styled","css","Box","StyledButton","StyledCheckboxLabel","getTypographyIntent","typographyWeights","colors","getFocus","spacing","optionMinHeight","StyledWrapper","div","withConfig","displayName","componentId","StyledMenu","StyledOptions","_ref","_ref$$scrollable","$scrollable","sm","StyledGrip","StyledHeader","StyledSearch","lg","StyledGroup","md","StyledGroupLabel","span","gray15","semibold","xs","StyledItem","_ref2","as","gray96","_ref3","$highlighted","concat","
|
|
1
|
+
{"version":3,"file":"MenuImperative.styles.js","names":["styled","css","Box","StyledButton","StyledCheckboxLabel","getTypographyIntent","typographyWeights","colors","getFocus","spacing","optionMinHeight","StyledWrapper","div","withConfig","displayName","componentId","StyledMenu","StyledOptions","_ref","_ref$$scrollable","$scrollable","sm","StyledGrip","StyledHeader","StyledSearch","lg","StyledGroup","md","StyledGroupLabel","span","gray15","semibold","xs","StyledItem","_ref2","as","gray96","blue40","_ref3","$focusVisible","_ref4","$highlighted","concat","_ref5","$disabled","$selected","gray85","blue50","_ref6","$isDraggable","_ref7","$isDragging","StyledDroppable","StyledFooter"],"sources":["../../src/MenuImperative/MenuImperative.styles.ts"],"sourcesContent":["import styled, { css } from 'styled-components'\nimport { Box } from '../Box'\nimport { StyledButton } from '../Button'\nimport { StyledCheckboxLabel } from '../Checkbox/Checkbox.styles'\nimport { getTypographyIntent, typographyWeights } from '../Typography'\nimport { colors } from '../_styles/colors'\nimport { getFocus } from '../_styles/mixins'\nimport { spacing } from '../_styles/spacing'\n\nconst optionMinHeight = 32\n\n// Do not merge with StyledMenu, needed for max-height working in IE\nexport const StyledWrapper = styled.div`\n border-radius: inherit;\n display: flex;\n max-height: inherit;\n min-width: inherit;\n outline: none;\n width: inherit;\n`\n\nexport const StyledMenu = styled.div`\n border-radius: inherit;\n display: flex;\n flex-direction: column;\n outline: 0;\n width: 100%;\n`\n\nexport const StyledOptions = styled.div<{ $scrollable?: boolean }>`\n flex-basis: auto;\n flex-grow: 1;\n flex-shrink: 1;\n min-height: ${optionMinHeight}px;\n ${({ $scrollable = true }) => $scrollable && `overflow-y: auto`};\n padding: ${spacing.sm}px 0;\n position: relative;\n\n &:focus-visible {\n ${getFocus()}\n margin: -1px;\n }\n ol& {\n padding: ${spacing.sm}px 0;\n list-style-type: none;\n margin: 0;\n }\n`\n\nexport const StyledGrip = styled.div`\n padding: 0 2px;\n height: 24px;\n`\n\nexport const StyledHeader = styled.div``\n\nexport const StyledSearch = styled.div`\n padding: ${spacing.lg}px ${spacing.lg}px ${spacing.sm}px;\n\n ${StyledButton} > * {\n pointer-events: none;\n }\n`\n\nexport const StyledGroup = styled.div`\n &:not(:first-child) {\n margin-top: ${spacing.md}px;\n }\n`\n\nexport const StyledGroupLabel = styled.span`\n ${getTypographyIntent('body')}\n\n display: block;\n color: ${colors.gray15};\n font-weight: ${typographyWeights.semibold};\n padding: ${spacing.xs}px ${spacing.lg}px;\n cursor: default;\n`\n\nexport const StyledItem = styled.div<{\n $disabled?: boolean\n $selected?: boolean\n $highlighted?: boolean\n $focusVisible?: boolean\n $isDraggable?: boolean\n $isDragging?: boolean\n}>`\n ${getTypographyIntent('body')};\n\n ${({ as }) =>\n as === 'a' &&\n css`\n display: block;\n text-decoration: none;\n `}\n\n cursor: pointer;\n list-style-type: none;\n padding: ${spacing.xs}px ${spacing.lg}px;\n\n a {\n // We decided to use a negative margin trick here to allow us to continue\n // to use listNavigation without having to rewrite a bunch of code in js\n color: ${colors.gray15};\n display: block;\n margin: -${spacing.xs}px -${spacing.lg}px;\n padding: ${spacing.xs}px ${spacing.lg}px;\n text-decoration: none;\n\n &:hover {\n color: ${colors.gray15};\n text-decoration: none;\n }\n }\n\n &[data-highlighted='true'] {\n background-color: ${colors.gray96};\n }\n\n &[data-focus-visible='true'] {\n box-shadow: inset 0 0 0 2px ${colors.blue40};\n }\n\n ${({ $focusVisible }) =>\n $focusVisible &&\n css`\n box-shadow: inset 0 0 0 2px ${colors.blue40};\n `}\n\n ${({ $highlighted }) => $highlighted && `background-color: ${colors.gray96};`}\n\n ${StyledCheckboxLabel} {\n color: inherit;\n cursor: pointer;\n }\n\n ${({ $disabled, $selected }) => {\n if ($disabled) {\n return css`\n &,\n ${StyledCheckboxLabel} {\n color: ${colors.gray85};\n cursor: default;\n }\n `\n } else if ($selected) {\n return css`\n color: ${colors.blue50};\n font-weight: 700;\n\n a,\n a:hover {\n color: ${colors.blue50};\n text-decoration: none;\n }\n\n &[data-highlighted='true'] {\n background-color: ${colors.gray96};\n }\n `\n }\n\n return css`\n color: ${colors.gray15};\n\n &[data-highlighted='true'] {\n background-color: ${colors.gray96};\n }\n `\n }}\n\n ${({ $isDraggable }) => {\n if ($isDraggable) {\n return css`\n display: flex;\n align-items: center;\n\n ${StyledCheckboxLabel} {\n cursor: grab;\n\n // The unchecked and checked icons\n &:before,\n &:after {\n cursor: pointer;\n }\n }\n\n &&& {\n padding-left: 0;\n }\n `\n }\n }}\n\n ${({ $isDragging }) => {\n if ($isDragging) {\n return css`\n background-color: ${colors.gray96};\n box-shadow: none;\n `\n }\n }}\n`\n\nexport const StyledDroppable = styled.div`\n ${StyledGroup}, ${StyledItem} {\n padding-left: 28px;\n }\n`\n\nexport const StyledFooter = styled(Box)`\n border-top: 1px solid ${colors.gray85};\n border-bottom-left-radius: inherit;\n border-bottom-right-radius: inherit;\n`\n"],"mappings":"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"}
|
|
@@ -8,6 +8,15 @@ import { scrollIntoView } from '../_utils/scrollIntoView';
|
|
|
8
8
|
function noop() {}
|
|
9
9
|
var MOUSE_ENTER = 'mouseenter';
|
|
10
10
|
var MOUSE_LEAVE = 'mouseleave';
|
|
11
|
+
var lastDocumentInputType = 'mouse';
|
|
12
|
+
if (typeof document !== 'undefined') {
|
|
13
|
+
document.addEventListener('keydown', function () {
|
|
14
|
+
lastDocumentInputType = 'keyboard';
|
|
15
|
+
}, true);
|
|
16
|
+
document.addEventListener('pointerdown', function () {
|
|
17
|
+
lastDocumentInputType = 'mouse';
|
|
18
|
+
}, true);
|
|
19
|
+
}
|
|
11
20
|
var menuItemsWrapperAttributeName = 'data-core-menuimperative-items-wrapper';
|
|
12
21
|
export var menuItemsWrapperAttribute = _defineProperty({}, menuItemsWrapperAttributeName, 'true');
|
|
13
22
|
var isItem = function isItem(element) {
|
|
@@ -38,17 +47,19 @@ function getLastItem(menu) {
|
|
|
38
47
|
var items = getAllItems(menu);
|
|
39
48
|
return items === null || items === void 0 ? void 0 : items[items.length - 1];
|
|
40
49
|
}
|
|
41
|
-
function updateHighlightedAttribute(item, highlight) {
|
|
42
|
-
item === null || item === void 0 ? void 0 : item.setAttribute('data-highlighted', highlight ? 'true' : 'false');
|
|
43
|
-
item === null || item === void 0 ? void 0 : item.dispatchEvent(new MouseEvent(highlight ? MOUSE_ENTER : MOUSE_LEAVE));
|
|
44
|
-
}
|
|
45
50
|
export function createSensors(ref, circular, onChangeActiveDescendant) {
|
|
46
51
|
var highlightedItem = null;
|
|
47
52
|
var dragAndDropApi = null;
|
|
48
53
|
var onSelect = noop;
|
|
54
|
+
var inputModality = 'mouse';
|
|
49
55
|
var isDraggingStateRef = {
|
|
50
56
|
current: false
|
|
51
57
|
};
|
|
58
|
+
function updateHighlightedAttribute(item, highlight) {
|
|
59
|
+
item === null || item === void 0 ? void 0 : item.setAttribute('data-highlighted', highlight ? 'true' : 'false');
|
|
60
|
+
item === null || item === void 0 ? void 0 : item.setAttribute('data-focus-visible', highlight && inputModality === 'keyboard' ? 'true' : 'false');
|
|
61
|
+
item === null || item === void 0 ? void 0 : item.dispatchEvent(new MouseEvent(highlight ? MOUSE_ENTER : MOUSE_LEAVE));
|
|
62
|
+
}
|
|
52
63
|
function select(event) {
|
|
53
64
|
if (ref.current && highlightedItem) {
|
|
54
65
|
var _highlightedItem, _highlightedItem2, _highlightedItem3, _highlightedItem4, _highlightedItem5, _onSelect;
|
|
@@ -124,15 +135,18 @@ export function createSensors(ref, circular, onChangeActiveDescendant) {
|
|
|
124
135
|
function highlightFirstItem() {
|
|
125
136
|
var shouldScroll = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
126
137
|
var shouldFocus = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
138
|
+
inputModality = lastDocumentInputType;
|
|
127
139
|
highlightItem(getFirstItem(ref.current), shouldScroll, shouldFocus);
|
|
128
140
|
}
|
|
129
141
|
function highlightLastItem() {
|
|
130
142
|
var shouldScroll = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
131
143
|
var shouldFocus = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
144
|
+
inputModality = lastDocumentInputType;
|
|
132
145
|
highlightItem(getLastItem(ref.current), shouldScroll, shouldFocus);
|
|
133
146
|
}
|
|
134
147
|
function highlightPrevItem() {
|
|
135
148
|
var _ref$current;
|
|
149
|
+
inputModality = 'keyboard';
|
|
136
150
|
if (highlightedItem && (_ref$current = ref.current) !== null && _ref$current !== void 0 && _ref$current.contains(highlightedItem)) {
|
|
137
151
|
var prev = getPrevHighlightableItem(highlightedItem);
|
|
138
152
|
if (prev) {
|
|
@@ -144,6 +158,7 @@ export function createSensors(ref, circular, onChangeActiveDescendant) {
|
|
|
144
158
|
}
|
|
145
159
|
function highlightNextItem() {
|
|
146
160
|
var _ref$current2;
|
|
161
|
+
inputModality = 'keyboard';
|
|
147
162
|
if (highlightedItem && (_ref$current2 = ref.current) !== null && _ref$current2 !== void 0 && _ref$current2.contains(highlightedItem)) {
|
|
148
163
|
var next = getNextHighlightableItem(highlightedItem);
|
|
149
164
|
if (next) {
|
|
@@ -176,6 +191,7 @@ export function createSensors(ref, circular, onChangeActiveDescendant) {
|
|
|
176
191
|
}
|
|
177
192
|
},
|
|
178
193
|
handleItemHover: function handleItemHover(el) {
|
|
194
|
+
inputModality = 'mouse';
|
|
179
195
|
highlightItem(el, false);
|
|
180
196
|
},
|
|
181
197
|
handleItemFocus: function handleItemFocus(el) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sensors.js","names":["scrollIntoView","noop","MOUSE_ENTER","MOUSE_LEAVE","menuItemsWrapperAttributeName","menuItemsWrapperAttribute","_defineProperty","isItem","element","hasAttribute","isGroup","el","JSON","parse","dataset","group","isWrapper","getAttribute","getAllItems","menu","querySelectorAll","getFirstItem","_getAllItems","getPrevItem","item","items","Array","prototype","indexOf","call","getNextItem","getLastItem","length","updateHighlightedAttribute","highlight","setAttribute","dispatchEvent","MouseEvent","createSensors","ref","circular","onChangeActiveDescendant","highlightedItem","dragAndDropApi","onSelect","isDraggingStateRef","current","select","event","_highlightedItem","_highlightedItem2","_highlightedItem3","_highlightedItem4","_highlightedItem5","_onSelect","disabled","value","selected","restoreFocus","restorefocus","undefined","tagName","click","_objectSpread","action","highlightItem","shouldScroll","arguments","shouldFocus","_item$getAttribute","id","focus","handleItemBlur","getPrevHighlightableItem","currentItem","prev","getNextHighlightableItem","next","highlightFirstItem","highlightLastItem","highlightPrevItem","_ref$current","contains","highlightNextItem","_ref$current2","handleKeyDown","isDragActive","key","preventDefault","handleItemHover","handleItemFocus","useKeyboardSensor","api","setIsDragging","isDragging","updateSelectCallback","callback","highlighted","_highlightedItem6","highlightFirst","highlightLast","rehighlightCurrent","_highlightedItem7","draggableId","_ref$current3","newItem","querySelector","concat","replace","highlightSelected","_ref$current4","selectedItem","highlightSuggested","_ref$current5","suggestedItem"],"sources":["../../src/MenuImperative/sensors.ts"],"sourcesContent":["import type { SensorAPI } from '@atlaskit/pragmatic-drag-and-drop-react-beautiful-dnd-migration'\nimport type React from 'react'\nimport { scrollIntoView } from '../_utils/scrollIntoView'\nimport type { Selection } from './MenuImperative.types'\n\nfunction noop() {}\n\nconst MOUSE_ENTER = 'mouseenter'\nconst MOUSE_LEAVE = 'mouseleave'\n\nconst menuItemsWrapperAttributeName = 'data-core-menuimperative-items-wrapper'\nexport const menuItemsWrapperAttribute = {\n [menuItemsWrapperAttributeName]: 'true',\n}\n\nconst isItem = (element: Element | null) => element?.hasAttribute('data-value')\n\nfunction isGroup(el: HTMLElement) {\n return JSON.parse(el.dataset.group || 'false')\n}\n\nconst isWrapper = (element: Element | null) =>\n element?.getAttribute(menuItemsWrapperAttributeName) === 'true'\n\nfunction getAllItems(menu: Element | null) {\n return menu?.querySelectorAll<HTMLElement>(\n '[data-value]:not([data-group=\"true\"])'\n )\n}\n\nfunction getFirstItem(menu: Element | null) {\n return getAllItems(menu)?.[0]\n}\n\nfunction getPrevItem(item: Element, menu: Element | null): HTMLElement | null {\n const items = getAllItems(menu)\n\n return items ? items[Array.prototype.indexOf.call(items, item) - 1] : null\n}\n\nfunction getNextItem(item: Element, menu: Element | null): HTMLElement | null {\n const items = getAllItems(menu)\n\n return items ? items[Array.prototype.indexOf.call(items, item) + 1] : null\n}\n\nfunction getLastItem(menu: Element | null) {\n const items = getAllItems(menu)\n return items?.[items.length - 1]\n}\n\nfunction updateHighlightedAttribute(\n item: Element | null | undefined,\n highlight: boolean\n) {\n item?.setAttribute('data-highlighted', highlight ? 'true' : 'false')\n item?.dispatchEvent(new MouseEvent(highlight ? MOUSE_ENTER : MOUSE_LEAVE))\n}\n\nexport function createSensors(\n ref: React.RefObject<HTMLDivElement>,\n circular: boolean,\n onChangeActiveDescendant: (\n id: string | undefined,\n menuRef: Element | null\n ) => void\n) {\n let highlightedItem: HTMLElement | null = null\n let dragAndDropApi: SensorAPI | null = null\n let onSelect: (selection: Selection) => any = noop\n const isDraggingStateRef = { current: false }\n\n function select(\n event:\n | React.MouseEvent<HTMLElement, MouseEvent>\n | React.KeyboardEvent<HTMLElement>\n ) {\n if (ref.current && highlightedItem) {\n const disabled = JSON.parse(highlightedItem?.dataset.disabled || 'false')\n if (disabled) return\n\n const item = JSON.parse(highlightedItem?.dataset.value || 'null')\n const selected = JSON.parse(highlightedItem?.dataset.selected || 'false')\n const restoreFocus = highlightedItem?.dataset.restorefocus\n ? JSON.parse(highlightedItem?.dataset.restorefocus)\n : undefined\n\n if (highlightedItem.tagName === 'A') {\n highlightedItem.click()\n }\n\n onSelect?.({\n event,\n item,\n group: false,\n action: selected ? 'unselected' : 'selected',\n ...(restoreFocus === undefined ? {} : { restoreFocus }),\n })\n }\n }\n\n function highlightItem(\n item: HTMLElement | null | undefined,\n shouldScroll: boolean = true,\n shouldFocus: boolean = false\n ) {\n // performance improvement, highlightItem is called onMouseMove for Item\n if (item === highlightedItem) {\n return\n }\n\n if (item) {\n updateHighlightedAttribute(highlightedItem, false)\n\n // TODO add localized screenreader instructions for the item\n updateHighlightedAttribute(item, true)\n\n const id = item.getAttribute('id') ?? undefined\n onChangeActiveDescendant(id, ref.current)\n\n highlightedItem = item\n\n if (shouldFocus) {\n item.focus()\n }\n\n if (shouldScroll) {\n scrollIntoView(-1, item)\n }\n } else {\n onChangeActiveDescendant('', ref.current)\n }\n }\n\n function handleItemBlur(el?: HTMLDivElement) {\n updateHighlightedAttribute(el, false)\n highlightedItem = null\n }\n\n function getPrevHighlightableItem(\n currentItem: HTMLElement\n ): HTMLElement | null | undefined {\n const prev = getPrevItem(currentItem, ref.current)\n if (prev) {\n if (isItem(prev)) {\n return prev\n }\n } else if (circular) {\n return getLastItem(ref.current)\n }\n\n return prev\n }\n\n function getNextHighlightableItem(\n currentItem: HTMLElement\n ): HTMLElement | null | undefined {\n const next = getNextItem(currentItem, ref.current)\n\n if (next) {\n if (isItem(next)) {\n return next\n }\n } else if (circular) {\n return getFirstItem(ref.current)\n }\n }\n\n function highlightFirstItem(\n shouldScroll: boolean = true,\n shouldFocus: boolean = true\n ) {\n highlightItem(getFirstItem(ref.current), shouldScroll, shouldFocus)\n }\n\n function highlightLastItem(\n shouldScroll: boolean = true,\n shouldFocus: boolean = true\n ) {\n highlightItem(getLastItem(ref.current), shouldScroll, shouldFocus)\n }\n\n function highlightPrevItem() {\n if (highlightedItem && ref.current?.contains(highlightedItem)) {\n const prev = getPrevHighlightableItem(highlightedItem)\n if (prev) {\n highlightItem(prev, true, true)\n }\n } else {\n highlightLastItem(true, true)\n }\n }\n\n function highlightNextItem() {\n if (highlightedItem && ref.current?.contains(highlightedItem)) {\n const next = getNextHighlightableItem(highlightedItem)\n if (next) {\n highlightItem(next, true, true)\n }\n } else {\n highlightFirstItem(true, true)\n }\n }\n\n return {\n handleKeyDown(event: React.KeyboardEvent<HTMLDivElement>) {\n if (ref.current) {\n const isDragActive = isDraggingStateRef.current\n if (event.key === 'ArrowUp' || event.key === 'Up') {\n if (!isDragActive) {\n event.preventDefault()\n highlightPrevItem()\n }\n } else if (event.key === 'ArrowDown' || event.key === 'Down') {\n if (!isDragActive) {\n event.preventDefault()\n highlightNextItem()\n }\n } else if (event.key === 'Enter') {\n event.preventDefault()\n if (!isDragActive) {\n select(event)\n }\n }\n }\n },\n handleItemHover(el?: HTMLDivElement) {\n highlightItem(el, false)\n },\n handleItemFocus(el?: HTMLDivElement) {\n highlightItem(el, true, true)\n },\n handleItemBlur(el?: HTMLDivElement) {\n handleItemBlur(el)\n },\n useKeyboardSensor(api: SensorAPI) {\n dragAndDropApi = api\n },\n setIsDragging(isDragging: boolean) {\n isDraggingStateRef.current = isDragging\n },\n\n updateSelectCallback(callback: (selection: Selection) => any) {\n onSelect = callback\n },\n\n highlight: highlightItem,\n\n highlighted() {\n return JSON.parse(highlightedItem?.dataset.value || 'null')\n },\n\n highlightFirst: highlightFirstItem,\n highlightLast: highlightLastItem,\n rehighlightCurrent() {\n // Rehighlights an item that may have lost its styling due to the re-render of the list items\n const draggableId = highlightedItem?.getAttribute('data-rbd-draggable-id')\n if (draggableId) {\n const newItem = ref.current?.querySelector<HTMLElement>(\n `[data-rbd-draggable-id=\"${draggableId.replace(/[\"\\\\]/g, '\\\\$&')}\"]`\n )\n highlightItem(newItem)\n }\n },\n\n highlightSelected(shouldScroll: boolean = true) {\n const selectedItem = ref.current?.querySelector<HTMLElement>(\n '[data-selected=\"true\"]'\n )\n\n highlightItem(selectedItem, shouldScroll)\n },\n\n highlightSuggested(shouldScroll: boolean = true) {\n const suggestedItem = ref.current?.querySelector<HTMLElement>(\n '[data-suggested=\"true\"]'\n )\n\n highlightItem(suggestedItem, shouldScroll)\n },\n\n prev: highlightPrevItem,\n next: highlightNextItem,\n select,\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sensors.js","names":["scrollIntoView","noop","MOUSE_ENTER","MOUSE_LEAVE","lastDocumentInputType","document","addEventListener","menuItemsWrapperAttributeName","menuItemsWrapperAttribute","_defineProperty","isItem","element","hasAttribute","isGroup","el","JSON","parse","dataset","group","isWrapper","getAttribute","getAllItems","menu","querySelectorAll","getFirstItem","_getAllItems","getPrevItem","item","items","Array","prototype","indexOf","call","getNextItem","getLastItem","length","createSensors","ref","circular","onChangeActiveDescendant","highlightedItem","dragAndDropApi","onSelect","inputModality","isDraggingStateRef","current","updateHighlightedAttribute","highlight","setAttribute","dispatchEvent","MouseEvent","select","event","_highlightedItem","_highlightedItem2","_highlightedItem3","_highlightedItem4","_highlightedItem5","_onSelect","disabled","value","selected","restoreFocus","restorefocus","undefined","tagName","click","_objectSpread","action","highlightItem","shouldScroll","arguments","shouldFocus","_item$getAttribute","id","focus","handleItemBlur","getPrevHighlightableItem","currentItem","prev","getNextHighlightableItem","next","highlightFirstItem","highlightLastItem","highlightPrevItem","_ref$current","contains","highlightNextItem","_ref$current2","handleKeyDown","isDragActive","key","preventDefault","handleItemHover","handleItemFocus","useKeyboardSensor","api","setIsDragging","isDragging","updateSelectCallback","callback","highlighted","_highlightedItem6","highlightFirst","highlightLast","rehighlightCurrent","_highlightedItem7","draggableId","_ref$current3","newItem","querySelector","concat","replace","highlightSelected","_ref$current4","selectedItem","highlightSuggested","_ref$current5","suggestedItem"],"sources":["../../src/MenuImperative/sensors.ts"],"sourcesContent":["import type { SensorAPI } from '@atlaskit/pragmatic-drag-and-drop-react-beautiful-dnd-migration'\nimport type React from 'react'\nimport { scrollIntoView } from '../_utils/scrollIntoView'\nimport type { Selection } from './MenuImperative.types'\n\nfunction noop() {}\n\nconst MOUSE_ENTER = 'mouseenter'\nconst MOUSE_LEAVE = 'mouseleave'\n\nlet lastDocumentInputType: InputModality = 'mouse'\n\nif (typeof document !== 'undefined') {\n document.addEventListener(\n 'keydown',\n () => {\n lastDocumentInputType = 'keyboard'\n },\n true\n )\n document.addEventListener(\n 'pointerdown',\n () => {\n lastDocumentInputType = 'mouse'\n },\n true\n )\n}\n\nconst menuItemsWrapperAttributeName = 'data-core-menuimperative-items-wrapper'\nexport const menuItemsWrapperAttribute = {\n [menuItemsWrapperAttributeName]: 'true',\n}\n\nconst isItem = (element: Element | null) => element?.hasAttribute('data-value')\n\nfunction isGroup(el: HTMLElement) {\n return JSON.parse(el.dataset.group || 'false')\n}\n\nconst isWrapper = (element: Element | null) =>\n element?.getAttribute(menuItemsWrapperAttributeName) === 'true'\n\nfunction getAllItems(menu: Element | null) {\n return menu?.querySelectorAll<HTMLElement>(\n '[data-value]:not([data-group=\"true\"])'\n )\n}\n\nfunction getFirstItem(menu: Element | null) {\n return getAllItems(menu)?.[0]\n}\n\nfunction getPrevItem(item: Element, menu: Element | null): HTMLElement | null {\n const items = getAllItems(menu)\n\n return items ? items[Array.prototype.indexOf.call(items, item) - 1] : null\n}\n\nfunction getNextItem(item: Element, menu: Element | null): HTMLElement | null {\n const items = getAllItems(menu)\n\n return items ? items[Array.prototype.indexOf.call(items, item) + 1] : null\n}\n\nfunction getLastItem(menu: Element | null) {\n const items = getAllItems(menu)\n return items?.[items.length - 1]\n}\n\ntype InputModality = 'mouse' | 'keyboard'\n\nexport function createSensors(\n ref: React.RefObject<HTMLDivElement>,\n circular: boolean,\n onChangeActiveDescendant: (\n id: string | undefined,\n menuRef: Element | null\n ) => void\n) {\n let highlightedItem: HTMLElement | null = null\n let dragAndDropApi: SensorAPI | null = null\n let onSelect: (selection: Selection) => any = noop\n let inputModality: InputModality = 'mouse'\n const isDraggingStateRef = { current: false }\n\n function updateHighlightedAttribute(\n item: Element | null | undefined,\n highlight: boolean\n ) {\n item?.setAttribute('data-highlighted', highlight ? 'true' : 'false')\n item?.setAttribute(\n 'data-focus-visible',\n highlight && inputModality === 'keyboard' ? 'true' : 'false'\n )\n item?.dispatchEvent(new MouseEvent(highlight ? MOUSE_ENTER : MOUSE_LEAVE))\n }\n\n function select(\n event:\n | React.MouseEvent<HTMLElement, MouseEvent>\n | React.KeyboardEvent<HTMLElement>\n ) {\n if (ref.current && highlightedItem) {\n const disabled = JSON.parse(highlightedItem?.dataset.disabled || 'false')\n if (disabled) return\n\n const item = JSON.parse(highlightedItem?.dataset.value || 'null')\n const selected = JSON.parse(highlightedItem?.dataset.selected || 'false')\n const restoreFocus = highlightedItem?.dataset.restorefocus\n ? JSON.parse(highlightedItem?.dataset.restorefocus)\n : undefined\n\n if (highlightedItem.tagName === 'A') {\n highlightedItem.click()\n }\n\n onSelect?.({\n event,\n item,\n group: false,\n action: selected ? 'unselected' : 'selected',\n ...(restoreFocus === undefined ? {} : { restoreFocus }),\n })\n }\n }\n\n function highlightItem(\n item: HTMLElement | null | undefined,\n shouldScroll: boolean = true,\n shouldFocus: boolean = false\n ) {\n // performance improvement, highlightItem is called onMouseMove for Item\n if (item === highlightedItem) {\n return\n }\n\n if (item) {\n updateHighlightedAttribute(highlightedItem, false)\n\n // TODO add localized screenreader instructions for the item\n updateHighlightedAttribute(item, true)\n\n const id = item.getAttribute('id') ?? undefined\n onChangeActiveDescendant(id, ref.current)\n\n highlightedItem = item\n\n if (shouldFocus) {\n item.focus()\n }\n\n if (shouldScroll) {\n scrollIntoView(-1, item)\n }\n } else {\n onChangeActiveDescendant('', ref.current)\n }\n }\n\n function handleItemBlur(el?: HTMLDivElement) {\n updateHighlightedAttribute(el, false)\n highlightedItem = null\n }\n\n function getPrevHighlightableItem(\n currentItem: HTMLElement\n ): HTMLElement | null | undefined {\n const prev = getPrevItem(currentItem, ref.current)\n if (prev) {\n if (isItem(prev)) {\n return prev\n }\n } else if (circular) {\n return getLastItem(ref.current)\n }\n\n return prev\n }\n\n function getNextHighlightableItem(\n currentItem: HTMLElement\n ): HTMLElement | null | undefined {\n const next = getNextItem(currentItem, ref.current)\n\n if (next) {\n if (isItem(next)) {\n return next\n }\n } else if (circular) {\n return getFirstItem(ref.current)\n }\n }\n\n function highlightFirstItem(\n shouldScroll: boolean = true,\n shouldFocus: boolean = true\n ) {\n inputModality = lastDocumentInputType\n highlightItem(getFirstItem(ref.current), shouldScroll, shouldFocus)\n }\n\n function highlightLastItem(\n shouldScroll: boolean = true,\n shouldFocus: boolean = true\n ) {\n inputModality = lastDocumentInputType\n highlightItem(getLastItem(ref.current), shouldScroll, shouldFocus)\n }\n\n function highlightPrevItem() {\n inputModality = 'keyboard'\n if (highlightedItem && ref.current?.contains(highlightedItem)) {\n const prev = getPrevHighlightableItem(highlightedItem)\n if (prev) {\n highlightItem(prev, true, true)\n }\n } else {\n highlightLastItem(true, true)\n }\n }\n\n function highlightNextItem() {\n inputModality = 'keyboard'\n if (highlightedItem && ref.current?.contains(highlightedItem)) {\n const next = getNextHighlightableItem(highlightedItem)\n if (next) {\n highlightItem(next, true, true)\n }\n } else {\n highlightFirstItem(true, true)\n }\n }\n\n return {\n handleKeyDown(event: React.KeyboardEvent<HTMLDivElement>) {\n if (ref.current) {\n const isDragActive = isDraggingStateRef.current\n if (event.key === 'ArrowUp' || event.key === 'Up') {\n if (!isDragActive) {\n event.preventDefault()\n highlightPrevItem()\n }\n } else if (event.key === 'ArrowDown' || event.key === 'Down') {\n if (!isDragActive) {\n event.preventDefault()\n highlightNextItem()\n }\n } else if (event.key === 'Enter') {\n event.preventDefault()\n if (!isDragActive) {\n select(event)\n }\n }\n }\n },\n handleItemHover(el?: HTMLDivElement) {\n inputModality = 'mouse'\n highlightItem(el, false)\n },\n handleItemFocus(el?: HTMLDivElement) {\n highlightItem(el, true, true)\n },\n handleItemBlur(el?: HTMLDivElement) {\n handleItemBlur(el)\n },\n useKeyboardSensor(api: SensorAPI) {\n dragAndDropApi = api\n },\n setIsDragging(isDragging: boolean) {\n isDraggingStateRef.current = isDragging\n },\n\n updateSelectCallback(callback: (selection: Selection) => any) {\n onSelect = callback\n },\n\n highlight: highlightItem,\n\n highlighted() {\n return JSON.parse(highlightedItem?.dataset.value || 'null')\n },\n\n highlightFirst: highlightFirstItem,\n highlightLast: highlightLastItem,\n rehighlightCurrent() {\n // Rehighlights an item that may have lost its styling due to the re-render of the list items\n const draggableId = highlightedItem?.getAttribute('data-rbd-draggable-id')\n if (draggableId) {\n const newItem = ref.current?.querySelector<HTMLElement>(\n `[data-rbd-draggable-id=\"${draggableId.replace(/[\"\\\\]/g, '\\\\$&')}\"]`\n )\n highlightItem(newItem)\n }\n },\n\n highlightSelected(shouldScroll: boolean = true) {\n const selectedItem = ref.current?.querySelector<HTMLElement>(\n '[data-selected=\"true\"]'\n )\n\n highlightItem(selectedItem, shouldScroll)\n },\n\n highlightSuggested(shouldScroll: boolean = true) {\n const suggestedItem = ref.current?.querySelector<HTMLElement>(\n '[data-suggested=\"true\"]'\n )\n\n highlightItem(suggestedItem, shouldScroll)\n },\n\n prev: highlightPrevItem,\n next: highlightNextItem,\n select,\n }\n}\n"],"mappings":"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"}
|