@primer/components 0.0.0-20219922627 → 0.0.0-2022530201059
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 +105 -492
- package/README.md +16 -16
- package/codemods/lib/modifyProps.js +7 -9
- package/codemods/lib/prettify.js +1 -1
- package/codemods/lib/replaceImportSource.js +5 -5
- package/dist/browser.esm.js +801 -1115
- package/dist/browser.esm.js.map +1 -1
- package/dist/browser.umd.js +815 -1134
- package/dist/browser.umd.js.map +1 -1
- package/index.d.ts +940 -0
- package/lib/AvatarPair.js +5 -6
- package/lib/AvatarStack.js +10 -10
- package/lib/BaseStyles.js +19 -18
- package/lib/BorderBox.js +5 -4
- package/lib/Box.js +2 -2
- package/lib/BranchName.js +1 -1
- package/lib/{Breadcrumbs.js → Breadcrumb.js} +23 -33
- package/lib/Button/Button.js +3 -3
- package/lib/Button/ButtonClose.js +4 -4
- package/lib/Button/ButtonDanger.js +2 -2
- package/lib/Button/ButtonInvisible.js +3 -3
- package/lib/Button/ButtonOutline.js +2 -2
- package/lib/Button/ButtonPrimary.js +2 -2
- package/lib/Button/ButtonTableList.js +1 -1
- package/lib/CircleBadge.js +1 -1
- package/lib/CircleOcticon.js +7 -9
- package/lib/CounterLabel.js +2 -2
- package/lib/Dialog.js +14 -13
- package/lib/Dropdown.js +2 -2
- package/lib/DropdownStyles.js +6 -6
- package/lib/FilterList.js +1 -1
- package/lib/Flash.js +1 -1
- package/lib/Flex.js +0 -3
- package/lib/Grid.js +3 -4
- package/lib/Header.js +2 -3
- package/lib/Label.js +4 -4
- package/lib/Link.js +12 -1
- package/lib/Overlay.js +35 -120
- package/lib/Pagehead.js +1 -1
- package/lib/Pagination/Pagination.js +2 -3
- package/lib/Popover.js +3 -3
- package/lib/Portal/Portal.js +12 -20
- package/lib/Position.js +27 -46
- package/lib/ProgressBar.js +1 -1
- package/lib/SelectMenu/SelectMenu.js +4 -4
- package/lib/SelectMenu/SelectMenuContext.js +1 -1
- package/lib/SelectMenu/SelectMenuDivider.js +3 -3
- package/lib/SelectMenu/SelectMenuFilter.js +6 -6
- package/lib/SelectMenu/SelectMenuFooter.js +3 -3
- package/lib/SelectMenu/SelectMenuHeader.js +2 -2
- package/lib/SelectMenu/SelectMenuItem.js +4 -4
- package/lib/SelectMenu/SelectMenuList.js +3 -3
- package/lib/SelectMenu/SelectMenuLoadingAnimation.js +15 -4
- package/lib/SelectMenu/SelectMenuModal.js +7 -7
- package/lib/SelectMenu/SelectMenuTab.js +3 -3
- package/lib/SelectMenu/SelectMenuTabPanel.js +3 -3
- package/lib/SelectMenu/SelectMenuTabs.js +2 -2
- package/lib/SelectMenu/hooks/useKeyboardNav.js +0 -2
- package/lib/SideNav.js +12 -20
- package/lib/StateLabel.js +4 -4
- package/lib/SubNav.js +3 -5
- package/lib/TabNav.js +3 -3
- package/lib/TextInput.js +19 -24
- package/lib/ThemeProvider.js +15 -32
- package/lib/Timeline.js +29 -24
- package/lib/Tooltip.js +1 -2
- package/lib/UnderlineNav.js +2 -2
- package/lib/behaviors/anchoredPosition.js +9 -17
- package/lib/behaviors/focusTrap.js +14 -32
- package/lib/behaviors/focusZone.js +148 -218
- package/lib/constants.js +2 -3
- package/lib/hooks/index.js +1 -9
- package/lib/hooks/useAnchoredPosition.js +4 -11
- package/lib/hooks/useDialog.js +1 -1
- package/lib/hooks/useFocusTrap.js +8 -26
- package/lib/hooks/useFocusZone.js +7 -7
- package/lib/hooks/useMouseIntent.js +58 -0
- package/lib/hooks/useOnEscapePress.js +10 -53
- package/lib/hooks/useOnOutsideClick.js +35 -62
- package/lib/hooks/useOpenAndCloseFocus.js +1 -1
- package/lib/hooks/useOverlay.js +17 -5
- package/lib/hooks/useSafeTimeout.js +0 -1
- package/lib/index.js +12 -76
- package/lib/polyfills/eventListenerSignal.js +1 -6
- package/lib/stories/Button.stories.js +114 -0
- package/lib/stories/Overlay.stories.js +102 -0
- package/lib/stories/Portal.stories.js +108 -0
- package/lib/stories/ThemeProvider.stories.js +95 -0
- package/lib/stories/useAnchoredPosition.stories.js +349 -0
- package/lib/stories/useFocusTrap.stories.js +278 -0
- package/lib/stories/useFocusZone.stories.js +490 -0
- package/lib/theme-preval.js +2057 -5148
- package/lib/utils/deprecate.js +2 -3
- package/lib/utils/isNumeric.js +0 -1
- package/lib/utils/iterateFocusableElements.js +1 -1
- package/lib/utils/test-deprecations.js +0 -1
- package/lib/utils/test-matchers.js +12 -3
- package/lib/utils/testing.js +4 -4
- package/lib/utils/theme.js +1 -1
- package/lib/utils/uniqueId.js +0 -1
- package/lib-esm/AvatarPair.js +5 -6
- package/lib-esm/AvatarStack.js +11 -11
- package/lib-esm/BaseStyles.js +16 -16
- package/lib-esm/BorderBox.js +3 -5
- package/lib-esm/Box.js +2 -2
- package/lib-esm/BranchName.js +1 -1
- package/lib-esm/{Breadcrumbs.js → Breadcrumb.js} +22 -32
- package/lib-esm/Button/Button.js +1 -1
- package/lib-esm/Button/ButtonClose.js +2 -2
- package/lib-esm/Button/ButtonInvisible.js +1 -1
- package/lib-esm/Button/ButtonTableList.js +1 -1
- package/lib-esm/CircleBadge.js +1 -1
- package/lib-esm/CircleOcticon.js +6 -9
- package/lib-esm/CounterLabel.js +2 -2
- package/lib-esm/Dialog.js +12 -10
- package/lib-esm/Dropdown.js +2 -2
- package/lib-esm/DropdownStyles.js +6 -6
- package/lib-esm/FilterList.js +1 -1
- package/lib-esm/Flash.js +1 -1
- package/lib-esm/Flex.js +0 -4
- package/lib-esm/Grid.js +2 -5
- package/lib-esm/Header.js +0 -1
- package/lib-esm/Label.js +2 -2
- package/lib-esm/Link.js +12 -1
- package/lib-esm/Overlay.js +37 -115
- package/lib-esm/Pagehead.js +1 -1
- package/lib-esm/Pagination/Pagination.js +2 -3
- package/lib-esm/Popover.js +3 -3
- package/lib-esm/Portal/Portal.js +12 -19
- package/lib-esm/Portal/index.js +1 -1
- package/lib-esm/Position.js +20 -45
- package/lib-esm/ProgressBar.js +1 -1
- package/lib-esm/SelectMenu/SelectMenu.js +3 -3
- package/lib-esm/SelectMenu/SelectMenuContext.js +1 -1
- package/lib-esm/SelectMenu/SelectMenuDivider.js +1 -1
- package/lib-esm/SelectMenu/SelectMenuFilter.js +4 -4
- package/lib-esm/SelectMenu/SelectMenuFooter.js +1 -1
- package/lib-esm/SelectMenu/SelectMenuHeader.js +2 -2
- package/lib-esm/SelectMenu/SelectMenuItem.js +2 -2
- package/lib-esm/SelectMenu/SelectMenuList.js +1 -1
- package/lib-esm/SelectMenu/SelectMenuLoadingAnimation.js +10 -5
- package/lib-esm/SelectMenu/SelectMenuModal.js +5 -5
- package/lib-esm/SelectMenu/SelectMenuTab.js +1 -1
- package/lib-esm/SelectMenu/SelectMenuTabPanel.js +1 -1
- package/lib-esm/SelectMenu/hooks/useKeyboardNav.js +0 -2
- package/lib-esm/SideNav.js +7 -16
- package/lib-esm/StateLabel.js +4 -4
- package/lib-esm/SubNav.js +4 -7
- package/lib-esm/TabNav.js +4 -5
- package/lib-esm/TextInput.js +17 -23
- package/lib-esm/ThemeProvider.js +16 -31
- package/lib-esm/Timeline.js +24 -19
- package/lib-esm/Tooltip.js +1 -2
- package/lib-esm/UnderlineNav.js +3 -4
- package/lib-esm/behaviors/anchoredPosition.js +9 -17
- package/lib-esm/behaviors/focusTrap.js +14 -32
- package/lib-esm/behaviors/focusZone.js +148 -213
- package/lib-esm/constants.js +1 -2
- package/lib-esm/hooks/index.js +1 -2
- package/lib-esm/hooks/useAnchoredPosition.js +5 -10
- package/lib-esm/hooks/useDialog.js +1 -1
- package/lib-esm/hooks/useFocusTrap.js +8 -25
- package/lib-esm/hooks/useFocusZone.js +5 -5
- package/lib-esm/hooks/useMouseIntent.js +50 -0
- package/lib-esm/hooks/useOnEscapePress.js +10 -53
- package/lib-esm/hooks/useOnOutsideClick.js +37 -62
- package/lib-esm/hooks/useOpenAndCloseFocus.js +1 -1
- package/lib-esm/hooks/useOverlay.js +16 -5
- package/lib-esm/hooks/useSafeTimeout.js +0 -1
- package/lib-esm/index.js +10 -19
- package/lib-esm/polyfills/eventListenerSignal.js +1 -6
- package/lib-esm/stories/Button.stories.js +79 -0
- package/lib-esm/stories/Overlay.stories.js +80 -0
- package/lib-esm/stories/Portal.stories.js +72 -0
- package/lib-esm/stories/ThemeProvider.stories.js +76 -0
- package/lib-esm/stories/useAnchoredPosition.stories.js +311 -0
- package/lib-esm/stories/useFocusTrap.stories.js +234 -0
- package/lib-esm/stories/useFocusZone.stories.js +445 -0
- package/lib-esm/theme-preval.js +2057 -5148
- package/lib-esm/utils/deprecate.js +2 -3
- package/lib-esm/utils/isNumeric.js +0 -1
- package/lib-esm/utils/iterateFocusableElements.js +1 -1
- package/lib-esm/utils/test-deprecations.js +1 -1
- package/lib-esm/utils/test-matchers.js +11 -3
- package/lib-esm/utils/testing.js +6 -6
- package/lib-esm/utils/theme.js +1 -1
- package/lib-esm/utils/types.js +0 -1
- package/lib-esm/utils/uniqueId.js +0 -1
- package/package.json +95 -103
- package/codemods/__tests__/deprecateUtilityComponents.js +0 -200
- package/codemods/__tests__/removeSystemProps.js +0 -225
- package/codemods/deprecateUtilityComponents.js +0 -111
- package/codemods/removeSystemProps.js +0 -312
- package/lib/ActionList/Divider.d.ts +0 -9
- package/lib/ActionList/Divider.js +0 -40
- package/lib/ActionList/Group.d.ts +0 -28
- package/lib/ActionList/Group.js +0 -35
- package/lib/ActionList/Header.d.ts +0 -29
- package/lib/ActionList/Header.js +0 -51
- package/lib/ActionList/Item.d.ts +0 -92
- package/lib/ActionList/Item.js +0 -288
- package/lib/ActionList/List.d.ts +0 -87
- package/lib/ActionList/List.js +0 -199
- package/lib/ActionList/index.d.ts +0 -17
- package/lib/ActionList/index.js +0 -29
- package/lib/ActionMenu.d.ts +0 -40
- package/lib/ActionMenu.js +0 -103
- package/lib/AnchoredOverlay/AnchoredOverlay.d.ts +0 -61
- package/lib/AnchoredOverlay/AnchoredOverlay.js +0 -116
- package/lib/AnchoredOverlay/index.d.ts +0 -2
- package/lib/AnchoredOverlay/index.js +0 -13
- package/lib/Avatar.d.ts +0 -15
- package/lib/AvatarPair.d.ts +0 -8
- package/lib/AvatarStack.d.ts +0 -8
- package/lib/BaseStyles.d.ts +0 -14
- package/lib/BorderBox.d.ts +0 -7
- package/lib/Box.d.ts +0 -6
- package/lib/BranchName.d.ts +0 -6
- package/lib/Breadcrumbs.d.ts +0 -40
- package/lib/Button/Button.d.ts +0 -284
- package/lib/Button/ButtonBase.d.ts +0 -12
- package/lib/Button/ButtonClose.d.ts +0 -321
- package/lib/Button/ButtonDanger.d.ts +0 -284
- package/lib/Button/ButtonGroup.d.ts +0 -4
- package/lib/Button/ButtonInvisible.d.ts +0 -284
- package/lib/Button/ButtonOutline.d.ts +0 -284
- package/lib/Button/ButtonPrimary.d.ts +0 -284
- package/lib/Button/ButtonStyles.d.ts +0 -2
- package/lib/Button/ButtonTableList.d.ts +0 -6
- package/lib/Button/index.d.ts +0 -16
- package/lib/Caret.d.ts +0 -21
- package/lib/CircleBadge.d.ts +0 -25
- package/lib/CircleOcticon.d.ts +0 -391
- package/lib/CounterLabel.d.ts +0 -8
- package/lib/DatePicker/DatePicker.d.ts +0 -35
- package/lib/DatePicker/DatePicker.js +0 -37
- package/lib/DatePicker/DatePickerPanel.d.ts +0 -0
- package/lib/DatePicker/DatePickerPanel.js +0 -1
- package/lib/DatePicker/Day.d.ts +0 -12
- package/lib/DatePicker/Day.js +0 -44
- package/lib/DatePicker/Month.d.ts +0 -10
- package/lib/DatePicker/Month.js +0 -28
- package/lib/DatePicker/index.d.ts +0 -2
- package/lib/DatePicker/index.js +0 -13
- package/lib/Details.d.ts +0 -6
- package/lib/Dialog/ConfirmationDialog.d.ts +0 -44
- package/lib/Dialog/ConfirmationDialog.js +0 -191
- package/lib/Dialog/Dialog.d.ts +0 -167
- package/lib/Dialog/Dialog.js +0 -304
- package/lib/Dialog.d.ts +0 -406
- package/lib/Dropdown.d.ts +0 -1262
- package/lib/DropdownMenu/DropdownButton.d.ts +0 -323
- package/lib/DropdownMenu/DropdownButton.js +0 -31
- package/lib/DropdownMenu/DropdownMenu.d.ts +0 -43
- package/lib/DropdownMenu/DropdownMenu.js +0 -94
- package/lib/DropdownMenu/index.d.ts +0 -4
- package/lib/DropdownMenu/index.js +0 -21
- package/lib/DropdownStyles.d.ts +0 -3
- package/lib/FilterList.d.ts +0 -321
- package/lib/FilteredActionList/FilteredActionList.d.ts +0 -16
- package/lib/FilteredActionList/FilteredActionList.js +0 -163
- package/lib/FilteredActionList/index.d.ts +0 -2
- package/lib/FilteredActionList/index.js +0 -13
- package/lib/FilteredSearch.d.ts +0 -6
- package/lib/Flash.d.ts +0 -9
- package/lib/Flex.d.ts +0 -7
- package/lib/FormGroup.d.ts +0 -12
- package/lib/Grid.d.ts +0 -7
- package/lib/Header.d.ts +0 -24
- package/lib/Heading.d.ts +0 -6
- package/lib/Label.d.ts +0 -11
- package/lib/LabelGroup.d.ts +0 -6
- package/lib/Link.d.ts +0 -10
- package/lib/Overlay.d.ts +0 -62
- package/lib/Pagehead.d.ts +0 -6
- package/lib/Pagination/Pagination.d.ts +0 -24
- package/lib/Pagination/index.d.ts +0 -3
- package/lib/Pagination/model.d.ts +0 -26
- package/lib/PointerBox.d.ts +0 -11
- package/lib/Popover.d.ts +0 -21
- package/lib/Portal/Portal.d.ts +0 -25
- package/lib/Portal/index.d.ts +0 -4
- package/lib/Position.d.ts +0 -34
- package/lib/ProgressBar.d.ts +0 -21
- package/lib/SelectMenu/SelectMenu.d.ts +0 -1832
- package/lib/SelectMenu/SelectMenuContext.d.ts +0 -8
- package/lib/SelectMenu/SelectMenuDivider.d.ts +0 -6
- package/lib/SelectMenu/SelectMenuFilter.d.ts +0 -9
- package/lib/SelectMenu/SelectMenuFooter.d.ts +0 -6
- package/lib/SelectMenu/SelectMenuHeader.d.ts +0 -11
- package/lib/SelectMenu/SelectMenuItem.d.ts +0 -15
- package/lib/SelectMenu/SelectMenuList.d.ts +0 -6
- package/lib/SelectMenu/SelectMenuLoadingAnimation.d.ts +0 -7
- package/lib/SelectMenu/SelectMenuModal.d.ts +0 -15
- package/lib/SelectMenu/SelectMenuTab.d.ts +0 -14
- package/lib/SelectMenu/SelectMenuTabPanel.d.ts +0 -13
- package/lib/SelectMenu/SelectMenuTabs.d.ts +0 -11
- package/lib/SelectMenu/hooks/useKeyboardNav.d.ts +0 -2
- package/lib/SelectMenu/index.d.ts +0 -2
- package/lib/SelectPanel/SelectPanel.d.ts +0 -25
- package/lib/SelectPanel/SelectPanel.js +0 -147
- package/lib/SelectPanel/index.d.ts +0 -2
- package/lib/SelectPanel/index.js +0 -13
- package/lib/SideNav.d.ts +0 -31
- package/lib/Spinner.d.ts +0 -17
- package/lib/Spinner.js +0 -60
- package/lib/StateLabel.d.ts +0 -16
- package/lib/StyledOcticon.d.ts +0 -12
- package/lib/SubNav.d.ts +0 -32
- package/lib/TabNav.d.ts +0 -20
- package/lib/Text.d.ts +0 -6
- package/lib/TextInput.d.ts +0 -22
- package/lib/ThemeProvider.d.ts +0 -26
- package/lib/Timeline.d.ts +0 -407
- package/lib/Tooltip.d.ts +0 -18
- package/lib/Truncate.d.ts +0 -11
- package/lib/UnderlineNav.d.ts +0 -25
- package/lib/behaviors/anchoredPosition.d.ts +0 -89
- package/lib/behaviors/focusTrap.d.ts +0 -12
- package/lib/behaviors/focusZone.d.ts +0 -137
- package/lib/constants.d.ts +0 -20
- package/lib/hooks/index.d.ts +0 -11
- package/lib/hooks/useAnchoredPosition.d.ts +0 -20
- package/lib/hooks/useCombinedRefs.d.ts +0 -10
- package/lib/hooks/useCombinedRefs.js +0 -49
- package/lib/hooks/useDetails.d.ts +0 -17
- package/lib/hooks/useDialog.d.ts +0 -16
- package/lib/hooks/useFocusTrap.d.ts +0 -32
- package/lib/hooks/useFocusZone.d.ts +0 -23
- package/lib/hooks/useOnEscapePress.d.ts +0 -23
- package/lib/hooks/useOnOutsideClick.d.ts +0 -8
- package/lib/hooks/useOpenAndCloseFocus.d.ts +0 -7
- package/lib/hooks/useOverlay.d.ts +0 -14
- package/lib/hooks/useProvidedRefOrCreate.d.ts +0 -10
- package/lib/hooks/useProvidedStateOrCreate.d.ts +0 -10
- package/lib/hooks/useProvidedStateOrCreate.js +0 -27
- package/lib/hooks/useRenderForcingRef.d.ts +0 -8
- package/lib/hooks/useRenderForcingRef.js +0 -25
- package/lib/hooks/useResizeObserver.d.ts +0 -1
- package/lib/hooks/useResizeObserver.js +0 -20
- package/lib/hooks/useSafeTimeout.d.ts +0 -12
- package/lib/hooks/useScrollFlash.d.ts +0 -6
- package/lib/hooks/useScrollFlash.js +0 -29
- package/lib/index.d.ts +0 -111
- package/lib/polyfills/eventListenerSignal.d.ts +0 -6
- package/lib/sx.d.ts +0 -6
- package/lib/theme-preval.d.ts +0 -49
- package/lib/theme.d.ts +0 -2
- package/lib/utils/deprecate.d.ts +0 -18
- package/lib/utils/isNumeric.d.ts +0 -1
- package/lib/utils/iterateFocusableElements.d.ts +0 -42
- package/lib/utils/ssr.d.ts +0 -1
- package/lib/utils/ssr.js +0 -19
- package/lib/utils/test-deprecations.d.ts +0 -1
- package/lib/utils/test-helpers.d.ts +0 -0
- package/lib/utils/test-helpers.js +0 -9
- package/lib/utils/test-matchers.d.ts +0 -1
- package/lib/utils/testing.d.ts +0 -1028
- package/lib/utils/theme.d.ts +0 -9
- package/lib/utils/types.d.ts +0 -14
- package/lib/utils/uniqueId.d.ts +0 -1
- package/lib/utils/userAgent.d.ts +0 -1
- package/lib-esm/ActionList/Divider.d.ts +0 -9
- package/lib-esm/ActionList/Divider.js +0 -23
- package/lib-esm/ActionList/Group.d.ts +0 -28
- package/lib-esm/ActionList/Group.js +0 -24
- package/lib-esm/ActionList/Header.d.ts +0 -29
- package/lib-esm/ActionList/Header.js +0 -33
- package/lib-esm/ActionList/Item.d.ts +0 -92
- package/lib-esm/ActionList/Item.js +0 -253
- package/lib-esm/ActionList/List.d.ts +0 -87
- package/lib-esm/ActionList/List.js +0 -181
- package/lib-esm/ActionList/index.d.ts +0 -17
- package/lib-esm/ActionList/index.js +0 -18
- package/lib-esm/ActionMenu.d.ts +0 -40
- package/lib-esm/ActionMenu.js +0 -82
- package/lib-esm/AnchoredOverlay/AnchoredOverlay.d.ts +0 -61
- package/lib-esm/AnchoredOverlay/AnchoredOverlay.js +0 -96
- package/lib-esm/AnchoredOverlay/index.d.ts +0 -2
- package/lib-esm/AnchoredOverlay/index.js +0 -1
- package/lib-esm/Avatar.d.ts +0 -15
- package/lib-esm/AvatarPair.d.ts +0 -8
- package/lib-esm/AvatarStack.d.ts +0 -8
- package/lib-esm/BaseStyles.d.ts +0 -14
- package/lib-esm/BorderBox.d.ts +0 -7
- package/lib-esm/Box.d.ts +0 -6
- package/lib-esm/BranchName.d.ts +0 -6
- package/lib-esm/Breadcrumbs.d.ts +0 -40
- package/lib-esm/Button/Button.d.ts +0 -284
- package/lib-esm/Button/ButtonBase.d.ts +0 -12
- package/lib-esm/Button/ButtonClose.d.ts +0 -321
- package/lib-esm/Button/ButtonDanger.d.ts +0 -284
- package/lib-esm/Button/ButtonGroup.d.ts +0 -4
- package/lib-esm/Button/ButtonInvisible.d.ts +0 -284
- package/lib-esm/Button/ButtonOutline.d.ts +0 -284
- package/lib-esm/Button/ButtonPrimary.d.ts +0 -284
- package/lib-esm/Button/ButtonStyles.d.ts +0 -2
- package/lib-esm/Button/ButtonTableList.d.ts +0 -6
- package/lib-esm/Button/index.d.ts +0 -16
- package/lib-esm/Caret.d.ts +0 -21
- package/lib-esm/CircleBadge.d.ts +0 -25
- package/lib-esm/CircleOcticon.d.ts +0 -391
- package/lib-esm/CounterLabel.d.ts +0 -8
- package/lib-esm/DatePicker/DatePicker.d.ts +0 -35
- package/lib-esm/DatePicker/DatePicker.js +0 -24
- package/lib-esm/DatePicker/DatePickerPanel.d.ts +0 -0
- package/lib-esm/DatePicker/DatePickerPanel.js +0 -0
- package/lib-esm/DatePicker/Day.d.ts +0 -12
- package/lib-esm/DatePicker/Day.js +0 -26
- package/lib-esm/DatePicker/Month.d.ts +0 -10
- package/lib-esm/DatePicker/Month.js +0 -13
- package/lib-esm/DatePicker/index.d.ts +0 -2
- package/lib-esm/DatePicker/index.js +0 -1
- package/lib-esm/Details.d.ts +0 -6
- package/lib-esm/Dialog/ConfirmationDialog.d.ts +0 -44
- package/lib-esm/Dialog/ConfirmationDialog.js +0 -169
- package/lib-esm/Dialog/Dialog.d.ts +0 -167
- package/lib-esm/Dialog/Dialog.js +0 -274
- package/lib-esm/Dialog.d.ts +0 -406
- package/lib-esm/Dropdown.d.ts +0 -1262
- package/lib-esm/DropdownMenu/DropdownButton.d.ts +0 -323
- package/lib-esm/DropdownMenu/DropdownButton.js +0 -16
- package/lib-esm/DropdownMenu/DropdownMenu.d.ts +0 -43
- package/lib-esm/DropdownMenu/DropdownMenu.js +0 -77
- package/lib-esm/DropdownMenu/index.d.ts +0 -4
- package/lib-esm/DropdownMenu/index.js +0 -2
- package/lib-esm/DropdownStyles.d.ts +0 -3
- package/lib-esm/FilterList.d.ts +0 -321
- package/lib-esm/FilteredActionList/FilteredActionList.d.ts +0 -16
- package/lib-esm/FilteredActionList/FilteredActionList.js +0 -137
- package/lib-esm/FilteredActionList/index.d.ts +0 -2
- package/lib-esm/FilteredActionList/index.js +0 -1
- package/lib-esm/FilteredSearch.d.ts +0 -6
- package/lib-esm/Flash.d.ts +0 -9
- package/lib-esm/Flex.d.ts +0 -7
- package/lib-esm/FormGroup.d.ts +0 -12
- package/lib-esm/Grid.d.ts +0 -7
- package/lib-esm/Header.d.ts +0 -24
- package/lib-esm/Heading.d.ts +0 -6
- package/lib-esm/Label.d.ts +0 -11
- package/lib-esm/LabelGroup.d.ts +0 -6
- package/lib-esm/Link.d.ts +0 -10
- package/lib-esm/Overlay.d.ts +0 -62
- package/lib-esm/Pagehead.d.ts +0 -6
- package/lib-esm/Pagination/Pagination.d.ts +0 -24
- package/lib-esm/Pagination/index.d.ts +0 -3
- package/lib-esm/Pagination/model.d.ts +0 -26
- package/lib-esm/PointerBox.d.ts +0 -11
- package/lib-esm/Popover.d.ts +0 -21
- package/lib-esm/Portal/Portal.d.ts +0 -25
- package/lib-esm/Portal/index.d.ts +0 -4
- package/lib-esm/Position.d.ts +0 -34
- package/lib-esm/ProgressBar.d.ts +0 -21
- package/lib-esm/SelectMenu/SelectMenu.d.ts +0 -1832
- package/lib-esm/SelectMenu/SelectMenuContext.d.ts +0 -8
- package/lib-esm/SelectMenu/SelectMenuDivider.d.ts +0 -6
- package/lib-esm/SelectMenu/SelectMenuFilter.d.ts +0 -9
- package/lib-esm/SelectMenu/SelectMenuFooter.d.ts +0 -6
- package/lib-esm/SelectMenu/SelectMenuHeader.d.ts +0 -11
- package/lib-esm/SelectMenu/SelectMenuItem.d.ts +0 -15
- package/lib-esm/SelectMenu/SelectMenuList.d.ts +0 -6
- package/lib-esm/SelectMenu/SelectMenuLoadingAnimation.d.ts +0 -7
- package/lib-esm/SelectMenu/SelectMenuModal.d.ts +0 -15
- package/lib-esm/SelectMenu/SelectMenuTab.d.ts +0 -14
- package/lib-esm/SelectMenu/SelectMenuTabPanel.d.ts +0 -13
- package/lib-esm/SelectMenu/SelectMenuTabs.d.ts +0 -11
- package/lib-esm/SelectMenu/hooks/useKeyboardNav.d.ts +0 -2
- package/lib-esm/SelectMenu/index.d.ts +0 -2
- package/lib-esm/SelectPanel/SelectPanel.d.ts +0 -25
- package/lib-esm/SelectPanel/SelectPanel.js +0 -127
- package/lib-esm/SelectPanel/index.d.ts +0 -2
- package/lib-esm/SelectPanel/index.js +0 -1
- package/lib-esm/SideNav.d.ts +0 -31
- package/lib-esm/Spinner.d.ts +0 -17
- package/lib-esm/Spinner.js +0 -46
- package/lib-esm/StateLabel.d.ts +0 -16
- package/lib-esm/StyledOcticon.d.ts +0 -12
- package/lib-esm/SubNav.d.ts +0 -32
- package/lib-esm/TabNav.d.ts +0 -20
- package/lib-esm/Text.d.ts +0 -6
- package/lib-esm/TextInput.d.ts +0 -22
- package/lib-esm/ThemeProvider.d.ts +0 -26
- package/lib-esm/Timeline.d.ts +0 -407
- package/lib-esm/Tooltip.d.ts +0 -18
- package/lib-esm/Truncate.d.ts +0 -11
- package/lib-esm/UnderlineNav.d.ts +0 -25
- package/lib-esm/behaviors/anchoredPosition.d.ts +0 -89
- package/lib-esm/behaviors/focusTrap.d.ts +0 -12
- package/lib-esm/behaviors/focusZone.d.ts +0 -137
- package/lib-esm/constants.d.ts +0 -20
- package/lib-esm/hooks/index.d.ts +0 -11
- package/lib-esm/hooks/useAnchoredPosition.d.ts +0 -20
- package/lib-esm/hooks/useCombinedRefs.d.ts +0 -10
- package/lib-esm/hooks/useCombinedRefs.js +0 -36
- package/lib-esm/hooks/useDetails.d.ts +0 -17
- package/lib-esm/hooks/useDialog.d.ts +0 -16
- package/lib-esm/hooks/useFocusTrap.d.ts +0 -32
- package/lib-esm/hooks/useFocusZone.d.ts +0 -23
- package/lib-esm/hooks/useOnEscapePress.d.ts +0 -23
- package/lib-esm/hooks/useOnOutsideClick.d.ts +0 -8
- package/lib-esm/hooks/useOpenAndCloseFocus.d.ts +0 -7
- package/lib-esm/hooks/useOverlay.d.ts +0 -14
- package/lib-esm/hooks/useProvidedRefOrCreate.d.ts +0 -10
- package/lib-esm/hooks/useProvidedStateOrCreate.d.ts +0 -10
- package/lib-esm/hooks/useProvidedStateOrCreate.js +0 -20
- package/lib-esm/hooks/useRenderForcingRef.d.ts +0 -8
- package/lib-esm/hooks/useRenderForcingRef.js +0 -18
- package/lib-esm/hooks/useResizeObserver.d.ts +0 -1
- package/lib-esm/hooks/useResizeObserver.js +0 -10
- package/lib-esm/hooks/useSafeTimeout.d.ts +0 -12
- package/lib-esm/hooks/useScrollFlash.d.ts +0 -6
- package/lib-esm/hooks/useScrollFlash.js +0 -22
- package/lib-esm/index.d.ts +0 -111
- package/lib-esm/polyfills/eventListenerSignal.d.ts +0 -6
- package/lib-esm/sx.d.ts +0 -6
- package/lib-esm/theme-preval.d.ts +0 -49
- package/lib-esm/theme.d.ts +0 -2
- package/lib-esm/utils/deprecate.d.ts +0 -18
- package/lib-esm/utils/isNumeric.d.ts +0 -1
- package/lib-esm/utils/iterateFocusableElements.d.ts +0 -42
- package/lib-esm/utils/ssr.d.ts +0 -1
- package/lib-esm/utils/ssr.js +0 -1
- package/lib-esm/utils/test-deprecations.d.ts +0 -1
- package/lib-esm/utils/test-helpers.d.ts +0 -0
- package/lib-esm/utils/test-helpers.js +0 -7
- package/lib-esm/utils/test-matchers.d.ts +0 -1
- package/lib-esm/utils/testing.d.ts +0 -1028
- package/lib-esm/utils/theme.d.ts +0 -9
- package/lib-esm/utils/types.d.ts +0 -14
- package/lib-esm/utils/uniqueId.d.ts +0 -1
- package/lib-esm/utils/userAgent.d.ts +0 -1
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.focusZone = focusZone;
|
7
|
-
exports.
|
7
|
+
exports.FocusKeys = void 0;
|
8
8
|
|
9
9
|
var _iterateFocusableElements = require("../utils/iterateFocusableElements");
|
10
10
|
|
@@ -15,7 +15,6 @@ var _userAgent = require("../utils/userAgent");
|
|
15
15
|
var _uniqueId = require("../utils/uniqueId");
|
16
16
|
|
17
17
|
(0, _eventListenerSignal.polyfill)();
|
18
|
-
// eslint-disable-next-line no-shadow
|
19
18
|
let FocusKeys;
|
20
19
|
exports.FocusKeys = FocusKeys;
|
21
20
|
|
@@ -176,27 +175,21 @@ function shouldIgnoreFocusHandling(keyboardEvent, activeElement) {
|
|
176
175
|
return false;
|
177
176
|
}
|
178
177
|
|
179
|
-
const
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
**/
|
195
|
-
|
196
|
-
exports.activeDescendantActivatedDirectly = activeDescendantActivatedDirectly;
|
197
|
-
const activeDescendantActivatedIndirectly = 'activated-indirectly';
|
198
|
-
exports.activeDescendantActivatedIndirectly = activeDescendantActivatedIndirectly;
|
199
|
-
const hasActiveDescendantAttribute = 'data-has-active-descendant';
|
178
|
+
const subscriptions = [];
|
179
|
+
|
180
|
+
function notifyActiveElement(element) {
|
181
|
+
for (const subscription of subscriptions) {
|
182
|
+
subscription(element);
|
183
|
+
}
|
184
|
+
}
|
185
|
+
|
186
|
+
function subscribeToActiveElementChanges(callback) {
|
187
|
+
subscriptions.push(callback);
|
188
|
+
return () => {
|
189
|
+
const index = subscriptions.indexOf(callback);
|
190
|
+
subscriptions.splice(index, 1);
|
191
|
+
};
|
192
|
+
}
|
200
193
|
/**
|
201
194
|
* Sets up the arrow key focus behavior for all focusable elements in the given `container`.
|
202
195
|
* @param container
|
@@ -204,7 +197,6 @@ const hasActiveDescendantAttribute = 'data-has-active-descendant';
|
|
204
197
|
* @returns
|
205
198
|
*/
|
206
199
|
|
207
|
-
exports.hasActiveDescendantAttribute = hasActiveDescendantAttribute;
|
208
200
|
|
209
201
|
function focusZone(container, settings) {
|
210
202
|
var _settings$bindKeys, _settings$focusOutBeh, _settings$focusInStra, _settings$abortSignal;
|
@@ -216,66 +208,34 @@ function focusZone(container, settings) {
|
|
216
208
|
const focusInStrategy = (_settings$focusInStra = settings === null || settings === void 0 ? void 0 : settings.focusInStrategy) !== null && _settings$focusInStra !== void 0 ? _settings$focusInStra : 'previous';
|
217
209
|
const activeDescendantControl = settings === null || settings === void 0 ? void 0 : settings.activeDescendantControl;
|
218
210
|
const activeDescendantCallback = settings === null || settings === void 0 ? void 0 : settings.onActiveDescendantChanged;
|
219
|
-
let currentFocusedElement;
|
220
211
|
|
221
|
-
function
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
function isActiveDescendantInputFocused() {
|
226
|
-
return document.activeElement === activeDescendantControl;
|
227
|
-
}
|
228
|
-
|
229
|
-
function updateFocusedElement(to, directlyActivated = false) {
|
230
|
-
const from = currentFocusedElement;
|
231
|
-
currentFocusedElement = to;
|
232
|
-
|
233
|
-
if (activeDescendantControl) {
|
234
|
-
if (to && isActiveDescendantInputFocused()) {
|
235
|
-
setActiveDescendant(from, to, directlyActivated);
|
236
|
-
} else {
|
237
|
-
clearActiveDescendant();
|
238
|
-
}
|
239
|
-
|
240
|
-
return;
|
241
|
-
}
|
242
|
-
|
243
|
-
if (from && from !== to && savedTabIndex.has(from)) {
|
244
|
-
from.setAttribute('tabindex', '-1');
|
212
|
+
function updateTabIndex(from, to) {
|
213
|
+
if (!activeDescendantControl) {
|
214
|
+
from === null || from === void 0 ? void 0 : from.setAttribute('tabindex', '-1');
|
215
|
+
to === null || to === void 0 ? void 0 : to.setAttribute('tabindex', '0');
|
245
216
|
}
|
246
|
-
|
247
|
-
to === null || to === void 0 ? void 0 : to.setAttribute('tabindex', '0');
|
248
217
|
}
|
249
218
|
|
250
|
-
function setActiveDescendant(from, to
|
219
|
+
function setActiveDescendant(from, to) {
|
251
220
|
if (!to.id) {
|
252
221
|
to.setAttribute('id', (0, _uniqueId.uniqueId)());
|
253
222
|
}
|
254
223
|
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
if (!activeDescendantControl || !directlyActivated && activeDescendantControl.getAttribute('aria-activedescendant') === to.id) {
|
260
|
-
// prevent active descendant callback from being called repeatedly if the same element is activated (e.g. via mousemove)
|
261
|
-
return;
|
262
|
-
}
|
263
|
-
|
264
|
-
activeDescendantControl.setAttribute('aria-activedescendant', to.id);
|
265
|
-
container.setAttribute(hasActiveDescendantAttribute, to.id);
|
266
|
-
to.setAttribute(isActiveDescendantAttribute, directlyActivated ? activeDescendantActivatedDirectly : activeDescendantActivatedIndirectly);
|
267
|
-
activeDescendantCallback === null || activeDescendantCallback === void 0 ? void 0 : activeDescendantCallback(to, from, directlyActivated);
|
224
|
+
currentFocusedElement = to;
|
225
|
+
activeDescendantControl === null || activeDescendantControl === void 0 ? void 0 : activeDescendantControl.setAttribute('aria-activedescendant', to.id);
|
226
|
+
notifyActiveElement(to);
|
227
|
+
activeDescendantCallback === null || activeDescendantCallback === void 0 ? void 0 : activeDescendantCallback(to, from);
|
268
228
|
}
|
269
229
|
|
270
|
-
function
|
230
|
+
function suspendActiveDescendant() {
|
231
|
+
activeDescendantControl === null || activeDescendantControl === void 0 ? void 0 : activeDescendantControl.removeAttribute('aria-activedescendant');
|
232
|
+
activeDescendantSuspended = true;
|
233
|
+
activeDescendantCallback === null || activeDescendantCallback === void 0 ? void 0 : activeDescendantCallback(undefined, currentFocusedElement);
|
234
|
+
currentFocusedElement = undefined;
|
235
|
+
|
271
236
|
if (focusInStrategy === 'first') {
|
272
|
-
|
237
|
+
currentFocusedIndex = 0;
|
273
238
|
}
|
274
|
-
|
275
|
-
activeDescendantControl === null || activeDescendantControl === void 0 ? void 0 : activeDescendantControl.removeAttribute('aria-activedescendant');
|
276
|
-
container.removeAttribute(hasActiveDescendantAttribute);
|
277
|
-
previouslyActiveElement === null || previouslyActiveElement === void 0 ? void 0 : previouslyActiveElement.removeAttribute(isActiveDescendantAttribute);
|
278
|
-
activeDescendantCallback === null || activeDescendantCallback === void 0 ? void 0 : activeDescendantCallback(undefined, previouslyActiveElement, false);
|
279
239
|
}
|
280
240
|
|
281
241
|
function beginFocusManagement(...elements) {
|
@@ -302,10 +262,6 @@ function focusZone(container, settings) {
|
|
302
262
|
|
303
263
|
element.setAttribute('tabindex', '-1');
|
304
264
|
}
|
305
|
-
|
306
|
-
if (!currentFocusedElement) {
|
307
|
-
updateFocusedElement(getFirstFocusableElement());
|
308
|
-
}
|
309
265
|
}
|
310
266
|
|
311
267
|
function endFocusManagement(...elements) {
|
@@ -313,7 +269,13 @@ function focusZone(container, settings) {
|
|
313
269
|
const focusableElementIndex = focusableElements.indexOf(element);
|
314
270
|
|
315
271
|
if (focusableElementIndex >= 0) {
|
316
|
-
focusableElements.splice(focusableElementIndex, 1);
|
272
|
+
focusableElements.splice(focusableElementIndex, 1); // If removing the last-focused element, set tabindex=0 to the first element in the list.
|
273
|
+
|
274
|
+
if (element === currentFocusedElement && focusableElements.length > 0) {
|
275
|
+
updateTabIndex(undefined, focusableElements[0]);
|
276
|
+
currentFocusedElement = focusableElements[0];
|
277
|
+
currentFocusedIndex = 0;
|
278
|
+
}
|
317
279
|
}
|
318
280
|
|
319
281
|
const savedIndex = savedTabIndex.get(element);
|
@@ -326,38 +288,44 @@ function focusZone(container, settings) {
|
|
326
288
|
}
|
327
289
|
|
328
290
|
savedTabIndex.delete(element);
|
329
|
-
} // If removing the last-focused element, move focus to the first element in the list.
|
330
|
-
|
331
|
-
|
332
|
-
if (element === currentFocusedElement) {
|
333
|
-
const nextElementToFocus = getFirstFocusableElement();
|
334
|
-
updateFocusedElement(nextElementToFocus);
|
335
291
|
}
|
336
292
|
}
|
337
293
|
} // Take all tabbable elements within container under management
|
338
294
|
|
339
295
|
|
340
|
-
beginFocusManagement(...(0, _iterateFocusableElements.iterateFocusableElements)(container)); //
|
296
|
+
beginFocusManagement(...(0, _iterateFocusableElements.iterateFocusableElements)(container)); // If multiple focus zones have overlapping DOM, we need to know about
|
297
|
+
// any changes that result from others so that the "previous" active element
|
298
|
+
// stays consistent.
|
341
299
|
|
342
|
-
|
343
|
-
|
300
|
+
const unsubscribeFromActiveElementChanges = subscribeToActiveElementChanges(activeElement => {
|
301
|
+
if (focusInStrategy === 'previous') {
|
302
|
+
const tabbableElementIndex = focusableElements.indexOf(activeElement);
|
344
303
|
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
endFocusManagement(...(0, _iterateFocusableElements.iterateFocusableElements)(removedNode));
|
351
|
-
}
|
304
|
+
if (tabbableElementIndex >= 0) {
|
305
|
+
const nextFocusedElement = focusableElements[tabbableElementIndex];
|
306
|
+
const previousFocusedElement = focusableElements[currentFocusedIndex];
|
307
|
+
updateTabIndex(previousFocusedElement, nextFocusedElement);
|
308
|
+
currentFocusedIndex = tabbableElementIndex;
|
352
309
|
}
|
353
310
|
}
|
311
|
+
}); // Open the first tabbable element for tabbing
|
312
|
+
|
313
|
+
updateTabIndex(undefined, focusableElements[0]); // If the DOM structure of the container changes, make sure we keep our state up-to-date
|
314
|
+
// with respect to the focusable elements cache and its order
|
354
315
|
|
316
|
+
const observer = new MutationObserver(mutations => {
|
355
317
|
for (const mutation of mutations) {
|
356
318
|
for (const addedNode of mutation.addedNodes) {
|
357
|
-
if (addedNode instanceof HTMLElement) {
|
319
|
+
if (addedNode instanceof HTMLElement && (0, _iterateFocusableElements.isFocusable)(addedNode)) {
|
358
320
|
beginFocusManagement(...(0, _iterateFocusableElements.iterateFocusableElements)(addedNode));
|
359
321
|
}
|
360
322
|
}
|
323
|
+
|
324
|
+
for (const removedNode of mutation.removedNodes) {
|
325
|
+
if (removedNode instanceof HTMLElement && savedTabIndex.has(removedNode)) {
|
326
|
+
endFocusManagement(...(0, _iterateFocusableElements.iterateFocusableElements)(removedNode));
|
327
|
+
}
|
328
|
+
}
|
361
329
|
}
|
362
330
|
});
|
363
331
|
observer.observe(container, {
|
@@ -369,7 +337,13 @@ function focusZone(container, settings) {
|
|
369
337
|
signal.addEventListener('abort', () => {
|
370
338
|
// Clean up any modifications
|
371
339
|
endFocusManagement(...focusableElements);
|
372
|
-
|
340
|
+
unsubscribeFromActiveElementChanges();
|
341
|
+
}); // When using activedescendant focusing, the first focus-in is caused by our listeners
|
342
|
+
// meaning we have to approach zero. This is safe since we clamp the value before using it.
|
343
|
+
|
344
|
+
let currentFocusedIndex = 0;
|
345
|
+
let activeDescendantSuspended = activeDescendantControl ? true : false;
|
346
|
+
let currentFocusedElement = activeDescendantControl ? undefined : focusableElements[0];
|
373
347
|
let elementIndexFocusedByClick = undefined;
|
374
348
|
container.addEventListener('mousedown', event => {
|
375
349
|
// Since focusin is only called when focus changes, we need to make sure the clicked
|
@@ -379,75 +353,35 @@ function focusZone(container, settings) {
|
|
379
353
|
}
|
380
354
|
}, {
|
381
355
|
signal
|
382
|
-
});
|
383
|
-
|
384
|
-
if (activeDescendantControl) {
|
385
|
-
container.addEventListener('focusin', event => {
|
386
|
-
if (event.target instanceof HTMLElement && focusableElements.includes(event.target)) {
|
387
|
-
// Move focus to the activeDescendantControl if one of the descendants is focused
|
388
|
-
activeDescendantControl.focus();
|
389
|
-
updateFocusedElement(event.target);
|
390
|
-
}
|
391
|
-
});
|
392
|
-
container.addEventListener('mousemove', ({
|
393
|
-
target
|
394
|
-
}) => {
|
395
|
-
if (!(target instanceof Node)) {
|
396
|
-
return;
|
397
|
-
}
|
398
|
-
|
399
|
-
const focusableElement = focusableElements.find(element => element.contains(target));
|
356
|
+
}); // This is called whenever focus enters the container
|
400
357
|
|
401
|
-
|
402
|
-
updateFocusedElement(focusableElement);
|
403
|
-
}
|
404
|
-
}, {
|
405
|
-
signal,
|
406
|
-
capture: true
|
407
|
-
}); // Listeners specifically on the controlling element
|
408
|
-
|
409
|
-
activeDescendantControl.addEventListener('focusin', () => {
|
410
|
-
// Focus moved into the active descendant input. Activate current or first descendant.
|
411
|
-
if (!currentFocusedElement) {
|
412
|
-
updateFocusedElement(getFirstFocusableElement());
|
413
|
-
} else {
|
414
|
-
setActiveDescendant(undefined, currentFocusedElement);
|
415
|
-
}
|
416
|
-
});
|
417
|
-
activeDescendantControl.addEventListener('focusout', () => {
|
418
|
-
clearActiveDescendant();
|
419
|
-
});
|
420
|
-
} else {
|
421
|
-
// This is called whenever focus enters an element in the container
|
358
|
+
if (!activeDescendantControl) {
|
422
359
|
container.addEventListener('focusin', event => {
|
423
360
|
if (event.target instanceof HTMLElement) {
|
424
361
|
// If a click initiated the focus movement, we always want to set our internal state
|
425
362
|
// to reflect the clicked element as the currently focused one.
|
426
|
-
if (elementIndexFocusedByClick
|
363
|
+
if (elementIndexFocusedByClick != undefined) {
|
427
364
|
if (elementIndexFocusedByClick >= 0) {
|
428
365
|
if (focusableElements[elementIndexFocusedByClick] !== currentFocusedElement) {
|
429
|
-
|
366
|
+
updateTabIndex(currentFocusedElement, focusableElements[elementIndexFocusedByClick]);
|
430
367
|
}
|
368
|
+
|
369
|
+
currentFocusedIndex = elementIndexFocusedByClick;
|
431
370
|
}
|
432
371
|
|
433
372
|
elementIndexFocusedByClick = undefined;
|
434
373
|
} else {
|
435
374
|
// Set tab indexes and internal state based on the focus handling strategy
|
436
375
|
if (focusInStrategy === 'previous') {
|
437
|
-
|
438
|
-
} else if (focusInStrategy === '
|
439
|
-
if (event.relatedTarget instanceof Element && !container.contains(event.relatedTarget)) {
|
376
|
+
updateTabIndex(currentFocusedElement, event.target);
|
377
|
+
} else if (focusInStrategy === 'first') {
|
378
|
+
if (event.relatedTarget instanceof Element && !container.contains(event.relatedTarget) && event.target !== focusableElements[0]) {
|
440
379
|
// Regardless of the previously focused element, if we're coming from outside the
|
441
|
-
// container, put focus onto the first
|
442
|
-
|
443
|
-
|
444
|
-
// be undefined.
|
445
|
-
const targetElementIndex = lastKeyboardFocusDirection === 'previous' ? focusableElements.length - 1 : 0;
|
446
|
-
const targetElement = focusableElements[targetElementIndex];
|
447
|
-
targetElement === null || targetElement === void 0 ? void 0 : targetElement.focus();
|
448
|
-
return;
|
380
|
+
// container, put focus onto the first element.
|
381
|
+
currentFocusedIndex = 0;
|
382
|
+
focusableElements[0].focus();
|
449
383
|
} else {
|
450
|
-
|
384
|
+
updateTabIndex(currentFocusedElement, event.target);
|
451
385
|
}
|
452
386
|
} else if (typeof focusInStrategy === 'function') {
|
453
387
|
if (event.relatedTarget instanceof Element && !container.contains(event.relatedTarget)) {
|
@@ -455,54 +389,31 @@ function focusZone(container, settings) {
|
|
455
389
|
const requestedFocusElementIndex = elementToFocus ? focusableElements.indexOf(elementToFocus) : -1;
|
456
390
|
|
457
391
|
if (requestedFocusElementIndex >= 0 && elementToFocus instanceof HTMLElement) {
|
458
|
-
// Since we are calling focus() this handler will run again synchronously. Therefore,
|
392
|
+
currentFocusedIndex = requestedFocusElementIndex; // Since we are calling focus() this handler will run again synchronously. Therefore,
|
459
393
|
// we don't want to let this invocation finish since it will clobber the value of
|
460
394
|
// currentFocusedElement.
|
395
|
+
|
461
396
|
elementToFocus.focus();
|
462
397
|
return;
|
463
398
|
} else {
|
464
|
-
//
|
399
|
+
// Should we warn here?
|
465
400
|
console.warn('Element requested is not a known focusable element.');
|
466
401
|
}
|
467
402
|
} else {
|
468
|
-
|
403
|
+
updateTabIndex(currentFocusedElement, event.target);
|
469
404
|
}
|
470
405
|
}
|
471
406
|
}
|
472
|
-
}
|
473
|
-
|
474
|
-
lastKeyboardFocusDirection = undefined;
|
475
|
-
}, {
|
476
|
-
signal
|
477
|
-
});
|
478
|
-
}
|
479
407
|
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
let lastKeyboardFocusDirection = undefined;
|
484
|
-
|
485
|
-
if (focusInStrategy === 'closest') {
|
486
|
-
document.addEventListener('keydown', event => {
|
487
|
-
if (event.key === 'Tab') {
|
488
|
-
lastKeyboardFocusDirection = getDirection(event);
|
408
|
+
notifyActiveElement(event.target);
|
409
|
+
currentFocusedElement = event.target;
|
489
410
|
}
|
490
411
|
}, {
|
491
|
-
signal
|
492
|
-
capture: true
|
412
|
+
signal
|
493
413
|
});
|
494
414
|
}
|
495
415
|
|
496
|
-
|
497
|
-
if (!currentFocusedElement) {
|
498
|
-
return 0;
|
499
|
-
}
|
500
|
-
|
501
|
-
const focusedIndex = focusableElements.indexOf(currentFocusedElement);
|
502
|
-
const fallbackIndex = currentFocusedElement === container ? -1 : 0;
|
503
|
-
return focusedIndex !== -1 ? focusedIndex : fallbackIndex;
|
504
|
-
} // "keydown" is the event that triggers DOM focus change, so that is what we use here
|
505
|
-
|
416
|
+
const keyboardEventRecipient = activeDescendantControl !== null && activeDescendantControl !== void 0 ? activeDescendantControl : container; // "keydown" is the event that triggers DOM focus change, so that is what we use here
|
506
417
|
|
507
418
|
keyboardEventRecipient.addEventListener('keydown', event => {
|
508
419
|
if (event.key in KEY_TO_DIRECTION) {
|
@@ -511,57 +422,65 @@ function focusZone(container, settings) {
|
|
511
422
|
if (!event.defaultPrevented && (keyBit & bindKeys) > 0 && !shouldIgnoreFocusHandling(event, document.activeElement)) {
|
512
423
|
// Moving forward or backward?
|
513
424
|
const direction = getDirection(event);
|
514
|
-
let nextElementToFocus = undefined;
|
425
|
+
let nextElementToFocus = undefined;
|
515
426
|
|
516
|
-
if (
|
517
|
-
|
427
|
+
if (activeDescendantSuspended) {
|
428
|
+
activeDescendantSuspended = false;
|
429
|
+
nextElementToFocus = focusableElements[currentFocusedIndex];
|
430
|
+
} else {
|
431
|
+
// If there is a custom function that retrieves the next focusable element, try calling that first.
|
432
|
+
if (settings !== null && settings !== void 0 && settings.getNextFocusable) {
|
433
|
+
var _document$activeEleme;
|
518
434
|
|
519
|
-
|
520
|
-
|
435
|
+
nextElementToFocus = settings.getNextFocusable(direction, (_document$activeEleme = document.activeElement) !== null && _document$activeEleme !== void 0 ? _document$activeEleme : undefined, event);
|
436
|
+
}
|
521
437
|
|
522
|
-
|
523
|
-
|
524
|
-
|
438
|
+
if (!nextElementToFocus) {
|
439
|
+
const lastFocusedIndex = currentFocusedIndex;
|
440
|
+
|
441
|
+
if (direction === 'previous') {
|
442
|
+
currentFocusedIndex -= 1;
|
443
|
+
} else if (direction === 'start') {
|
444
|
+
currentFocusedIndex = 0;
|
445
|
+
} else if (direction === 'next') {
|
446
|
+
currentFocusedIndex += 1;
|
447
|
+
} else if (direction === 'end') {
|
448
|
+
currentFocusedIndex = focusableElements.length - 1;
|
449
|
+
}
|
525
450
|
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
nextFocusedIndex = focusableElements.length - 1;
|
535
|
-
}
|
451
|
+
if (currentFocusedIndex < 0) {
|
452
|
+
// Tab should never cause focus to wrap. Use focusTrap for that behavior.
|
453
|
+
if (focusOutBehavior === 'wrap' && event.key !== 'Tab') {
|
454
|
+
currentFocusedIndex = focusableElements.length - 1;
|
455
|
+
} else {
|
456
|
+
if (activeDescendantControl) {
|
457
|
+
suspendActiveDescendant();
|
458
|
+
}
|
536
459
|
|
537
|
-
|
538
|
-
|
539
|
-
if (focusOutBehavior === 'wrap' && event.key !== 'Tab') {
|
540
|
-
nextFocusedIndex = focusableElements.length - 1;
|
541
|
-
} else {
|
542
|
-
nextFocusedIndex = 0;
|
460
|
+
currentFocusedIndex = 0;
|
461
|
+
}
|
543
462
|
}
|
544
|
-
}
|
545
463
|
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
|
464
|
+
if (currentFocusedIndex >= focusableElements.length) {
|
465
|
+
if (focusOutBehavior === 'wrap' && event.key !== 'Tab') {
|
466
|
+
currentFocusedIndex = 0;
|
467
|
+
} else {
|
468
|
+
currentFocusedIndex = focusableElements.length - 1;
|
469
|
+
}
|
551
470
|
}
|
552
|
-
}
|
553
471
|
|
554
|
-
|
555
|
-
|
472
|
+
if (lastFocusedIndex !== currentFocusedIndex) {
|
473
|
+
nextElementToFocus = focusableElements[currentFocusedIndex];
|
474
|
+
}
|
556
475
|
}
|
557
476
|
}
|
558
477
|
|
559
|
-
if (
|
560
|
-
|
561
|
-
|
562
|
-
|
563
|
-
|
564
|
-
|
478
|
+
if (nextElementToFocus) {
|
479
|
+
if (activeDescendantControl) {
|
480
|
+
setActiveDescendant(currentFocusedElement, nextElementToFocus);
|
481
|
+
} else {
|
482
|
+
nextElementToFocus.focus();
|
483
|
+
}
|
565
484
|
} // Tab should always allow escaping from this container, so only
|
566
485
|
// preventDefault if tab key press already resulted in a focus movement
|
567
486
|
|
@@ -571,8 +490,19 @@ function focusZone(container, settings) {
|
|
571
490
|
}
|
572
491
|
}
|
573
492
|
}
|
493
|
+
|
494
|
+
if (event.key === 'Escape' && !activeDescendantSuspended && activeDescendantControl) {
|
495
|
+
suspendActiveDescendant();
|
496
|
+
}
|
574
497
|
}, {
|
575
498
|
signal
|
576
499
|
});
|
500
|
+
|
501
|
+
if (activeDescendantControl) {
|
502
|
+
activeDescendantControl.addEventListener('focusout', () => {
|
503
|
+
suspendActiveDescendant();
|
504
|
+
});
|
505
|
+
}
|
506
|
+
|
577
507
|
return controller;
|
578
508
|
}
|
package/lib/constants.js
CHANGED
@@ -13,11 +13,10 @@ var _theme = _interopRequireDefault(require("./theme"));
|
|
13
13
|
|
14
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
15
15
|
|
16
|
-
function _getRequireWildcardCache(
|
16
|
+
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
|
17
17
|
|
18
|
-
function _interopRequireWildcard(obj
|
18
|
+
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
19
19
|
|
20
|
-
// eslint-disable-next-line import/no-namespace
|
21
20
|
const {
|
22
21
|
get: getKey,
|
23
22
|
compose,
|
package/lib/hooks/index.js
CHANGED
@@ -39,12 +39,6 @@ Object.defineProperty(exports, "useOverlay", {
|
|
39
39
|
return _useOverlay.useOverlay;
|
40
40
|
}
|
41
41
|
});
|
42
|
-
Object.defineProperty(exports, "useRenderForcingRef", {
|
43
|
-
enumerable: true,
|
44
|
-
get: function () {
|
45
|
-
return _useRenderForcingRef.useRenderForcingRef;
|
46
|
-
}
|
47
|
-
});
|
48
42
|
|
49
43
|
var _useOnOutsideClick = require("./useOnOutsideClick");
|
50
44
|
|
@@ -56,6 +50,4 @@ var _useOpenAndCloseFocus = require("./useOpenAndCloseFocus");
|
|
56
50
|
|
57
51
|
var _useAnchoredPosition = require("./useAnchoredPosition");
|
58
52
|
|
59
|
-
var _useOverlay = require("./useOverlay");
|
60
|
-
|
61
|
-
var _useRenderForcingRef = require("./useRenderForcingRef");
|
53
|
+
var _useOverlay = require("./useOverlay");
|
@@ -11,8 +11,6 @@ var _anchoredPosition = require("../behaviors/anchoredPosition");
|
|
11
11
|
|
12
12
|
var _useProvidedRefOrCreate = require("./useProvidedRefOrCreate");
|
13
13
|
|
14
|
-
var _useResizeObserver = require("./useResizeObserver");
|
15
|
-
|
16
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
17
15
|
|
18
16
|
/**
|
@@ -24,24 +22,19 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
24
22
|
* @returns An object of {top: number, left: number} to absolutely-position the
|
25
23
|
* floating element.
|
26
24
|
*/
|
27
|
-
function useAnchoredPosition(settings, dependencies
|
25
|
+
function useAnchoredPosition(settings, dependencies) {
|
28
26
|
const floatingElementRef = (0, _useProvidedRefOrCreate.useProvidedRefOrCreate)(settings === null || settings === void 0 ? void 0 : settings.floatingElementRef);
|
29
27
|
const anchorElementRef = (0, _useProvidedRefOrCreate.useProvidedRefOrCreate)(settings === null || settings === void 0 ? void 0 : settings.anchorElementRef);
|
30
28
|
|
31
29
|
const [position, setPosition] = _react.default.useState(undefined);
|
32
30
|
|
33
|
-
|
31
|
+
_react.default.useEffect(() => {
|
34
32
|
if (floatingElementRef.current instanceof Element && anchorElementRef.current instanceof Element) {
|
35
33
|
setPosition((0, _anchoredPosition.getAnchoredPosition)(floatingElementRef.current, anchorElementRef.current, settings));
|
36
|
-
}
|
37
|
-
setPosition(undefined);
|
38
|
-
}
|
39
|
-
}, // eslint-disable-next-line react-hooks/exhaustive-deps
|
40
|
-
[floatingElementRef, anchorElementRef, ...dependencies]);
|
34
|
+
} // eslint-disable-next-line react-hooks/exhaustive-deps
|
41
35
|
|
42
|
-
|
36
|
+
}, dependencies !== null && dependencies !== void 0 ? dependencies : []);
|
43
37
|
|
44
|
-
(0, _useResizeObserver.useResizeObserver)(updatePosition);
|
45
38
|
return {
|
46
39
|
floatingElementRef,
|
47
40
|
anchorElementRef,
|
package/lib/hooks/useDialog.js
CHANGED
@@ -49,7 +49,7 @@ function useDialog({
|
|
49
49
|
}
|
50
50
|
}, [isOpen, initialFocusRef, closeButtonRef]);
|
51
51
|
const getFocusableItem = (0, _react.useCallback)((e, movement) => {
|
52
|
-
if (modalRef.current) {
|
52
|
+
if (modalRef && modalRef.current) {
|
53
53
|
const items = Array.from(modalRef.current.querySelectorAll('*')).filter(focusable);
|
54
54
|
if (items.length === 0) return;
|
55
55
|
e.preventDefault();
|