@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
|
@@ -59,12 +59,17 @@ function reducer(state, action) {
|
|
|
59
59
|
});
|
|
60
60
|
case 'setMouseOver':
|
|
61
61
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
62
|
-
isMouseOver: action.isMouseOver
|
|
62
|
+
isMouseOver: action.isMouseOver,
|
|
63
|
+
keyboardNavigated: action.isMouseOver ? false : state.keyboardNavigated
|
|
63
64
|
});
|
|
64
65
|
case 'setFocused':
|
|
65
66
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
66
67
|
isFocused: action.isFocused
|
|
67
68
|
});
|
|
69
|
+
case 'setKeyboardNavigated':
|
|
70
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
71
|
+
keyboardNavigated: true
|
|
72
|
+
});
|
|
68
73
|
case 'updateOptions':
|
|
69
74
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
70
75
|
options: action.options
|
|
@@ -116,7 +121,8 @@ export function useDropdownFlyout(_ref) {
|
|
|
116
121
|
highlighted: getFirst(flyoutOptions),
|
|
117
122
|
isMouseOver: false,
|
|
118
123
|
isFocused: false,
|
|
119
|
-
isOpen: false
|
|
124
|
+
isOpen: false,
|
|
125
|
+
keyboardNavigated: false
|
|
120
126
|
}),
|
|
121
127
|
_React$useReducer2 = _slicedToArray(_React$useReducer, 2),
|
|
122
128
|
_React$useReducer2$ = _React$useReducer2[0],
|
|
@@ -126,6 +132,7 @@ export function useDropdownFlyout(_ref) {
|
|
|
126
132
|
isOpen = _React$useReducer2$.isOpen,
|
|
127
133
|
isMouseOver = _React$useReducer2$.isMouseOver,
|
|
128
134
|
isFocused = _React$useReducer2$.isFocused,
|
|
135
|
+
keyboardNavigated = _React$useReducer2$.keyboardNavigated,
|
|
129
136
|
dispatch = _React$useReducer2[1];
|
|
130
137
|
var setMouseOver = React.useCallback(function (isMouseOver) {
|
|
131
138
|
return dispatch({
|
|
@@ -149,6 +156,13 @@ export function useDropdownFlyout(_ref) {
|
|
|
149
156
|
});
|
|
150
157
|
return (isMouseOver || isFocused) && isCorrectId;
|
|
151
158
|
};
|
|
159
|
+
var isFocusVisible = function isFocusVisible(option) {
|
|
160
|
+
var parentIds = collectParentIds(options, highlighted.id);
|
|
161
|
+
var isCorrectId = option.id === highlighted.id || parentIds.some(function (id) {
|
|
162
|
+
return id === option.id;
|
|
163
|
+
});
|
|
164
|
+
return keyboardNavigated && isCorrectId;
|
|
165
|
+
};
|
|
152
166
|
var findOptionById = React.useCallback(function (id) {
|
|
153
167
|
return findById(options, id);
|
|
154
168
|
}, [options]);
|
|
@@ -232,9 +246,15 @@ export function useDropdownFlyout(_ref) {
|
|
|
232
246
|
case 'Enter':
|
|
233
247
|
e.preventDefault();
|
|
234
248
|
if (!isOpen && isFocused) {
|
|
249
|
+
dispatch({
|
|
250
|
+
type: 'setKeyboardNavigated'
|
|
251
|
+
});
|
|
235
252
|
openDropdown();
|
|
236
253
|
} else {
|
|
237
254
|
if (hasChildren(highlighted.origin)) {
|
|
255
|
+
dispatch({
|
|
256
|
+
type: 'setKeyboardNavigated'
|
|
257
|
+
});
|
|
238
258
|
traversingHighlight('children');
|
|
239
259
|
} else {
|
|
240
260
|
onClick(highlighted);
|
|
@@ -259,11 +279,17 @@ export function useDropdownFlyout(_ref) {
|
|
|
259
279
|
case 'ArrowDown':
|
|
260
280
|
case 'Down':
|
|
261
281
|
e.preventDefault();
|
|
282
|
+
dispatch({
|
|
283
|
+
type: 'setKeyboardNavigated'
|
|
284
|
+
});
|
|
262
285
|
traversingHighlight('next');
|
|
263
286
|
break;
|
|
264
287
|
case 'ArrowUp':
|
|
265
288
|
case 'Up':
|
|
266
289
|
e.preventDefault();
|
|
290
|
+
dispatch({
|
|
291
|
+
type: 'setKeyboardNavigated'
|
|
292
|
+
});
|
|
267
293
|
traversingHighlight('prev');
|
|
268
294
|
break;
|
|
269
295
|
}
|
|
@@ -283,6 +309,7 @@ export function useDropdownFlyout(_ref) {
|
|
|
283
309
|
}, [flyoutOptions]);
|
|
284
310
|
return {
|
|
285
311
|
isFocused: isFocused,
|
|
312
|
+
isFocusVisible: isFocusVisible,
|
|
286
313
|
isMouseOver: isMouseOver,
|
|
287
314
|
isOpen: isOpen,
|
|
288
315
|
options: options,
|
|
@@ -312,6 +339,7 @@ export var DropdownFlyoutContext = /*#__PURE__*/React.createContext({
|
|
|
312
339
|
collapse: noop,
|
|
313
340
|
optionRenderer: defaultOptionRenderer,
|
|
314
341
|
isExpanded: returnFalse,
|
|
342
|
+
isFocusVisible: returnFalse,
|
|
315
343
|
isHighlighted: returnFalse
|
|
316
344
|
});
|
|
317
345
|
export var useDropdownFlyoutContext = function useDropdownFlyoutContext() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropdownFlyout.helpers.js","names":["React","ulid","StyledDropdownFlyoutExpandIcon","StyledDropdownFlyoutLabel","rootId","noop","returnFalse","getFirst","arr","isRootOption","optionId","hasChildren","option","Array","isArray","children","reducer","state","action","type","_objectSpread","highlighted","expanded","concat","_toConsumableArray","collectParentIds","options","id","isOpen","isMouseOver","isFocused","findById","initialValue","arguments","length","undefined","reduce","result","current","transformOption","parentId","acc","updatedOption","origin","useDropdownFlyout","_ref","flyoutOptions","_ref$onClick","onClick","_onClick","_onKeyDown","onKeyDown","_React$useReducer","useReducer","_React$useReducer2","_slicedToArray","_React$useReducer2$","dispatch","setMouseOver","useCallback","setFocused","isExpanded","includes","isHighlighted","parentIds","isCorrectId","some","findOptionById","expand","collapse","highlight","traversingHighlight","item","tier","optionIndex","findIndex","nextIndex","prevIndex","parentOption","closeDropdown","closeSelectedDropdown","e","composedPath","node","_dataset","dataset","flyout","openDropdown","key","preventDefault","_e$stopPropagation","stopPropagation","call","_e$stopPropagation2","useEffect","defaultOptionRenderer","createElement","Fragment","label","DropdownFlyoutContext","createContext","optionRenderer","useDropdownFlyoutContext","useContext"],"sources":["../../src/DropdownFlyout/DropdownFlyout.helpers.tsx"],"sourcesContent":["import React from 'react'\nimport { ulid } from 'ulid'\nimport {\n StyledDropdownFlyoutExpandIcon,\n StyledDropdownFlyoutLabel,\n} from './DropdownFlyout.styles'\nimport type {\n Action,\n DropdownFlyoutProps,\n DropdownOption,\n FlyoutOption,\n FlyoutOptionId,\n State,\n} from './DropdownFlyout.types'\nimport { rootId } from './DropdownFlyout.types'\n\nexport function noop() {}\n\nexport function returnFalse() {\n return false\n}\n\nfunction getFirst<T extends any>(arr: T[]) {\n return arr[0]\n}\nfunction isRootOption(optionId: FlyoutOptionId) {\n return optionId === rootId\n}\n\nexport function hasChildren(option: DropdownOption) {\n return Array.isArray(option.children)\n}\n\nfunction reducer(state: State, action: Action): State {\n switch (action.type) {\n case 'highlight':\n return {\n ...state,\n highlighted: action.option,\n }\n case 'expand':\n return {\n ...state,\n highlighted: action.option,\n expanded: [\n ...collectParentIds(state.options, action.option.id),\n action.option.id,\n ],\n }\n case 'collapse':\n return {\n ...state,\n highlighted: action.option,\n expanded: collectParentIds(state.options, action.option.id),\n }\n case 'close':\n return {\n ...state,\n expanded: [],\n highlighted: getFirst(state.options),\n isOpen: false,\n }\n case 'open':\n return {\n ...state,\n isOpen: true,\n }\n case 'setMouseOver':\n return {\n ...state,\n isMouseOver: action.isMouseOver,\n }\n case 'setFocused':\n return {\n ...state,\n isFocused: action.isFocused,\n }\n case 'updateOptions':\n return {\n ...state,\n options: action.options,\n }\n default:\n return state\n }\n}\n\nfunction findById(\n options: FlyoutOption[],\n optionId: FlyoutOption['id'],\n initialValue: FlyoutOption = getFirst(options)\n): FlyoutOption {\n return options.reduce((result, current) => {\n if (current.id === optionId) {\n return current\n }\n\n if (current.children) {\n return findById(current.children, optionId, result)\n }\n\n return result\n }, initialValue)\n}\n\nexport function transformOption(\n options: DropdownOption[],\n parentId: FlyoutOption['parentId']\n): FlyoutOption[] {\n return options.reduce<FlyoutOption[]>((acc, option) => {\n const id = ulid()\n const updatedOption = {\n id,\n parentId,\n origin: option,\n ...(Array.isArray(option.children) && {\n children: transformOption(option.children, id),\n }),\n }\n\n return [...acc, updatedOption]\n }, [])\n}\n\nfunction collectParentIds(\n options: FlyoutOption[],\n optionId: FlyoutOption['id']\n): FlyoutOption['id'][] {\n const option = findById(options, optionId)\n\n if (!isRootOption(option.parentId)) {\n return [...collectParentIds(options, option.parentId), option.parentId]\n }\n return [option.parentId]\n}\n\nexport function useDropdownFlyout({\n flyoutOptions,\n onClick: _onClick = noop,\n onKeyDown: _onKeyDown,\n}: Pick<DropdownFlyoutProps, 'onClick' | 'onKeyDown'> & {\n flyoutOptions: FlyoutOption[]\n}) {\n const [\n { options, expanded, highlighted, isOpen, isMouseOver, isFocused },\n dispatch,\n ] = React.useReducer(reducer, {\n options: flyoutOptions,\n expanded: [],\n highlighted: getFirst(flyoutOptions),\n isMouseOver: false,\n isFocused: false,\n isOpen: false,\n })\n\n const setMouseOver = React.useCallback(\n (isMouseOver: boolean) => dispatch({ type: 'setMouseOver', isMouseOver }),\n []\n )\n\n const setFocused = React.useCallback(\n (isFocused: boolean) => dispatch({ type: 'setFocused', isFocused }),\n []\n )\n\n const isExpanded = (option: FlyoutOption) => expanded.includes(option.id)\n\n const isHighlighted = (option: FlyoutOption): boolean => {\n const parentIds = collectParentIds(options, highlighted.id)\n const isCorrectId =\n option.id === highlighted.id || parentIds.some((id) => id === option.id)\n return (isMouseOver || isFocused) && isCorrectId\n }\n\n const findOptionById = React.useCallback(\n (id: FlyoutOptionId) => findById(options, id),\n [options]\n )\n\n const expand = React.useCallback(\n (option: FlyoutOption) =>\n dispatch({\n type: 'expand',\n option,\n }),\n []\n )\n\n const collapse = React.useCallback(\n (option: FlyoutOption) =>\n dispatch({\n type: 'collapse',\n option,\n }),\n []\n )\n\n const highlight = React.useCallback(\n (option: FlyoutOption) =>\n dispatch({\n type: 'highlight',\n option,\n }),\n []\n )\n\n const traversingHighlight = React.useCallback(\n (item: 'next' | 'prev' | 'children' | 'parent') => {\n const tier = isRootOption(highlighted.parentId)\n ? options\n : findOptionById(highlighted.parentId).children || []\n const optionIndex = tier.findIndex((item) => item.id === highlighted.id)\n\n switch (item) {\n case 'next':\n const nextIndex = optionIndex + 1 >= tier.length ? 0 : optionIndex + 1\n\n highlight(tier[nextIndex])\n break\n case 'prev':\n const prevIndex =\n optionIndex - 1 < 0 ? tier.length - 1 : optionIndex - 1\n\n highlight(tier[prevIndex])\n break\n case 'children':\n if (Array.isArray(highlighted.children)) {\n expand(highlighted)\n\n highlight(getFirst(highlighted.children))\n }\n break\n case 'parent':\n if (!isRootOption(highlighted.parentId)) {\n const parentOption = findOptionById(highlighted.parentId)\n collapse(parentOption)\n }\n break\n default:\n return\n }\n },\n [options, findOptionById, collapse, highlighted, expand, highlight]\n )\n\n const closeDropdown = React.useCallback(() => {\n dispatch({ type: 'close' })\n }, [])\n\n const closeSelectedDropdown = React.useCallback(\n (e: Event | React.FocusEvent) => {\n if (\n e &&\n (e.type === 'click' || e.type === 'mouseup') &&\n !(e as MouseEvent)\n .composedPath()\n .some((node) => (node as HTMLElement).dataset?.flyout)\n ) {\n dispatch({ type: 'close' })\n }\n },\n []\n )\n\n const openDropdown = React.useCallback(() => {\n dispatch({ type: 'open' })\n }, [])\n\n const onClick = React.useCallback(\n (option: FlyoutOption) => {\n if (!hasChildren(option.origin)) {\n _onClick(option.origin)\n closeDropdown()\n }\n },\n [_onClick, closeDropdown]\n )\n\n const onKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLDivElement>) => {\n const { key } = e\n\n switch (key) {\n case 'Enter':\n e.preventDefault()\n if (!isOpen && isFocused) {\n openDropdown()\n } else {\n if (hasChildren(highlighted.origin)) {\n traversingHighlight('children')\n } else {\n onClick(highlighted)\n }\n }\n break\n case 'Escape':\n case 'Esc':\n e.preventDefault()\n if (isRootOption(highlighted.parentId)) {\n if (isOpen) {\n e.stopPropagation?.()\n }\n closeDropdown()\n } else {\n e.stopPropagation?.()\n traversingHighlight('parent')\n }\n break\n case 'ArrowDown':\n case 'Down':\n e.preventDefault()\n traversingHighlight('next')\n break\n case 'ArrowUp':\n case 'Up':\n e.preventDefault()\n traversingHighlight('prev')\n break\n }\n _onKeyDown?.(e)\n },\n [\n closeDropdown,\n openDropdown,\n traversingHighlight,\n highlighted,\n isOpen,\n isFocused,\n onClick,\n _onKeyDown,\n ]\n )\n // There was an issue that was fixed in scope of UISP-215 https://procoretech.atlassian.net/browse/UISP-215\n // UseEffect is necessary for updating state in UseReducer because props don't automatically update state. (In this case: property \"options\")\n React.useEffect(() => {\n dispatch({ type: 'updateOptions', options: flyoutOptions })\n dispatch({ type: 'highlight', option: getFirst(flyoutOptions) })\n }, [flyoutOptions])\n\n return {\n isFocused,\n isMouseOver,\n isOpen,\n options,\n expanded,\n highlighted,\n expand,\n collapse,\n isHighlighted,\n isExpanded,\n closeDropdown,\n closeSelectedDropdown,\n openDropdown,\n onKeyDown,\n onClick,\n setMouseOver,\n setFocused,\n }\n}\n\nexport function defaultOptionRenderer(option: DropdownOption) {\n return (\n <>\n <StyledDropdownFlyoutLabel>{option.label}</StyledDropdownFlyoutLabel>\n {hasChildren(option) && (\n <StyledDropdownFlyoutExpandIcon data-qa=\"core-dropdown-flyout-option-expand-icon\" />\n )}\n </>\n )\n}\n\nexport const DropdownFlyoutContext = React.createContext<{\n onClick: (option: FlyoutOption) => void\n\n expand: (option: FlyoutOption) => void\n collapse: (option: FlyoutOption) => void\n optionRenderer: (option: DropdownOption) => React.ReactNode\n\n isExpanded: (option: FlyoutOption) => boolean\n isHighlighted: (option: FlyoutOption) => boolean\n}>({\n onClick: noop,\n\n expand: noop,\n collapse: noop,\n optionRenderer: defaultOptionRenderer,\n\n isExpanded: returnFalse,\n isHighlighted: returnFalse,\n})\n\nexport const useDropdownFlyoutContext = () =>\n React.useContext(DropdownFlyoutContext)\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DropdownFlyout.helpers.js","names":["React","ulid","StyledDropdownFlyoutExpandIcon","StyledDropdownFlyoutLabel","rootId","noop","returnFalse","getFirst","arr","isRootOption","optionId","hasChildren","option","Array","isArray","children","reducer","state","action","type","_objectSpread","highlighted","expanded","concat","_toConsumableArray","collectParentIds","options","id","isOpen","isMouseOver","keyboardNavigated","isFocused","findById","initialValue","arguments","length","undefined","reduce","result","current","transformOption","parentId","acc","updatedOption","origin","useDropdownFlyout","_ref","flyoutOptions","_ref$onClick","onClick","_onClick","_onKeyDown","onKeyDown","_React$useReducer","useReducer","_React$useReducer2","_slicedToArray","_React$useReducer2$","dispatch","setMouseOver","useCallback","setFocused","isExpanded","includes","isHighlighted","parentIds","isCorrectId","some","isFocusVisible","findOptionById","expand","collapse","highlight","traversingHighlight","item","tier","optionIndex","findIndex","nextIndex","prevIndex","parentOption","closeDropdown","closeSelectedDropdown","e","composedPath","node","_dataset","dataset","flyout","openDropdown","key","preventDefault","_e$stopPropagation","stopPropagation","call","_e$stopPropagation2","useEffect","defaultOptionRenderer","createElement","Fragment","label","DropdownFlyoutContext","createContext","optionRenderer","useDropdownFlyoutContext","useContext"],"sources":["../../src/DropdownFlyout/DropdownFlyout.helpers.tsx"],"sourcesContent":["import React from 'react'\nimport { ulid } from 'ulid'\nimport {\n StyledDropdownFlyoutExpandIcon,\n StyledDropdownFlyoutLabel,\n} from './DropdownFlyout.styles'\nimport type {\n Action,\n DropdownFlyoutProps,\n DropdownOption,\n FlyoutOption,\n FlyoutOptionId,\n State,\n} from './DropdownFlyout.types'\nimport { rootId } from './DropdownFlyout.types'\n\nexport function noop() {}\n\nexport function returnFalse() {\n return false\n}\n\nfunction getFirst<T extends any>(arr: T[]) {\n return arr[0]\n}\nfunction isRootOption(optionId: FlyoutOptionId) {\n return optionId === rootId\n}\n\nexport function hasChildren(option: DropdownOption) {\n return Array.isArray(option.children)\n}\n\nfunction reducer(state: State, action: Action): State {\n switch (action.type) {\n case 'highlight':\n return {\n ...state,\n highlighted: action.option,\n }\n case 'expand':\n return {\n ...state,\n highlighted: action.option,\n expanded: [\n ...collectParentIds(state.options, action.option.id),\n action.option.id,\n ],\n }\n case 'collapse':\n return {\n ...state,\n highlighted: action.option,\n expanded: collectParentIds(state.options, action.option.id),\n }\n case 'close':\n return {\n ...state,\n expanded: [],\n highlighted: getFirst(state.options),\n isOpen: false,\n }\n case 'open':\n return {\n ...state,\n isOpen: true,\n }\n case 'setMouseOver':\n return {\n ...state,\n isMouseOver: action.isMouseOver,\n keyboardNavigated: action.isMouseOver ? false : state.keyboardNavigated,\n }\n case 'setFocused':\n return {\n ...state,\n isFocused: action.isFocused,\n }\n case 'setKeyboardNavigated':\n return {\n ...state,\n keyboardNavigated: true,\n }\n case 'updateOptions':\n return {\n ...state,\n options: action.options,\n }\n default:\n return state\n }\n}\n\nfunction findById(\n options: FlyoutOption[],\n optionId: FlyoutOption['id'],\n initialValue: FlyoutOption = getFirst(options)\n): FlyoutOption {\n return options.reduce((result, current) => {\n if (current.id === optionId) {\n return current\n }\n\n if (current.children) {\n return findById(current.children, optionId, result)\n }\n\n return result\n }, initialValue)\n}\n\nexport function transformOption(\n options: DropdownOption[],\n parentId: FlyoutOption['parentId']\n): FlyoutOption[] {\n return options.reduce<FlyoutOption[]>((acc, option) => {\n const id = ulid()\n const updatedOption = {\n id,\n parentId,\n origin: option,\n ...(Array.isArray(option.children) && {\n children: transformOption(option.children, id),\n }),\n }\n\n return [...acc, updatedOption]\n }, [])\n}\n\nfunction collectParentIds(\n options: FlyoutOption[],\n optionId: FlyoutOption['id']\n): FlyoutOption['id'][] {\n const option = findById(options, optionId)\n\n if (!isRootOption(option.parentId)) {\n return [...collectParentIds(options, option.parentId), option.parentId]\n }\n return [option.parentId]\n}\n\nexport function useDropdownFlyout({\n flyoutOptions,\n onClick: _onClick = noop,\n onKeyDown: _onKeyDown,\n}: Pick<DropdownFlyoutProps, 'onClick' | 'onKeyDown'> & {\n flyoutOptions: FlyoutOption[]\n}) {\n const [\n {\n options,\n expanded,\n highlighted,\n isOpen,\n isMouseOver,\n isFocused,\n keyboardNavigated,\n },\n dispatch,\n ] = React.useReducer(reducer, {\n options: flyoutOptions,\n expanded: [],\n highlighted: getFirst(flyoutOptions),\n isMouseOver: false,\n isFocused: false,\n isOpen: false,\n keyboardNavigated: false,\n })\n\n const setMouseOver = React.useCallback(\n (isMouseOver: boolean) => dispatch({ type: 'setMouseOver', isMouseOver }),\n []\n )\n\n const setFocused = React.useCallback(\n (isFocused: boolean) => dispatch({ type: 'setFocused', isFocused }),\n []\n )\n\n const isExpanded = (option: FlyoutOption) => expanded.includes(option.id)\n\n const isHighlighted = (option: FlyoutOption): boolean => {\n const parentIds = collectParentIds(options, highlighted.id)\n const isCorrectId =\n option.id === highlighted.id || parentIds.some((id) => id === option.id)\n return (isMouseOver || isFocused) && isCorrectId\n }\n\n const isFocusVisible = (option: FlyoutOption): boolean => {\n const parentIds = collectParentIds(options, highlighted.id)\n const isCorrectId =\n option.id === highlighted.id || parentIds.some((id) => id === option.id)\n return keyboardNavigated && isCorrectId\n }\n\n const findOptionById = React.useCallback(\n (id: FlyoutOptionId) => findById(options, id),\n [options]\n )\n\n const expand = React.useCallback(\n (option: FlyoutOption) =>\n dispatch({\n type: 'expand',\n option,\n }),\n []\n )\n\n const collapse = React.useCallback(\n (option: FlyoutOption) =>\n dispatch({\n type: 'collapse',\n option,\n }),\n []\n )\n\n const highlight = React.useCallback(\n (option: FlyoutOption) =>\n dispatch({\n type: 'highlight',\n option,\n }),\n []\n )\n\n const traversingHighlight = React.useCallback(\n (item: 'next' | 'prev' | 'children' | 'parent') => {\n const tier = isRootOption(highlighted.parentId)\n ? options\n : findOptionById(highlighted.parentId).children || []\n const optionIndex = tier.findIndex((item) => item.id === highlighted.id)\n\n switch (item) {\n case 'next':\n const nextIndex = optionIndex + 1 >= tier.length ? 0 : optionIndex + 1\n\n highlight(tier[nextIndex])\n break\n case 'prev':\n const prevIndex =\n optionIndex - 1 < 0 ? tier.length - 1 : optionIndex - 1\n\n highlight(tier[prevIndex])\n break\n case 'children':\n if (Array.isArray(highlighted.children)) {\n expand(highlighted)\n\n highlight(getFirst(highlighted.children))\n }\n break\n case 'parent':\n if (!isRootOption(highlighted.parentId)) {\n const parentOption = findOptionById(highlighted.parentId)\n collapse(parentOption)\n }\n break\n default:\n return\n }\n },\n [options, findOptionById, collapse, highlighted, expand, highlight]\n )\n\n const closeDropdown = React.useCallback(() => {\n dispatch({ type: 'close' })\n }, [])\n\n const closeSelectedDropdown = React.useCallback(\n (e: Event | React.FocusEvent) => {\n if (\n e &&\n (e.type === 'click' || e.type === 'mouseup') &&\n !(e as MouseEvent)\n .composedPath()\n .some((node) => (node as HTMLElement).dataset?.flyout)\n ) {\n dispatch({ type: 'close' })\n }\n },\n []\n )\n\n const openDropdown = React.useCallback(() => {\n dispatch({ type: 'open' })\n }, [])\n\n const onClick = React.useCallback(\n (option: FlyoutOption) => {\n if (!hasChildren(option.origin)) {\n _onClick(option.origin)\n closeDropdown()\n }\n },\n [_onClick, closeDropdown]\n )\n\n const onKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLDivElement>) => {\n const { key } = e\n\n switch (key) {\n case 'Enter':\n e.preventDefault()\n if (!isOpen && isFocused) {\n dispatch({ type: 'setKeyboardNavigated' })\n openDropdown()\n } else {\n if (hasChildren(highlighted.origin)) {\n dispatch({ type: 'setKeyboardNavigated' })\n traversingHighlight('children')\n } else {\n onClick(highlighted)\n }\n }\n break\n case 'Escape':\n case 'Esc':\n e.preventDefault()\n if (isRootOption(highlighted.parentId)) {\n if (isOpen) {\n e.stopPropagation?.()\n }\n closeDropdown()\n } else {\n e.stopPropagation?.()\n traversingHighlight('parent')\n }\n break\n case 'ArrowDown':\n case 'Down':\n e.preventDefault()\n dispatch({ type: 'setKeyboardNavigated' })\n traversingHighlight('next')\n break\n case 'ArrowUp':\n case 'Up':\n e.preventDefault()\n dispatch({ type: 'setKeyboardNavigated' })\n traversingHighlight('prev')\n break\n }\n _onKeyDown?.(e)\n },\n [\n closeDropdown,\n openDropdown,\n traversingHighlight,\n highlighted,\n isOpen,\n isFocused,\n onClick,\n _onKeyDown,\n ]\n )\n // There was an issue that was fixed in scope of UISP-215 https://procoretech.atlassian.net/browse/UISP-215\n // UseEffect is necessary for updating state in UseReducer because props don't automatically update state. (In this case: property \"options\")\n React.useEffect(() => {\n dispatch({ type: 'updateOptions', options: flyoutOptions })\n dispatch({ type: 'highlight', option: getFirst(flyoutOptions) })\n }, [flyoutOptions])\n\n return {\n isFocused,\n isFocusVisible,\n isMouseOver,\n isOpen,\n options,\n expanded,\n highlighted,\n expand,\n collapse,\n isHighlighted,\n isExpanded,\n closeDropdown,\n closeSelectedDropdown,\n openDropdown,\n onKeyDown,\n onClick,\n setMouseOver,\n setFocused,\n }\n}\n\nexport function defaultOptionRenderer(option: DropdownOption) {\n return (\n <>\n <StyledDropdownFlyoutLabel>{option.label}</StyledDropdownFlyoutLabel>\n {hasChildren(option) && (\n <StyledDropdownFlyoutExpandIcon data-qa=\"core-dropdown-flyout-option-expand-icon\" />\n )}\n </>\n )\n}\n\nexport const DropdownFlyoutContext = React.createContext<{\n onClick: (option: FlyoutOption) => void\n\n expand: (option: FlyoutOption) => void\n collapse: (option: FlyoutOption) => void\n optionRenderer: (option: DropdownOption) => React.ReactNode\n\n isExpanded: (option: FlyoutOption) => boolean\n isFocusVisible: (option: FlyoutOption) => boolean\n isHighlighted: (option: FlyoutOption) => boolean\n}>({\n onClick: noop,\n\n expand: noop,\n collapse: noop,\n optionRenderer: defaultOptionRenderer,\n\n isExpanded: returnFalse,\n isFocusVisible: returnFalse,\n isHighlighted: returnFalse,\n})\n\nexport const useDropdownFlyoutContext = () =>\n React.useContext(DropdownFlyoutContext)\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var _excluded = ["option", "highlighted", "expanded", "optionRenderer"],
|
|
1
|
+
var _excluded = ["option", "focusVisible", "highlighted", "expanded", "optionRenderer"],
|
|
2
2
|
_excluded2 = ["children", "icon"],
|
|
3
3
|
_excluded3 = ["disabled", "icon", "label", "loading", "options", "onClick", "optionRenderer", "children", "placement", "onKeyDown", "onFocus", "onBlur", "onMouseDown", "onMouseEnter", "onMouseLeave", "size", "variant"];
|
|
4
4
|
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
@@ -24,6 +24,7 @@ import { rootId } from './DropdownFlyout.types';
|
|
|
24
24
|
import { useDropdownFlyoutOverlay } from './useDropdownFlyoutOverlay';
|
|
25
25
|
export var FlyoutCaption = /*#__PURE__*/React.forwardRef(function FlyoutCaption(_ref, ref) {
|
|
26
26
|
var option = _ref.option,
|
|
27
|
+
focusVisible = _ref.focusVisible,
|
|
27
28
|
highlighted = _ref.highlighted,
|
|
28
29
|
expanded = _ref.expanded,
|
|
29
30
|
optionRenderer = _ref.optionRenderer,
|
|
@@ -32,6 +33,7 @@ export var FlyoutCaption = /*#__PURE__*/React.forwardRef(function FlyoutCaption(
|
|
|
32
33
|
return /*#__PURE__*/React.createElement(StyledDropdownFlyoutItem, _extends({}, props, {
|
|
33
34
|
ref: ref,
|
|
34
35
|
"aria-expanded": expanded,
|
|
36
|
+
"data-focus-visible": focusVisible,
|
|
35
37
|
"data-highlighted": highlighted,
|
|
36
38
|
"data-flyout": true
|
|
37
39
|
}), renderedOption);
|
|
@@ -41,6 +43,7 @@ export function FlyoutItem(_ref2) {
|
|
|
41
43
|
var option = _ref2.option;
|
|
42
44
|
var overlayElRef = React.useRef(null);
|
|
43
45
|
var _useDropdownFlyoutCon = useDropdownFlyoutContext(),
|
|
46
|
+
isFocusVisible = _useDropdownFlyoutCon.isFocusVisible,
|
|
44
47
|
isHighlighted = _useDropdownFlyoutCon.isHighlighted,
|
|
45
48
|
isExpanded = _useDropdownFlyoutCon.isExpanded,
|
|
46
49
|
_onClick = _useDropdownFlyoutCon.onClick,
|
|
@@ -68,6 +71,7 @@ export function FlyoutItem(_ref2) {
|
|
|
68
71
|
option: option.origin,
|
|
69
72
|
onClick: onClick,
|
|
70
73
|
optionRenderer: optionRenderer,
|
|
74
|
+
focusVisible: isFocusVisible(option),
|
|
71
75
|
highlighted: isHighlighted(option),
|
|
72
76
|
expanded: hasChildren(option.origin) ? isExpanded(option) : undefined,
|
|
73
77
|
onMouseEnter: onMouseEnter,
|
|
@@ -183,6 +187,7 @@ export var DropdownFlyout = /*#__PURE__*/React.forwardRef(function DropdownFlyou
|
|
|
183
187
|
setMouseOver = _useDropdownFlyout.setMouseOver,
|
|
184
188
|
setFocused = _useDropdownFlyout.setFocused,
|
|
185
189
|
isExpanded = _useDropdownFlyout.isExpanded,
|
|
190
|
+
isFocusVisible = _useDropdownFlyout.isFocusVisible,
|
|
186
191
|
isHighlighted = _useDropdownFlyout.isHighlighted,
|
|
187
192
|
closeDropdown = _useDropdownFlyout.closeDropdown;
|
|
188
193
|
useClickOutside({
|
|
@@ -271,6 +276,7 @@ export var DropdownFlyout = /*#__PURE__*/React.forwardRef(function DropdownFlyou
|
|
|
271
276
|
collapse: collapse,
|
|
272
277
|
onClick: onClick,
|
|
273
278
|
isExpanded: isExpanded,
|
|
279
|
+
isFocusVisible: isFocusVisible,
|
|
274
280
|
isHighlighted: isHighlighted,
|
|
275
281
|
optionRenderer: optionRenderer
|
|
276
282
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropdownFlyout.js","names":["EllipsisVertical","React","useCallback","Card","DropdownButton","Portal","useClickOutside","useI18nContext","mergeRefs","defaultOptionRenderer","DropdownFlyoutContext","hasChildren","noop","transformOption","useDropdownFlyout","useDropdownFlyoutContext","StyledDropdownFlyout","StyledDropdownFlyoutItem","rootId","useDropdownFlyoutOverlay","FlyoutCaption","forwardRef","_ref","ref","option","highlighted","expanded","optionRenderer","props","_objectWithoutProperties","_excluded","renderedOption","createElement","_extends","displayName","FlyoutItem","_ref2","overlayElRef","useRef","_useDropdownFlyoutCon","isHighlighted","isExpanded","_onClick","onClick","expand","collapse","onMouseEnter","onMouseLeave","e","relatedTarget","Node","current","contains","_React$useState","useState","_React$useState2","_slicedToArray","referenceEl","setReferenceEl","Fragment","role","origin","undefined","Array","isArray","children","FlyoutList","options","overlayRef","placement","_ref3","_ref3$offset","offset","_useDropdownFlyoutOve","mainAxis","overlayStyle","referenceRef","useEffect","shadowStrength","style","map","key","id","DefaultButton","_ref4","icon","_excluded2","loading","arrow","Boolean","Children","count","DropdownFlyout","_ref5","disabled","label","_options","_ref5$onClick","_ref5$optionRenderer","_ref5$placement","_onKeyDown","onKeyDown","onFocus_","onFocus","onBlur_","onBlur","onMouseDown_","onMouseDown","onMouseEnter_","onMouseLeave_","size","_ref5$variant","variant","_excluded3","innerRef","containerRef","targetRef","flyoutOptions","useMemo","_useDropdownFlyout","closeSelectedDropdown","openDropdown","isOpen","setMouseOver","setFocused","closeDropdown","onClickOutside","refs","element","I18n","ariaLabel","t","concat","trigger","isValidElement","_containerRef$current","target","dataset","flyout","preventDefault","_targetRef$current","focus","_React$useState3","_React$useState4","memoRef","cloneElement","_trigger$props$onClic","_trigger$props","call","tabIndex","Provider","value"],"sources":["../../src/DropdownFlyout/DropdownFlyout.tsx"],"sourcesContent":["import { EllipsisVertical } from '@procore/core-icons/dist'\nimport type { MouseEvent } from 'react'\nimport React, { useCallback } from 'react'\nimport type { ButtonProps } from '../Button'\nimport { Card } from '../Card'\nimport { DropdownButton } from '../Dropdown/Dropdown'\nimport { Portal } from '../Portal'\nimport { useClickOutside } from '../_hooks/ClickOutside'\nimport { useI18nContext } from '../_hooks/I18n'\nimport { mergeRefs } from '../_utils/mergeRefs'\nimport type { ReactElementWithRef } from '../_utils/types'\nimport {\n defaultOptionRenderer,\n DropdownFlyoutContext,\n hasChildren,\n noop,\n transformOption,\n useDropdownFlyout,\n useDropdownFlyoutContext,\n} from './DropdownFlyout.helpers'\nimport {\n StyledDropdownFlyout,\n StyledDropdownFlyoutItem,\n} from './DropdownFlyout.styles'\nimport type {\n DropdownFlyoutProps,\n FlyoutCaptionProps,\n FlyoutItemProps,\n FlyoutListProps,\n} from './DropdownFlyout.types'\nimport { rootId } from './DropdownFlyout.types'\nimport { useDropdownFlyoutOverlay } from './useDropdownFlyoutOverlay'\n\nexport const FlyoutCaption = React.forwardRef<\n HTMLDivElement,\n FlyoutCaptionProps\n>(function FlyoutCaption(\n { option, highlighted, expanded, optionRenderer, ...props },\n ref\n) {\n const renderedOption = optionRenderer(option)\n\n return (\n <StyledDropdownFlyoutItem\n {...props}\n ref={ref}\n aria-expanded={expanded}\n data-highlighted={highlighted}\n data-flyout\n >\n {renderedOption}\n </StyledDropdownFlyoutItem>\n )\n})\n\nFlyoutCaption.displayName = 'FlyoutCaption'\n\nexport function FlyoutItem({ option }: FlyoutItemProps) {\n const overlayElRef = React.useRef<HTMLDivElement>(null)\n const {\n isHighlighted,\n isExpanded,\n onClick: _onClick,\n expand,\n collapse,\n optionRenderer,\n } = useDropdownFlyoutContext()\n\n const onMouseEnter = React.useCallback(() => expand(option), [option, expand])\n const onMouseLeave = React.useCallback(\n (e: React.MouseEvent<HTMLDivElement>) => {\n if (\n e.relatedTarget instanceof Node &&\n overlayElRef.current &&\n !overlayElRef.current.contains(e.relatedTarget as Node)\n ) {\n collapse(option)\n }\n },\n [collapse, option]\n )\n\n const onClick = React.useCallback(() => _onClick(option), [_onClick, option])\n\n const [referenceEl, setReferenceEl] = React.useState<HTMLElement | null>(null)\n\n return (\n <>\n <FlyoutCaption\n ref={setReferenceEl}\n role=\"listitem\"\n option={option.origin}\n onClick={onClick}\n optionRenderer={optionRenderer}\n highlighted={isHighlighted(option)}\n expanded={hasChildren(option.origin) ? isExpanded(option) : undefined}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n />\n {Array.isArray(option.children) && isExpanded(option) ? (\n <Portal>\n <FlyoutList\n referenceEl={referenceEl}\n options={option.children}\n overlayRef={overlayElRef}\n placement=\"right-top\"\n />\n </Portal>\n ) : null}\n </>\n )\n}\n\nexport function FlyoutList({\n options,\n placement,\n referenceEl,\n overlayRef: overlayElRef,\n offset = 0,\n}: FlyoutListProps) {\n const { overlayStyle, referenceRef, overlayRef } = useDropdownFlyoutOverlay({\n placement,\n offset: { mainAxis: offset },\n })\n\n React.useEffect(() => {\n referenceRef(referenceEl)\n }, [referenceEl, referenceRef])\n\n return (\n <Card\n ref={mergeRefs(overlayRef, overlayElRef)}\n shadowStrength={2}\n style={overlayStyle}\n >\n <StyledDropdownFlyout role=\"list\">\n {options.map((option) => (\n <FlyoutItem key={option.id} option={option} />\n ))}\n </StyledDropdownFlyout>\n </Card>\n )\n}\n\nconst DefaultButton = React.forwardRef<HTMLButtonElement, ButtonProps>(\n function DefaultButton({ children, icon, ...props }, ref) {\n return (\n <DropdownButton\n {...props}\n icon={\n props.loading ? undefined : !icon && !children ? (\n <EllipsisVertical />\n ) : (\n icon\n )\n }\n arrow={Boolean(React.Children.count(children))}\n ref={ref}\n >\n {children}\n </DropdownButton>\n )\n }\n)\n\n/**\n\n The dropdown flyout allows for additional menu items to be nested within\n parent items, which allows more menu options for users.\n @a11y WARN: DropdownFlyotus hold no value and take an action. Focus is expected\n to be moved from a Dropdown to something else, to continue the user flow.\n If the action is inert and does not move focus, this is left to be added\n by the consumer.\n @since 10.19.0\n\n @see [Storybook](https://stories.core.procore.com/?path=/story/core-react_demos-dropdownflyout--demo)\n\n @see [Design Guidelines](https://design.procore.com/dropdown-flyout)\n\n */\nexport const DropdownFlyout = React.forwardRef<\n HTMLDivElement,\n DropdownFlyoutProps\n>(function DropdownFlyout(\n {\n disabled,\n icon,\n label,\n loading,\n options: _options,\n onClick: _onClick = noop,\n optionRenderer = defaultOptionRenderer,\n children,\n placement = 'right-bottom',\n onKeyDown: _onKeyDown,\n onFocus: onFocus_,\n onBlur: onBlur_,\n onMouseDown: onMouseDown_,\n onMouseEnter: onMouseEnter_,\n onMouseLeave: onMouseLeave_,\n size,\n variant = 'secondary',\n ...props\n },\n ref\n) {\n const innerRef = React.useRef<HTMLDivElement>(null)\n const containerRef = (ref as React.RefObject<HTMLInputElement>) || innerRef\n const overlayElRef = React.useRef<HTMLDivElement>(null)\n const targetRef = React.useRef<HTMLElement>(null)\n\n const flyoutOptions = React.useMemo(\n () => transformOption(_options, rootId),\n [_options]\n )\n\n const {\n options,\n collapse,\n expand,\n closeSelectedDropdown,\n openDropdown,\n isOpen,\n onClick,\n onKeyDown,\n setMouseOver,\n setFocused,\n isExpanded,\n isHighlighted,\n closeDropdown,\n } = useDropdownFlyout({\n flyoutOptions,\n onClick: _onClick,\n onKeyDown: _onKeyDown,\n })\n\n useClickOutside({\n onClickOutside: isOpen ? closeSelectedDropdown : noop,\n refs: [containerRef],\n })\n\n const element =\n typeof children === 'function' ? children({ isOpen }) : children\n\n const I18n = useI18nContext()\n\n const ariaLabel =\n props['aria-label'] ||\n label ||\n I18n.t(`core.dropdown.${loading ? 'loading' : 'moreOptions'}`)\n\n const trigger: ReactElementWithRef = React.isValidElement(element) ? (\n element\n ) : (\n <DefaultButton\n aria-label={ariaLabel}\n aria-expanded={isOpen}\n children={label}\n disabled={disabled}\n loading={loading}\n icon={icon}\n size={size}\n variant={variant}\n />\n )\n\n function onBlur(e: React.FocusEvent<HTMLDivElement>) {\n setFocused(false)\n closeSelectedDropdown(e)\n onBlur_?.(e)\n }\n\n function onFocus(e: React.FocusEvent<HTMLDivElement>) {\n setFocused(true)\n onFocus_?.(e)\n }\n\n function onMouseDown(e: React.MouseEvent<HTMLDivElement>) {\n // Discard firing of blur event\n // when click was inside the dropdown\n if ((e.target as HTMLElement).dataset.flyout) {\n e.preventDefault()\n return\n }\n if (e.target instanceof Node && containerRef.current?.contains(e.target)) {\n e.preventDefault()\n targetRef.current?.focus()\n }\n onMouseDown_?.(e)\n }\n\n function onMouseLeave(e: React.MouseEvent<HTMLDivElement>) {\n setMouseOver(false)\n onMouseLeave_?.(e)\n }\n\n function onMouseEnter(e: React.MouseEvent<HTMLDivElement>) {\n setMouseOver(true)\n onMouseEnter_?.(e)\n }\n\n const [referenceEl, setReferenceEl] = React.useState<HTMLElement | null>(null)\n\n // mergeRefs function is from shared utils.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const memoRef = useCallback(\n trigger.ref\n ? mergeRefs(trigger.ref, targetRef, setReferenceEl)\n : mergeRefs(targetRef, setReferenceEl),\n [targetRef, setReferenceEl, trigger.ref]\n )\n return (\n <div\n {...props}\n aria-label={undefined}\n ref={containerRef}\n onKeyDown={onKeyDown}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onFocus={onFocus}\n onMouseDown={onMouseDown}\n onBlur={onBlur}\n >\n {React.cloneElement(trigger, {\n ref: memoRef,\n onClick: (e: MouseEvent<HTMLElement, 'click'>) => {\n trigger.props.onClick?.(e)\n if (isOpen) {\n closeDropdown()\n } else {\n openDropdown()\n }\n },\n tabIndex: 0,\n })}\n <DropdownFlyoutContext.Provider\n value={{\n expand,\n collapse,\n onClick,\n isExpanded,\n isHighlighted,\n optionRenderer,\n }}\n >\n {isOpen && (\n <Portal>\n <FlyoutList\n options={options}\n overlayRef={overlayElRef}\n placement={placement}\n referenceEl={referenceEl}\n offset={4}\n />\n </Portal>\n )}\n </DropdownFlyoutContext.Provider>\n </div>\n )\n})\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DropdownFlyout.js","names":["EllipsisVertical","React","useCallback","Card","DropdownButton","Portal","useClickOutside","useI18nContext","mergeRefs","defaultOptionRenderer","DropdownFlyoutContext","hasChildren","noop","transformOption","useDropdownFlyout","useDropdownFlyoutContext","StyledDropdownFlyout","StyledDropdownFlyoutItem","rootId","useDropdownFlyoutOverlay","FlyoutCaption","forwardRef","_ref","ref","option","focusVisible","highlighted","expanded","optionRenderer","props","_objectWithoutProperties","_excluded","renderedOption","createElement","_extends","displayName","FlyoutItem","_ref2","overlayElRef","useRef","_useDropdownFlyoutCon","isFocusVisible","isHighlighted","isExpanded","_onClick","onClick","expand","collapse","onMouseEnter","onMouseLeave","e","relatedTarget","Node","current","contains","_React$useState","useState","_React$useState2","_slicedToArray","referenceEl","setReferenceEl","Fragment","role","origin","undefined","Array","isArray","children","FlyoutList","options","overlayRef","placement","_ref3","_ref3$offset","offset","_useDropdownFlyoutOve","mainAxis","overlayStyle","referenceRef","useEffect","shadowStrength","style","map","key","id","DefaultButton","_ref4","icon","_excluded2","loading","arrow","Boolean","Children","count","DropdownFlyout","_ref5","disabled","label","_options","_ref5$onClick","_ref5$optionRenderer","_ref5$placement","_onKeyDown","onKeyDown","onFocus_","onFocus","onBlur_","onBlur","onMouseDown_","onMouseDown","onMouseEnter_","onMouseLeave_","size","_ref5$variant","variant","_excluded3","innerRef","containerRef","targetRef","flyoutOptions","useMemo","_useDropdownFlyout","closeSelectedDropdown","openDropdown","isOpen","setMouseOver","setFocused","closeDropdown","onClickOutside","refs","element","I18n","ariaLabel","t","concat","trigger","isValidElement","_containerRef$current","target","dataset","flyout","preventDefault","_targetRef$current","focus","_React$useState3","_React$useState4","memoRef","cloneElement","_trigger$props$onClic","_trigger$props","call","tabIndex","Provider","value"],"sources":["../../src/DropdownFlyout/DropdownFlyout.tsx"],"sourcesContent":["import { EllipsisVertical } from '@procore/core-icons/dist'\nimport type { MouseEvent } from 'react'\nimport React, { useCallback } from 'react'\nimport type { ButtonProps } from '../Button'\nimport { Card } from '../Card'\nimport { DropdownButton } from '../Dropdown/Dropdown'\nimport { Portal } from '../Portal'\nimport { useClickOutside } from '../_hooks/ClickOutside'\nimport { useI18nContext } from '../_hooks/I18n'\nimport { mergeRefs } from '../_utils/mergeRefs'\nimport type { ReactElementWithRef } from '../_utils/types'\nimport {\n defaultOptionRenderer,\n DropdownFlyoutContext,\n hasChildren,\n noop,\n transformOption,\n useDropdownFlyout,\n useDropdownFlyoutContext,\n} from './DropdownFlyout.helpers'\nimport {\n StyledDropdownFlyout,\n StyledDropdownFlyoutItem,\n} from './DropdownFlyout.styles'\nimport type {\n DropdownFlyoutProps,\n FlyoutCaptionProps,\n FlyoutItemProps,\n FlyoutListProps,\n} from './DropdownFlyout.types'\nimport { rootId } from './DropdownFlyout.types'\nimport { useDropdownFlyoutOverlay } from './useDropdownFlyoutOverlay'\n\nexport const FlyoutCaption = React.forwardRef<\n HTMLDivElement,\n FlyoutCaptionProps\n>(function FlyoutCaption(\n { option, focusVisible, highlighted, expanded, optionRenderer, ...props },\n ref\n) {\n const renderedOption = optionRenderer(option)\n\n return (\n <StyledDropdownFlyoutItem\n {...props}\n ref={ref}\n aria-expanded={expanded}\n data-focus-visible={focusVisible}\n data-highlighted={highlighted}\n data-flyout\n >\n {renderedOption}\n </StyledDropdownFlyoutItem>\n )\n})\n\nFlyoutCaption.displayName = 'FlyoutCaption'\n\nexport function FlyoutItem({ option }: FlyoutItemProps) {\n const overlayElRef = React.useRef<HTMLDivElement>(null)\n const {\n isFocusVisible,\n isHighlighted,\n isExpanded,\n onClick: _onClick,\n expand,\n collapse,\n optionRenderer,\n } = useDropdownFlyoutContext()\n\n const onMouseEnter = React.useCallback(() => expand(option), [option, expand])\n const onMouseLeave = React.useCallback(\n (e: React.MouseEvent<HTMLDivElement>) => {\n if (\n e.relatedTarget instanceof Node &&\n overlayElRef.current &&\n !overlayElRef.current.contains(e.relatedTarget as Node)\n ) {\n collapse(option)\n }\n },\n [collapse, option]\n )\n\n const onClick = React.useCallback(() => _onClick(option), [_onClick, option])\n\n const [referenceEl, setReferenceEl] = React.useState<HTMLElement | null>(null)\n\n return (\n <>\n <FlyoutCaption\n ref={setReferenceEl}\n role=\"listitem\"\n option={option.origin}\n onClick={onClick}\n optionRenderer={optionRenderer}\n focusVisible={isFocusVisible(option)}\n highlighted={isHighlighted(option)}\n expanded={hasChildren(option.origin) ? isExpanded(option) : undefined}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n />\n {Array.isArray(option.children) && isExpanded(option) ? (\n <Portal>\n <FlyoutList\n referenceEl={referenceEl}\n options={option.children}\n overlayRef={overlayElRef}\n placement=\"right-top\"\n />\n </Portal>\n ) : null}\n </>\n )\n}\n\nexport function FlyoutList({\n options,\n placement,\n referenceEl,\n overlayRef: overlayElRef,\n offset = 0,\n}: FlyoutListProps) {\n const { overlayStyle, referenceRef, overlayRef } = useDropdownFlyoutOverlay({\n placement,\n offset: { mainAxis: offset },\n })\n\n React.useEffect(() => {\n referenceRef(referenceEl)\n }, [referenceEl, referenceRef])\n\n return (\n <Card\n ref={mergeRefs(overlayRef, overlayElRef)}\n shadowStrength={2}\n style={overlayStyle}\n >\n <StyledDropdownFlyout role=\"list\">\n {options.map((option) => (\n <FlyoutItem key={option.id} option={option} />\n ))}\n </StyledDropdownFlyout>\n </Card>\n )\n}\n\nconst DefaultButton = React.forwardRef<HTMLButtonElement, ButtonProps>(\n function DefaultButton({ children, icon, ...props }, ref) {\n return (\n <DropdownButton\n {...props}\n icon={\n props.loading ? undefined : !icon && !children ? (\n <EllipsisVertical />\n ) : (\n icon\n )\n }\n arrow={Boolean(React.Children.count(children))}\n ref={ref}\n >\n {children}\n </DropdownButton>\n )\n }\n)\n\n/**\n\n The dropdown flyout allows for additional menu items to be nested within\n parent items, which allows more menu options for users.\n @a11y WARN: DropdownFlyotus hold no value and take an action. Focus is expected\n to be moved from a Dropdown to something else, to continue the user flow.\n If the action is inert and does not move focus, this is left to be added\n by the consumer.\n @since 10.19.0\n\n @see [Storybook](https://stories.core.procore.com/?path=/story/core-react_demos-dropdownflyout--demo)\n\n @see [Design Guidelines](https://design.procore.com/dropdown-flyout)\n\n */\nexport const DropdownFlyout = React.forwardRef<\n HTMLDivElement,\n DropdownFlyoutProps\n>(function DropdownFlyout(\n {\n disabled,\n icon,\n label,\n loading,\n options: _options,\n onClick: _onClick = noop,\n optionRenderer = defaultOptionRenderer,\n children,\n placement = 'right-bottom',\n onKeyDown: _onKeyDown,\n onFocus: onFocus_,\n onBlur: onBlur_,\n onMouseDown: onMouseDown_,\n onMouseEnter: onMouseEnter_,\n onMouseLeave: onMouseLeave_,\n size,\n variant = 'secondary',\n ...props\n },\n ref\n) {\n const innerRef = React.useRef<HTMLDivElement>(null)\n const containerRef = (ref as React.RefObject<HTMLInputElement>) || innerRef\n const overlayElRef = React.useRef<HTMLDivElement>(null)\n const targetRef = React.useRef<HTMLElement>(null)\n\n const flyoutOptions = React.useMemo(\n () => transformOption(_options, rootId),\n [_options]\n )\n\n const {\n options,\n collapse,\n expand,\n closeSelectedDropdown,\n openDropdown,\n isOpen,\n onClick,\n onKeyDown,\n setMouseOver,\n setFocused,\n isExpanded,\n isFocusVisible,\n isHighlighted,\n closeDropdown,\n } = useDropdownFlyout({\n flyoutOptions,\n onClick: _onClick,\n onKeyDown: _onKeyDown,\n })\n\n useClickOutside({\n onClickOutside: isOpen ? closeSelectedDropdown : noop,\n refs: [containerRef],\n })\n\n const element =\n typeof children === 'function' ? children({ isOpen }) : children\n\n const I18n = useI18nContext()\n\n const ariaLabel =\n props['aria-label'] ||\n label ||\n I18n.t(`core.dropdown.${loading ? 'loading' : 'moreOptions'}`)\n\n const trigger: ReactElementWithRef = React.isValidElement(element) ? (\n element\n ) : (\n <DefaultButton\n aria-label={ariaLabel}\n aria-expanded={isOpen}\n children={label}\n disabled={disabled}\n loading={loading}\n icon={icon}\n size={size}\n variant={variant}\n />\n )\n\n function onBlur(e: React.FocusEvent<HTMLDivElement>) {\n setFocused(false)\n closeSelectedDropdown(e)\n onBlur_?.(e)\n }\n\n function onFocus(e: React.FocusEvent<HTMLDivElement>) {\n setFocused(true)\n onFocus_?.(e)\n }\n\n function onMouseDown(e: React.MouseEvent<HTMLDivElement>) {\n // Discard firing of blur event\n // when click was inside the dropdown\n if ((e.target as HTMLElement).dataset.flyout) {\n e.preventDefault()\n return\n }\n if (e.target instanceof Node && containerRef.current?.contains(e.target)) {\n e.preventDefault()\n targetRef.current?.focus()\n }\n onMouseDown_?.(e)\n }\n\n function onMouseLeave(e: React.MouseEvent<HTMLDivElement>) {\n setMouseOver(false)\n onMouseLeave_?.(e)\n }\n\n function onMouseEnter(e: React.MouseEvent<HTMLDivElement>) {\n setMouseOver(true)\n onMouseEnter_?.(e)\n }\n\n const [referenceEl, setReferenceEl] = React.useState<HTMLElement | null>(null)\n\n // mergeRefs function is from shared utils.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const memoRef = useCallback(\n trigger.ref\n ? mergeRefs(trigger.ref, targetRef, setReferenceEl)\n : mergeRefs(targetRef, setReferenceEl),\n [targetRef, setReferenceEl, trigger.ref]\n )\n return (\n <div\n {...props}\n aria-label={undefined}\n ref={containerRef}\n onKeyDown={onKeyDown}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onFocus={onFocus}\n onMouseDown={onMouseDown}\n onBlur={onBlur}\n >\n {React.cloneElement(trigger, {\n ref: memoRef,\n onClick: (e: MouseEvent<HTMLElement, 'click'>) => {\n trigger.props.onClick?.(e)\n if (isOpen) {\n closeDropdown()\n } else {\n openDropdown()\n }\n },\n tabIndex: 0,\n })}\n <DropdownFlyoutContext.Provider\n value={{\n expand,\n collapse,\n onClick,\n isExpanded,\n isFocusVisible,\n isHighlighted,\n optionRenderer,\n }}\n >\n {isOpen && (\n <Portal>\n <FlyoutList\n options={options}\n overlayRef={overlayElRef}\n placement={placement}\n referenceEl={referenceEl}\n offset={4}\n />\n </Portal>\n )}\n </DropdownFlyoutContext.Provider>\n </div>\n )\n})\n"],"mappings":"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"}
|
|
@@ -6,18 +6,18 @@ import { getEllipsis } from '../_styles/mixins';
|
|
|
6
6
|
import { spacing } from '../_styles/spacing';
|
|
7
7
|
export var StyledDropdownFlyout = /*#__PURE__*/styled.div.withConfig({
|
|
8
8
|
displayName: "StyledDropdownFlyout",
|
|
9
|
-
componentId: "core-
|
|
9
|
+
componentId: "core-12_51_0__sc-1i79jsg-0"
|
|
10
10
|
})(["display:flex;flex-wrap:wrap;flex-direction:column;width:100%;max-height:855px;padding:", "px 0;"], spacing.sm);
|
|
11
11
|
export var StyledDropdownFlyoutItem = /*#__PURE__*/styled.div.withConfig({
|
|
12
12
|
displayName: "StyledDropdownFlyoutItem",
|
|
13
|
-
componentId: "core-
|
|
14
|
-
})(["display:flex;justify-content:space-between;cursor:pointer;width:100%;padding:", "px ", "px;color:", ";", " &[data-highlighted='true'],&:hover{background-color:", ";}"], spacing.xs, spacing.lg, colors.gray20, getTypographyIntent('body'), colors.gray96);
|
|
13
|
+
componentId: "core-12_51_0__sc-1i79jsg-1"
|
|
14
|
+
})(["display:flex;justify-content:space-between;cursor:pointer;width:100%;padding:", "px ", "px;color:", ";", " &[data-highlighted='true'],&:hover{background-color:", ";}&[data-focus-visible='true']{box-shadow:inset 0 0 0 2px ", ";}"], spacing.xs, spacing.lg, colors.gray20, getTypographyIntent('body'), colors.gray96, colors.blue40);
|
|
15
15
|
export var StyledDropdownFlyoutLabel = /*#__PURE__*/styled.span.withConfig({
|
|
16
16
|
displayName: "StyledDropdownFlyoutLabel",
|
|
17
|
-
componentId: "core-
|
|
17
|
+
componentId: "core-12_51_0__sc-1i79jsg-2"
|
|
18
18
|
})(["", ""], getEllipsis());
|
|
19
19
|
export var StyledDropdownFlyoutExpandIcon = /*#__PURE__*/styled.span.withConfig({
|
|
20
20
|
displayName: "StyledDropdownFlyoutExpandIcon",
|
|
21
|
-
componentId: "core-
|
|
21
|
+
componentId: "core-12_51_0__sc-1i79jsg-3"
|
|
22
22
|
})(["position:relative;display:inline-flex;align-self:center;flex-shrink:0;margin-left:", "px;white-space:nowrap;", ""], spacing.lg, arrowRight(4, 'black'));
|
|
23
23
|
//# sourceMappingURL=DropdownFlyout.styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropdownFlyout.styles.js","names":["styled","getTypographyIntent","arrowRight","colors","getEllipsis","spacing","StyledDropdownFlyout","div","withConfig","displayName","componentId","sm","StyledDropdownFlyoutItem","xs","lg","gray20","gray96","StyledDropdownFlyoutLabel","span","StyledDropdownFlyoutExpandIcon"],"sources":["../../src/DropdownFlyout/DropdownFlyout.styles.tsx"],"sourcesContent":["import styled from 'styled-components'\nimport { getTypographyIntent } from '../Typography/Typography.styles'\nimport { arrowRight } from '../_styles/arrows'\nimport { colors } from '../_styles/colors'\nimport { getEllipsis } from '../_styles/mixins'\nimport { spacing } from '../_styles/spacing'\n\nexport const StyledDropdownFlyout = styled.div`\n display: flex;\n flex-wrap: wrap;\n flex-direction: column;\n width: 100%;\n max-height: 855px;\n padding: ${spacing.sm}px 0;\n`\n\nexport const StyledDropdownFlyoutItem = styled.div`\n display: flex;\n justify-content: space-between;\n\n cursor: pointer;\n\n width: 100%;\n padding: ${spacing.xs}px ${spacing.lg}px;\n color: ${colors.gray20};\n ${getTypographyIntent('body')}\n\n &[data-highlighted='true'],\n &:hover {\n background-color: ${colors.gray96};\n }\n`\n\nexport const StyledDropdownFlyoutLabel = styled.span`\n ${getEllipsis()}\n`\n\nexport const StyledDropdownFlyoutExpandIcon = styled.span`\n position: relative;\n display: inline-flex;\n align-self: center;\n flex-shrink: 0;\n margin-left: ${spacing.lg}px;\n white-space: nowrap;\n\n ${arrowRight(4, 'black')}\n`\n"],"mappings":"AAAA,OAAOA,MAAM,MAAM,mBAAmB;AACtC,SAASC,mBAAmB,QAAQ,iCAAiC;AACrE,SAASC,UAAU,QAAQ,mBAAmB;AAC9C,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,SAASC,WAAW,QAAQ,mBAAmB;AAC/C,SAASC,OAAO,QAAQ,oBAAoB;AAE5C,OAAO,IAAMC,oBAAoB,gBAAGN,MAAM,CAACO,GAAG,CAAAC,UAAA;EAAAC,WAAA;EAAAC,WAAA;AAAA,wGAMjCL,OAAO,CAACM,EAAE,CACtB;AAED,OAAO,IAAMC,wBAAwB,gBAAGZ,MAAM,CAACO,GAAG,CAAAC,UAAA;EAAAC,WAAA;EAAAC,WAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"DropdownFlyout.styles.js","names":["styled","getTypographyIntent","arrowRight","colors","getEllipsis","spacing","StyledDropdownFlyout","div","withConfig","displayName","componentId","sm","StyledDropdownFlyoutItem","xs","lg","gray20","gray96","blue40","StyledDropdownFlyoutLabel","span","StyledDropdownFlyoutExpandIcon"],"sources":["../../src/DropdownFlyout/DropdownFlyout.styles.tsx"],"sourcesContent":["import styled from 'styled-components'\nimport { getTypographyIntent } from '../Typography/Typography.styles'\nimport { arrowRight } from '../_styles/arrows'\nimport { colors } from '../_styles/colors'\nimport { getEllipsis } from '../_styles/mixins'\nimport { spacing } from '../_styles/spacing'\n\nexport const StyledDropdownFlyout = styled.div`\n display: flex;\n flex-wrap: wrap;\n flex-direction: column;\n width: 100%;\n max-height: 855px;\n padding: ${spacing.sm}px 0;\n`\n\nexport const StyledDropdownFlyoutItem = styled.div`\n display: flex;\n justify-content: space-between;\n\n cursor: pointer;\n\n width: 100%;\n padding: ${spacing.xs}px ${spacing.lg}px;\n color: ${colors.gray20};\n ${getTypographyIntent('body')}\n\n &[data-highlighted='true'],\n &:hover {\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\nexport const StyledDropdownFlyoutLabel = styled.span`\n ${getEllipsis()}\n`\n\nexport const StyledDropdownFlyoutExpandIcon = styled.span`\n position: relative;\n display: inline-flex;\n align-self: center;\n flex-shrink: 0;\n margin-left: ${spacing.lg}px;\n white-space: nowrap;\n\n ${arrowRight(4, 'black')}\n`\n"],"mappings":"AAAA,OAAOA,MAAM,MAAM,mBAAmB;AACtC,SAASC,mBAAmB,QAAQ,iCAAiC;AACrE,SAASC,UAAU,QAAQ,mBAAmB;AAC9C,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,SAASC,WAAW,QAAQ,mBAAmB;AAC/C,SAASC,OAAO,QAAQ,oBAAoB;AAE5C,OAAO,IAAMC,oBAAoB,gBAAGN,MAAM,CAACO,GAAG,CAAAC,UAAA;EAAAC,WAAA;EAAAC,WAAA;AAAA,wGAMjCL,OAAO,CAACM,EAAE,CACtB;AAED,OAAO,IAAMC,wBAAwB,gBAAGZ,MAAM,CAACO,GAAG,CAAAC,UAAA;EAAAC,WAAA;EAAAC,WAAA;AAAA,4OAOrCL,OAAO,CAACQ,EAAE,EAAMR,OAAO,CAACS,EAAE,EAC5BX,MAAM,CAACY,MAAM,EACpBd,mBAAmB,CAAC,MAAM,CAAC,EAIPE,MAAM,CAACa,MAAM,EAIHb,MAAM,CAACc,MAAM,CAE9C;AAED,OAAO,IAAMC,yBAAyB,gBAAGlB,MAAM,CAACmB,IAAI,CAAAX,UAAA;EAAAC,WAAA;EAAAC,WAAA;AAAA,aAChDN,WAAW,CAAC,CAAC,CAChB;AAED,OAAO,IAAMgB,8BAA8B,gBAAGpB,MAAM,CAACmB,IAAI,CAAAX,UAAA;EAAAC,WAAA;EAAAC,WAAA;AAAA,yHAKxCL,OAAO,CAACS,EAAE,EAGvBZ,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,CACzB"}
|
|
@@ -22,6 +22,8 @@ export declare type Action = {
|
|
|
22
22
|
} | {
|
|
23
23
|
type: 'setFocused';
|
|
24
24
|
isFocused: boolean;
|
|
25
|
+
} | {
|
|
26
|
+
type: 'setKeyboardNavigated';
|
|
25
27
|
} | {
|
|
26
28
|
type: 'updateOptions';
|
|
27
29
|
options: FlyoutOption[];
|
|
@@ -34,6 +36,7 @@ export declare type State = {
|
|
|
34
36
|
isMouseOver: boolean;
|
|
35
37
|
isFocused: boolean;
|
|
36
38
|
isOpen: boolean;
|
|
39
|
+
keyboardNavigated: boolean;
|
|
37
40
|
};
|
|
38
41
|
export interface DropdownOption {
|
|
39
42
|
value: any;
|
|
@@ -62,6 +65,7 @@ export interface FlyoutOption {
|
|
|
62
65
|
export declare type FlyoutOptionId = FlyoutOption['id'] | typeof rootId;
|
|
63
66
|
export interface FlyoutCaptionProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
64
67
|
option: DropdownOption;
|
|
68
|
+
focusVisible?: boolean;
|
|
65
69
|
highlighted: boolean;
|
|
66
70
|
expanded?: boolean;
|
|
67
71
|
optionRenderer: (option: DropdownOption) => React.ReactNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropdownFlyout.types.js","names":["rootId"],"sources":["../../src/DropdownFlyout/DropdownFlyout.types.ts"],"sourcesContent":["import type { Ref } from 'react'\nimport type { DropdownProps } from '../Dropdown/Dropdown.types'\nimport type { OverlayProps } from '../Overlay/Overlay'\nimport type { Placement, Props } from '../_utils/types'\n\nexport const rootId = 'ROOT_ID'\n\nexport type Action =\n | { type: 'highlight'; option: FlyoutOption }\n | { type: 'expand'; option: FlyoutOption }\n | { type: 'collapse'; option: FlyoutOption }\n | { type: 'close' }\n | { type: 'open' }\n | { type: 'setMouseOver'; isMouseOver: boolean }\n | { type: 'setFocused'; isFocused: boolean }\n | { type: 'updateOptions'; options: FlyoutOption[] }\n\ntype ExpandedItem = FlyoutOptionId\n\nexport type State = {\n highlighted: FlyoutOption\n expanded: ExpandedItem[]\n options: FlyoutOption[]\n isMouseOver: boolean\n isFocused: boolean\n isOpen: boolean\n}\n\nexport interface DropdownOption {\n value: any\n label: string\n children?: DropdownOption[]\n}\n\ntype OptionId = string\nexport interface FlyoutOption {\n /**\n * @since 10.19.0\n */\n id: OptionId\n /**\n * @since 10.19.0\n */\n parentId: OptionId | typeof rootId\n /**\n * @since 10.19.0\n */\n origin: DropdownOption\n /**\n * @since 10.19.0\n */\n children?: FlyoutOption[]\n}\n\nexport type FlyoutOptionId = FlyoutOption['id'] | typeof rootId\n\nexport interface FlyoutCaptionProps\n extends React.HTMLAttributes<HTMLDivElement> {\n option: DropdownOption\n highlighted: boolean\n expanded?: boolean\n optionRenderer: (option: DropdownOption) => React.ReactNode\n}\n\nexport interface FlyoutListProps extends React.HTMLAttributes<HTMLDivElement> {\n options: FlyoutOption[]\n overlayRef: Ref<HTMLDivElement>\n placement: Placement\n referenceEl: HTMLElement | null\n offset?: number\n}\n\nexport interface DropdownFlyoutProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children' | 'onClick'> {\n children?: React.ReactNode | React.FunctionComponent<{ isOpen?: boolean }>\n /**\n * @since 10.19.0\n */\n disabled?: DropdownProps['disabled']\n\n /**\n * The text of the button.\n * @since 10.19.0\n */\n label?: DropdownProps['label']\n /**\n * @since 10.19.0\n */\n loading?: DropdownProps['loading']\n\n /**\n * The icon of the button.\n * @since 10.19.0\n */\n icon?: DropdownProps['icon']\n\n /**\n * Data of the dropdown options - `Option[]`\n * ```\n * type Option = { label: string; children?: Option[] }\n * ```\n * @since 10.19.0\n */\n options: DropdownOption[]\n\n /**\n * Callback for click on dropdown option\n * ```\n * (option: Option) => void\n * ```\n * @since 10.19.0\n */\n onClick?: (option: DropdownOption) => void\n\n /**\n * Render prop to specify custom dropdown option content\n * ```\n * (option: Option) => ReactNode\n * ```\n * @since 10.19.0\n */\n optionRenderer?: (option: DropdownOption) => React.ReactNode\n\n /**\n * @default 'right-bottom'\n * @since 10.19.0\n */\n placement?: OverlayProps['placement']\n\n /**\n * The button size\n * @default 'md'\n * @since 10.19.0\n */\n size?: DropdownProps['size']\n\n /**\n * @default 'secondary'\n * @since 10.19.0\n */\n variant?: DropdownProps['variant']\n}\n\nexport interface FlyoutItemProps extends Props {\n option: FlyoutOption\n}\n"],"mappings":"AAKA,OAAO,IAAMA,MAAM,GAAG,SAAS"}
|
|
1
|
+
{"version":3,"file":"DropdownFlyout.types.js","names":["rootId"],"sources":["../../src/DropdownFlyout/DropdownFlyout.types.ts"],"sourcesContent":["import type { Ref } from 'react'\nimport type { DropdownProps } from '../Dropdown/Dropdown.types'\nimport type { OverlayProps } from '../Overlay/Overlay'\nimport type { Placement, Props } from '../_utils/types'\n\nexport const rootId = 'ROOT_ID'\n\nexport type Action =\n | { type: 'highlight'; option: FlyoutOption }\n | { type: 'expand'; option: FlyoutOption }\n | { type: 'collapse'; option: FlyoutOption }\n | { type: 'close' }\n | { type: 'open' }\n | { type: 'setMouseOver'; isMouseOver: boolean }\n | { type: 'setFocused'; isFocused: boolean }\n | { type: 'setKeyboardNavigated' }\n | { type: 'updateOptions'; options: FlyoutOption[] }\n\ntype ExpandedItem = FlyoutOptionId\n\nexport type State = {\n highlighted: FlyoutOption\n expanded: ExpandedItem[]\n options: FlyoutOption[]\n isMouseOver: boolean\n isFocused: boolean\n isOpen: boolean\n keyboardNavigated: boolean\n}\n\nexport interface DropdownOption {\n value: any\n label: string\n children?: DropdownOption[]\n}\n\ntype OptionId = string\nexport interface FlyoutOption {\n /**\n * @since 10.19.0\n */\n id: OptionId\n /**\n * @since 10.19.0\n */\n parentId: OptionId | typeof rootId\n /**\n * @since 10.19.0\n */\n origin: DropdownOption\n /**\n * @since 10.19.0\n */\n children?: FlyoutOption[]\n}\n\nexport type FlyoutOptionId = FlyoutOption['id'] | typeof rootId\n\nexport interface FlyoutCaptionProps\n extends React.HTMLAttributes<HTMLDivElement> {\n option: DropdownOption\n focusVisible?: boolean\n highlighted: boolean\n expanded?: boolean\n optionRenderer: (option: DropdownOption) => React.ReactNode\n}\n\nexport interface FlyoutListProps extends React.HTMLAttributes<HTMLDivElement> {\n options: FlyoutOption[]\n overlayRef: Ref<HTMLDivElement>\n placement: Placement\n referenceEl: HTMLElement | null\n offset?: number\n}\n\nexport interface DropdownFlyoutProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children' | 'onClick'> {\n children?: React.ReactNode | React.FunctionComponent<{ isOpen?: boolean }>\n /**\n * @since 10.19.0\n */\n disabled?: DropdownProps['disabled']\n\n /**\n * The text of the button.\n * @since 10.19.0\n */\n label?: DropdownProps['label']\n /**\n * @since 10.19.0\n */\n loading?: DropdownProps['loading']\n\n /**\n * The icon of the button.\n * @since 10.19.0\n */\n icon?: DropdownProps['icon']\n\n /**\n * Data of the dropdown options - `Option[]`\n * ```\n * type Option = { label: string; children?: Option[] }\n * ```\n * @since 10.19.0\n */\n options: DropdownOption[]\n\n /**\n * Callback for click on dropdown option\n * ```\n * (option: Option) => void\n * ```\n * @since 10.19.0\n */\n onClick?: (option: DropdownOption) => void\n\n /**\n * Render prop to specify custom dropdown option content\n * ```\n * (option: Option) => ReactNode\n * ```\n * @since 10.19.0\n */\n optionRenderer?: (option: DropdownOption) => React.ReactNode\n\n /**\n * @default 'right-bottom'\n * @since 10.19.0\n */\n placement?: OverlayProps['placement']\n\n /**\n * The button size\n * @default 'md'\n * @since 10.19.0\n */\n size?: DropdownProps['size']\n\n /**\n * @default 'secondary'\n * @since 10.19.0\n */\n variant?: DropdownProps['variant']\n}\n\nexport interface FlyoutItemProps extends Props {\n option: FlyoutOption\n}\n"],"mappings":"AAKA,OAAO,IAAMA,MAAM,GAAG,SAAS"}
|
|
@@ -95,7 +95,7 @@ export function MultipleErrors(props) {
|
|
|
95
95
|
// make error banner accessible as a styled-components selector
|
|
96
96
|
export var DropzoneErrorBanner = /*#__PURE__*/styled(DropzoneErrorBannerBase).withConfig({
|
|
97
97
|
displayName: "DropzoneErrorBanner",
|
|
98
|
-
componentId: "core-
|
|
98
|
+
componentId: "core-12_51_0__sc-l4fojb-0"
|
|
99
99
|
})([""]);
|
|
100
100
|
function DropzoneContainer(_ref2) {
|
|
101
101
|
var active = _ref2.active,
|
|
@@ -9,15 +9,15 @@ import { colors } from '../_styles/colors';
|
|
|
9
9
|
import { spacing } from '../_styles/spacing';
|
|
10
10
|
export var StyledErrorBanner = /*#__PURE__*/styled(ErrorBannerBase).withConfig({
|
|
11
11
|
displayName: "StyledErrorBanner",
|
|
12
|
-
componentId: "core-
|
|
12
|
+
componentId: "core-12_51_0__sc-by95hy-0"
|
|
13
13
|
})(["margin-top:", "px;flex-shrink:0;"], spacing.lg);
|
|
14
14
|
export var StyledErrorBannerDetails = /*#__PURE__*/styled.ul.withConfig({
|
|
15
15
|
displayName: "StyledErrorBannerDetails",
|
|
16
|
-
componentId: "core-
|
|
16
|
+
componentId: "core-12_51_0__sc-by95hy-1"
|
|
17
17
|
})(["margin:", "px;padding:0;list-style-position:inside;list-style-type:disc;"], spacing.xs);
|
|
18
18
|
export var StyledDropzoneIcon = /*#__PURE__*/styled.div.withConfig({
|
|
19
19
|
displayName: "StyledDropzoneIcon",
|
|
20
|
-
componentId: "core-
|
|
20
|
+
componentId: "core-12_51_0__sc-by95hy-2"
|
|
21
21
|
})(["display:flex;justify-content:center;align-items:center;height:64px;color:", ";margin-bottom:", "px;transition:all 250ms ease-out;", " svg{width:auto;height:100%;}"], colors.gray45, spacing.lg, function (_ref) {
|
|
22
22
|
var $disabled = _ref.$disabled;
|
|
23
23
|
return $disabled && css(["height:72px;margin-bottom:", "px;"], spacing.sm);
|
|
@@ -26,7 +26,7 @@ var activeDropzone = /*#__PURE__*/css(["outline:none;border:2px dashed ", ";back
|
|
|
26
26
|
var disabledDropzone = /*#__PURE__*/css(["color:", ";border:2px dashed ", ";background-color:", ";cursor:not-allowed;& ", "{color:", ";transform:none;}"], colors.gray70, colors.gray85, colors.gray98, StyledDropzoneIcon, colors.gray85);
|
|
27
27
|
export var StyledDropzoneContainer = /*#__PURE__*/styled.div.withConfig({
|
|
28
28
|
displayName: "StyledDropzoneContainer",
|
|
29
|
-
componentId: "core-
|
|
29
|
+
componentId: "core-12_51_0__sc-by95hy-3"
|
|
30
30
|
})(["", " display:inline-flex;justify-content:center;align-items:center;box-sizing:border-box;width:100%;height:100%;min-height:92px;padding:", "px;color:", ";border:2px dashed ", ";background-color:", ";border-radius:", "px;text-align:center;letter-spacing:0.25px;transition:all 250ms ease-out;cursor:grab;", " ", " ", " ", ""], getTypographyIntent('body'), spacing.lg, colors.gray40, colors.gray70, colors.gray96, borderRadius.md, function (_ref2) {
|
|
31
31
|
var $disabled = _ref2.$disabled;
|
|
32
32
|
return !$disabled && css(["&:hover{", "}"], activeDropzone);
|
|
@@ -43,25 +43,25 @@ export var StyledDropzoneContainer = /*#__PURE__*/styled.div.withConfig({
|
|
|
43
43
|
});
|
|
44
44
|
export var StyledDropzoneMessage = /*#__PURE__*/styled.div.withConfig({
|
|
45
45
|
displayName: "StyledDropzoneMessage",
|
|
46
|
-
componentId: "core-
|
|
46
|
+
componentId: "core-12_51_0__sc-by95hy-4"
|
|
47
47
|
})(["user-select:none;"]);
|
|
48
48
|
export var StyledUploadButton = /*#__PURE__*/styled(Button).withConfig({
|
|
49
49
|
displayName: "StyledUploadButton",
|
|
50
|
-
componentId: "core-
|
|
50
|
+
componentId: "core-12_51_0__sc-by95hy-5"
|
|
51
51
|
})(["&&{display:block;margin-left:auto;margin-right:auto;margin-bottom:", "px;}"], spacing.sm);
|
|
52
52
|
export var StyledDropzoneCaption = /*#__PURE__*/styled.span.withConfig({
|
|
53
53
|
displayName: "StyledDropzoneCaption",
|
|
54
|
-
componentId: "core-
|
|
54
|
+
componentId: "core-12_51_0__sc-by95hy-6"
|
|
55
55
|
})(["color:", ";"], function (_ref6) {
|
|
56
56
|
var $error = _ref6.$error;
|
|
57
57
|
return $error && colors.gray15;
|
|
58
58
|
});
|
|
59
59
|
export var StyledDropzoneWrapper = /*#__PURE__*/styled(Flex).withConfig({
|
|
60
60
|
displayName: "StyledDropzoneWrapper",
|
|
61
|
-
componentId: "core-
|
|
61
|
+
componentId: "core-12_51_0__sc-by95hy-7"
|
|
62
62
|
})(["height:100%;"]);
|
|
63
63
|
export var StyledDropzoneFocusDetector = /*#__PURE__*/styled(Box).withConfig({
|
|
64
64
|
displayName: "StyledDropzoneFocusDetector",
|
|
65
|
-
componentId: "core-
|
|
65
|
+
componentId: "core-12_51_0__sc-by95hy-8"
|
|
66
66
|
})(["height:100%;"]);
|
|
67
67
|
//# sourceMappingURL=Dropzone.styles.js.map
|
|
@@ -5,27 +5,27 @@ import { spacing } from '../_styles/spacing';
|
|
|
5
5
|
var emptyStateWidth = 312;
|
|
6
6
|
export var StyledSvg = /*#__PURE__*/styled.svg.withConfig({
|
|
7
7
|
displayName: "StyledSvg",
|
|
8
|
-
componentId: "core-
|
|
8
|
+
componentId: "core-12_51_0__sc-1xaoo8n-0"
|
|
9
9
|
})(["width:200px;height:200px;"]);
|
|
10
10
|
export var StyledImage = /*#__PURE__*/styled.div.withConfig({
|
|
11
11
|
displayName: "StyledImage",
|
|
12
|
-
componentId: "core-
|
|
12
|
+
componentId: "core-12_51_0__sc-1xaoo8n-1"
|
|
13
13
|
})([""]);
|
|
14
14
|
export var StyledTitle = /*#__PURE__*/styled.p.withConfig({
|
|
15
15
|
displayName: "StyledTitle",
|
|
16
|
-
componentId: "core-
|
|
16
|
+
componentId: "core-12_51_0__sc-1xaoo8n-2"
|
|
17
17
|
})(["color:", ";max-width:", "px;width:100%;margin:0;", ""], colors.gray15, emptyStateWidth, getTypographyIntent('h2'));
|
|
18
18
|
export var StyledDescription = /*#__PURE__*/styled.p.withConfig({
|
|
19
19
|
displayName: "StyledDescription",
|
|
20
|
-
componentId: "core-
|
|
20
|
+
componentId: "core-12_51_0__sc-1xaoo8n-3"
|
|
21
21
|
})(["margin-top:", "px;margin-bottom:0;color:", ";max-width:", "px;width:100%;", ""], spacing.lg, colors.gray45, emptyStateWidth, getTypographyIntent('body'));
|
|
22
22
|
export var StyledActions = /*#__PURE__*/styled.div.withConfig({
|
|
23
23
|
displayName: "StyledActions",
|
|
24
|
-
componentId: "core-
|
|
24
|
+
componentId: "core-12_51_0__sc-1xaoo8n-4"
|
|
25
25
|
})(["margin-top:", "px;"], spacing.xl);
|
|
26
26
|
export var StyledEmptyState = /*#__PURE__*/styled.div.withConfig({
|
|
27
27
|
displayName: "StyledEmptyState",
|
|
28
|
-
componentId: "core-
|
|
28
|
+
componentId: "core-12_51_0__sc-1xaoo8n-5"
|
|
29
29
|
})(["display:flex;justify-content:center;align-items:", ";gap:", "px;flex-direction:", ";margin-top:", "px;margin-bottom:", "px;", "{> img{max-width:200px;}}", " ", "}"], function (_ref) {
|
|
30
30
|
var $isHorizontal = _ref.$isHorizontal;
|
|
31
31
|
return $isHorizontal ? 'flex-start' : 'center';
|
|
@@ -2,14 +2,14 @@ import styled from 'styled-components';
|
|
|
2
2
|
import { getSmallIconBodyTextRules, StyledP } from '../Semantic/Semantic.styles';
|
|
3
3
|
export var StyledField = /*#__PURE__*/styled.div.withConfig({
|
|
4
4
|
displayName: "StyledField",
|
|
5
|
-
componentId: "core-
|
|
5
|
+
componentId: "core-12_51_0__sc-1q3pe6s-0"
|
|
6
6
|
})(["> ", "{", "}"], StyledP, getSmallIconBodyTextRules);
|
|
7
7
|
export var StyledFieldHeader = /*#__PURE__*/styled.div.withConfig({
|
|
8
8
|
displayName: "StyledFieldHeader",
|
|
9
|
-
componentId: "core-
|
|
9
|
+
componentId: "core-12_51_0__sc-1q3pe6s-1"
|
|
10
10
|
})(["", " > ", "{", "}"], getSmallIconBodyTextRules, StyledP, getSmallIconBodyTextRules);
|
|
11
11
|
export var StyledFieldFooter = /*#__PURE__*/styled.div.withConfig({
|
|
12
12
|
displayName: "StyledFieldFooter",
|
|
13
|
-
componentId: "core-
|
|
13
|
+
componentId: "core-12_51_0__sc-1q3pe6s-2"
|
|
14
14
|
})(["> ", "{", "}"], StyledP, getSmallIconBodyTextRules);
|
|
15
15
|
//# sourceMappingURL=Field.styles.js.map
|
|
@@ -3,14 +3,14 @@ import { LinkButton } from '../Button/Button';
|
|
|
3
3
|
import { spacing } from '../_styles/spacing';
|
|
4
4
|
export var StyledFileListDownloadAll = /*#__PURE__*/styled(LinkButton).withConfig({
|
|
5
5
|
displayName: "StyledFileListDownloadAll",
|
|
6
|
-
componentId: "core-
|
|
6
|
+
componentId: "core-12_51_0__sc-7gltjc-0"
|
|
7
7
|
})(["margin-bottom:", "px;"], spacing.xs);
|
|
8
8
|
export var StyledFileListItem = /*#__PURE__*/styled.li.withConfig({
|
|
9
9
|
displayName: "StyledFileListItem",
|
|
10
|
-
componentId: "core-
|
|
10
|
+
componentId: "core-12_51_0__sc-7gltjc-1"
|
|
11
11
|
})(["display:flex;align-items:center;margin-bottom:", "px;word-break:break-word;&:last-child{margin-bottom:0;}"], spacing.xs);
|
|
12
12
|
export var StyledFileListItemDownloadIcon = /*#__PURE__*/styled(LinkButton).withConfig({
|
|
13
13
|
displayName: "StyledFileListItemDownloadIcon",
|
|
14
|
-
componentId: "core-
|
|
14
|
+
componentId: "core-12_51_0__sc-7gltjc-2"
|
|
15
15
|
})(["margin-left:", "px;align-self:flex-start;"], spacing.sm);
|
|
16
16
|
//# sourceMappingURL=FileList.styles.js.map
|