@itwin/core-react 4.1.0 → 4.2.0-dev.1
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 +1609 -1609
- package/ContributeGuidelines.md +99 -99
- package/LICENSE.md +9 -9
- package/README.md +11 -11
- package/lib/cjs/core-react/UiCore.d.ts.map +1 -1
- package/lib/cjs/core-react/UiCore.js +9 -5
- package/lib/cjs/core-react/UiCore.js.map +1 -1
- package/lib/cjs/core-react/_geometry.scss +70 -70
- package/lib/cjs/core-react/_helpers.scss +52 -51
- package/lib/cjs/core-react/_math.scss +13 -13
- package/lib/cjs/core-react/_scrollbar.scss +55 -51
- package/lib/cjs/core-react/_typography.scss +44 -44
- package/lib/cjs/core-react/_z-index.scss +47 -65
- package/lib/cjs/core-react/autosuggest/AutoSuggest.d.ts +1 -1
- package/lib/cjs/core-react/autosuggest/AutoSuggest.d.ts.map +1 -1
- package/lib/cjs/core-react/autosuggest/AutoSuggest.js +14 -15
- package/lib/cjs/core-react/autosuggest/AutoSuggest.js.map +1 -1
- package/lib/cjs/core-react/autosuggest/AutoSuggest.scss +79 -79
- package/lib/cjs/core-react/badge/Badge.d.ts +1 -1
- package/lib/cjs/core-react/badge/Badge.d.ts.map +1 -1
- package/lib/cjs/core-react/badge/Badge.js +3 -3
- package/lib/cjs/core-react/badge/Badge.js.map +1 -1
- package/lib/cjs/core-react/badge/Badge.scss +13 -13
- package/lib/cjs/core-react/badge/BadgeUtilities.d.ts.map +1 -1
- package/lib/cjs/core-react/badge/BadgeUtilities.js +3 -3
- package/lib/cjs/core-react/badge/BadgeUtilities.js.map +1 -1
- package/lib/cjs/core-react/badge/BetaBadge.d.ts.map +1 -1
- package/lib/cjs/core-react/badge/BetaBadge.js +3 -3
- package/lib/cjs/core-react/badge/BetaBadge.js.map +1 -1
- package/lib/cjs/core-react/badge/NewBadge.d.ts.map +1 -1
- package/lib/cjs/core-react/badge/NewBadge.js +4 -4
- package/lib/cjs/core-react/badge/NewBadge.js.map +1 -1
- package/lib/cjs/core-react/badge/NewBadge.scss +9 -9
- package/lib/cjs/core-react/base/Centered.js +3 -3
- package/lib/cjs/core-react/base/Centered.js.map +1 -1
- package/lib/cjs/core-react/base/Div.d.ts.map +1 -1
- package/lib/cjs/core-react/base/Div.js +3 -3
- package/lib/cjs/core-react/base/Div.js.map +1 -1
- package/lib/cjs/core-react/base/DivWithOutsideClick.d.ts.map +1 -1
- package/lib/cjs/core-react/base/DivWithOutsideClick.js +4 -4
- package/lib/cjs/core-react/base/DivWithOutsideClick.js.map +1 -1
- package/lib/cjs/core-react/base/FillCentered.js +3 -3
- package/lib/cjs/core-react/base/FillCentered.js.map +1 -1
- package/lib/cjs/core-react/base/FlexWrapContainer.js +3 -3
- package/lib/cjs/core-react/base/FlexWrapContainer.js.map +1 -1
- package/lib/cjs/core-react/base/Gap.d.ts.map +1 -1
- package/lib/cjs/core-react/base/Gap.js +4 -4
- package/lib/cjs/core-react/base/Gap.js.map +1 -1
- package/lib/cjs/core-react/base/PointerEvents.js +3 -3
- package/lib/cjs/core-react/base/PointerEvents.js.map +1 -1
- package/lib/cjs/core-react/base/ScrollView.js +3 -3
- package/lib/cjs/core-react/base/ScrollView.js.map +1 -1
- package/lib/cjs/core-react/base/base.scss +42 -42
- package/lib/cjs/core-react/base/classes.scss +27 -13
- package/lib/cjs/core-react/base/index.scss +5 -5
- package/lib/cjs/core-react/button/UnderlinedButton.d.ts.map +1 -1
- package/lib/cjs/core-react/button/UnderlinedButton.js +3 -3
- package/lib/cjs/core-react/button/UnderlinedButton.js.map +1 -1
- package/lib/cjs/core-react/button/UnderlinedButton.scss +32 -33
- package/lib/cjs/core-react/checklistbox/CheckListBox.d.ts.map +1 -1
- package/lib/cjs/core-react/checklistbox/CheckListBox.js +4 -4
- package/lib/cjs/core-react/checklistbox/CheckListBox.js.map +1 -1
- package/lib/cjs/core-react/checklistbox/CheckListBox.scss +22 -22
- package/lib/cjs/core-react/classes.scss +11 -11
- package/lib/cjs/core-react/colorthemes.scss +61 -61
- package/lib/cjs/core-react/colorvariables.scss +131 -131
- package/lib/cjs/core-react/contextmenu/ContextMenu.d.ts +7 -7
- package/lib/cjs/core-react/contextmenu/ContextMenu.d.ts.map +1 -1
- package/lib/cjs/core-react/contextmenu/ContextMenu.js +42 -23
- package/lib/cjs/core-react/contextmenu/ContextMenu.js.map +1 -1
- package/lib/cjs/core-react/contextmenu/ContextMenu.scss +236 -236
- package/lib/cjs/core-react/contextmenu/ContextMenuDirection.d.ts.map +1 -1
- package/lib/cjs/core-react/contextmenu/ContextMenuDirection.js +3 -3
- package/lib/cjs/core-react/contextmenu/ContextMenuDirection.js.map +1 -1
- package/lib/cjs/core-react/contextmenu/ContextMenuDivider.d.ts +1 -1
- package/lib/cjs/core-react/contextmenu/ContextMenuDivider.d.ts.map +1 -1
- package/lib/cjs/core-react/contextmenu/ContextMenuDivider.js +3 -3
- package/lib/cjs/core-react/contextmenu/ContextMenuDivider.js.map +1 -1
- package/lib/cjs/core-react/contextmenu/ContextMenuItem.d.ts +1 -1
- package/lib/cjs/core-react/contextmenu/ContextMenuItem.d.ts.map +1 -1
- package/lib/cjs/core-react/contextmenu/ContextMenuItem.js +16 -12
- package/lib/cjs/core-react/contextmenu/ContextMenuItem.js.map +1 -1
- package/lib/cjs/core-react/contextmenu/ContextSubMenu.d.ts +2 -2
- package/lib/cjs/core-react/contextmenu/ContextSubMenu.d.ts.map +1 -1
- package/lib/cjs/core-react/contextmenu/ContextSubMenu.js +37 -15
- package/lib/cjs/core-react/contextmenu/ContextSubMenu.js.map +1 -1
- package/lib/cjs/core-react/contextmenu/GlobalContextMenu.d.ts.map +1 -1
- package/lib/cjs/core-react/contextmenu/GlobalContextMenu.js +11 -7
- package/lib/cjs/core-react/contextmenu/GlobalContextMenu.js.map +1 -1
- package/lib/cjs/core-react/contextmenu/PopupContextMenu.d.ts.map +1 -1
- package/lib/cjs/core-react/contextmenu/PopupContextMenu.js +3 -3
- package/lib/cjs/core-react/contextmenu/PopupContextMenu.js.map +1 -1
- package/lib/cjs/core-react/contextmenu/TildeFinder.d.ts.map +1 -1
- package/lib/cjs/core-react/contextmenu/TildeFinder.js +15 -7
- package/lib/cjs/core-react/contextmenu/TildeFinder.js.map +1 -1
- package/lib/cjs/core-react/dialog/Dialog.d.ts +6 -5
- package/lib/cjs/core-react/dialog/Dialog.d.ts.map +1 -1
- package/lib/cjs/core-react/dialog/Dialog.js +94 -86
- package/lib/cjs/core-react/dialog/Dialog.js.map +1 -1
- package/lib/cjs/core-react/dialog/Dialog.scss +245 -245
- package/lib/cjs/core-react/dialog/GlobalDialog.d.ts.map +1 -1
- package/lib/cjs/core-react/dialog/GlobalDialog.js +10 -6
- package/lib/cjs/core-react/dialog/GlobalDialog.js.map +1 -1
- package/lib/cjs/core-react/dialog/SimpleDialog.d.ts +68 -0
- package/lib/cjs/core-react/dialog/SimpleDialog.d.ts.map +1 -0
- package/lib/cjs/core-react/dialog/SimpleDialog.js +51 -0
- package/lib/cjs/core-react/dialog/SimpleDialog.js.map +1 -0
- package/lib/cjs/core-react/elementseparator/ElementSeparator.d.ts.map +1 -1
- package/lib/cjs/core-react/elementseparator/ElementSeparator.js +14 -8
- package/lib/cjs/core-react/elementseparator/ElementSeparator.js.map +1 -1
- package/lib/cjs/core-react/elementseparator/ElementSeparator.scss +94 -85
- package/lib/cjs/core-react/enums/Alignment.js +3 -3
- package/lib/cjs/core-react/enums/Alignment.js.map +1 -1
- package/lib/cjs/core-react/enums/CheckBoxState.js +3 -3
- package/lib/cjs/core-react/enums/CheckBoxState.js.map +1 -1
- package/lib/cjs/core-react/enums/Orientation.js +3 -3
- package/lib/cjs/core-react/enums/Orientation.js.map +1 -1
- package/lib/cjs/core-react/enums/SortDirection.js +3 -3
- package/lib/cjs/core-react/enums/SortDirection.js.map +1 -1
- package/lib/cjs/core-react/enums/TimeFormat.js +3 -3
- package/lib/cjs/core-react/enums/TimeFormat.js.map +1 -1
- package/lib/cjs/core-react/expandable/ExpandableList.d.ts +1 -1
- package/lib/cjs/core-react/expandable/ExpandableList.d.ts.map +1 -1
- package/lib/cjs/core-react/expandable/ExpandableList.js +8 -5
- package/lib/cjs/core-react/expandable/ExpandableList.js.map +1 -1
- package/lib/cjs/core-react/expandable/ExpandableList.scss +9 -9
- package/lib/cjs/core-react/expandable/classes.scss +9 -7
- package/lib/cjs/core-react/expandable/index.scss +5 -5
- package/lib/cjs/core-react/expandable/list.scss +35 -35
- package/lib/cjs/core-react/focus/ItemKeyboardNavigator.d.ts.map +1 -1
- package/lib/cjs/core-react/focus/ItemKeyboardNavigator.js +38 -15
- package/lib/cjs/core-react/focus/ItemKeyboardNavigator.js.map +1 -1
- package/lib/cjs/core-react/focustrap/FocusTrap.d.ts.map +1 -1
- package/lib/cjs/core-react/focustrap/FocusTrap.js +33 -16
- package/lib/cjs/core-react/focustrap/FocusTrap.js.map +1 -1
- package/lib/cjs/core-react/hocs/withIsPressed.d.ts.map +1 -1
- package/lib/cjs/core-react/hocs/withIsPressed.js +4 -7
- package/lib/cjs/core-react/hocs/withIsPressed.js.map +1 -1
- package/lib/cjs/core-react/hocs/withOnOutsideClick.d.ts.map +1 -1
- package/lib/cjs/core-react/hocs/withOnOutsideClick.js +16 -11
- package/lib/cjs/core-react/hocs/withOnOutsideClick.js.map +1 -1
- package/lib/cjs/core-react/hocs/withTimeout.d.ts.map +1 -1
- package/lib/cjs/core-react/hocs/withTimeout.js +6 -8
- package/lib/cjs/core-react/hocs/withTimeout.js.map +1 -1
- package/lib/cjs/core-react/icons/ConditionalIconItem.d.ts +5 -1
- package/lib/cjs/core-react/icons/ConditionalIconItem.d.ts.map +1 -1
- package/lib/cjs/core-react/icons/ConditionalIconItem.js +26 -9
- package/lib/cjs/core-react/icons/ConditionalIconItem.js.map +1 -1
- package/lib/cjs/core-react/icons/IconComponent.d.ts +1 -1
- package/lib/cjs/core-react/icons/IconComponent.d.ts.map +1 -1
- package/lib/cjs/core-react/icons/IconComponent.js +20 -10
- package/lib/cjs/core-react/icons/IconComponent.js.map +1 -1
- package/lib/cjs/core-react/icons/IconComponent.scss +19 -20
- package/lib/cjs/core-react/icons/SvgPath.d.ts.map +1 -1
- package/lib/cjs/core-react/icons/SvgPath.js +4 -4
- package/lib/cjs/core-react/icons/SvgPath.js.map +1 -1
- package/lib/cjs/core-react/icons/SvgPath.scss +15 -15
- package/lib/cjs/core-react/icons/WebFontIcon.js +3 -3
- package/lib/cjs/core-react/icons/WebFontIcon.js.map +1 -1
- package/lib/cjs/core-react/icons/WebFontIcon.scss +17 -17
- package/lib/cjs/core-react/icons/classes.scss +18 -10
- package/lib/cjs/core-react/icons/index.scss +6 -6
- package/lib/cjs/core-react/icons/mixins.scss +25 -25
- package/lib/cjs/core-react/icons/variables.scss +12 -12
- package/lib/cjs/core-react/imagecheckbox/ImageCheckBox.d.ts.map +1 -1
- package/lib/cjs/core-react/imagecheckbox/ImageCheckBox.js +6 -4
- package/lib/cjs/core-react/imagecheckbox/ImageCheckBox.js.map +1 -1
- package/lib/cjs/core-react/imagecheckbox/ImageCheckBox.scss +54 -54
- package/lib/cjs/core-react/index.scss +21 -21
- package/lib/cjs/core-react/inputs/Input.d.ts +1 -1
- package/lib/cjs/core-react/inputs/Input.d.ts.map +1 -1
- package/lib/cjs/core-react/inputs/Input.js +6 -7
- package/lib/cjs/core-react/inputs/Input.js.map +1 -1
- package/lib/cjs/core-react/inputs/InputLabel.d.ts +1 -1
- package/lib/cjs/core-react/inputs/InputLabel.d.ts.map +1 -1
- package/lib/cjs/core-react/inputs/InputLabel.js +10 -13
- package/lib/cjs/core-react/inputs/InputLabel.js.map +1 -1
- package/lib/cjs/core-react/inputs/InputStatus.js +3 -3
- package/lib/cjs/core-react/inputs/InputStatus.js.map +1 -1
- package/lib/cjs/core-react/inputs/LabeledComponentProps.js +3 -3
- package/lib/cjs/core-react/inputs/LabeledComponentProps.js.map +1 -1
- package/lib/cjs/core-react/inputs/classes.scss +12 -8
- package/lib/cjs/core-react/inputs/iconinput/IconInput.d.ts +1 -1
- package/lib/cjs/core-react/inputs/iconinput/IconInput.d.ts.map +1 -1
- package/lib/cjs/core-react/inputs/iconinput/IconInput.js +3 -4
- package/lib/cjs/core-react/inputs/iconinput/IconInput.js.map +1 -1
- package/lib/cjs/core-react/inputs/iconinput/IconInput.scss +34 -35
- package/lib/cjs/core-react/inputs/index.scss +9 -9
- package/lib/cjs/core-react/inputs/input-label.scss +90 -90
- package/lib/cjs/core-react/inputs/input.scss +58 -58
- package/lib/cjs/core-react/inputs/numberinput/NumberInput.d.ts +2 -2
- package/lib/cjs/core-react/inputs/numberinput/NumberInput.d.ts.map +1 -1
- package/lib/cjs/core-react/inputs/numberinput/NumberInput.js +25 -16
- package/lib/cjs/core-react/inputs/numberinput/NumberInput.js.map +1 -1
- package/lib/cjs/core-react/inputs/numberinput/NumberInput.scss +88 -88
- package/lib/cjs/core-react/inputs/variables.scss +38 -38
- package/lib/cjs/core-react/layout-variables.scss +15 -17
- package/lib/cjs/core-react/listbox/Listbox.d.ts +2 -2
- package/lib/cjs/core-react/listbox/Listbox.d.ts.map +1 -1
- package/lib/cjs/core-react/listbox/Listbox.js +19 -12
- package/lib/cjs/core-react/listbox/Listbox.js.map +1 -1
- package/lib/cjs/core-react/listbox/Listbox.scss +54 -54
- package/lib/cjs/core-react/loading/LoadingBar.d.ts.map +1 -1
- package/lib/cjs/core-react/loading/LoadingBar.js +4 -4
- package/lib/cjs/core-react/loading/LoadingBar.js.map +1 -1
- package/lib/cjs/core-react/loading/LoadingBar.scss +29 -29
- package/lib/cjs/core-react/loading/LoadingPrompt.d.ts.map +1 -1
- package/lib/cjs/core-react/loading/LoadingPrompt.js +9 -9
- package/lib/cjs/core-react/loading/LoadingPrompt.js.map +1 -1
- package/lib/cjs/core-react/loading/LoadingPrompt.scss +33 -33
- package/lib/cjs/core-react/loading/LoadingSpinner.d.ts +3 -3
- package/lib/cjs/core-react/loading/LoadingSpinner.d.ts.map +1 -1
- package/lib/cjs/core-react/loading/LoadingSpinner.js +5 -5
- package/lib/cjs/core-react/loading/LoadingSpinner.js.map +1 -1
- package/lib/cjs/core-react/loading/LoadingSpinner.scss +26 -26
- package/lib/cjs/core-react/loading/LoadingStatus.d.ts.map +1 -1
- package/lib/cjs/core-react/loading/LoadingStatus.js +3 -3
- package/lib/cjs/core-react/loading/LoadingStatus.js.map +1 -1
- package/lib/cjs/core-react/loading/LoadingStatus.scss +20 -20
- package/lib/cjs/core-react/loading/index.scss +5 -5
- package/lib/cjs/core-react/loading/mixins.scss +57 -57
- package/lib/cjs/core-react/messagebox/MessageBox.d.ts +3 -3
- package/lib/cjs/core-react/messagebox/MessageBox.d.ts.map +1 -1
- package/lib/cjs/core-react/messagebox/MessageBox.js +5 -5
- package/lib/cjs/core-react/messagebox/MessageBox.js.map +1 -1
- package/lib/cjs/core-react/messagebox/MessageBox.scss +56 -56
- package/lib/cjs/core-react/notification/MessageRenderer.d.ts.map +1 -1
- package/lib/cjs/core-react/notification/MessageRenderer.js +18 -12
- package/lib/cjs/core-react/notification/MessageRenderer.js.map +1 -1
- package/lib/cjs/core-react/notification/MessageType.d.ts.map +1 -1
- package/lib/cjs/core-react/notification/MessageType.js +3 -3
- package/lib/cjs/core-react/notification/MessageType.js.map +1 -1
- package/lib/cjs/core-react/popup/Popup.d.ts.map +1 -1
- package/lib/cjs/core-react/popup/Popup.js +46 -23
- package/lib/cjs/core-react/popup/Popup.js.map +1 -1
- package/lib/cjs/core-react/popup/Popup.scss +240 -240
- package/lib/cjs/core-react/radialmenu/Annulus.d.ts.map +1 -1
- package/lib/cjs/core-react/radialmenu/Annulus.js +4 -4
- package/lib/cjs/core-react/radialmenu/Annulus.js.map +1 -1
- package/lib/cjs/core-react/radialmenu/RadialMenu.d.ts +2 -2
- package/lib/cjs/core-react/radialmenu/RadialMenu.d.ts.map +1 -1
- package/lib/cjs/core-react/radialmenu/RadialMenu.js +26 -11
- package/lib/cjs/core-react/radialmenu/RadialMenu.js.map +1 -1
- package/lib/cjs/core-react/radialmenu/RadialMenu.scss +55 -55
- package/lib/cjs/core-react/searchbox/SearchBox.d.ts.map +1 -1
- package/lib/cjs/core-react/searchbox/SearchBox.js +17 -7
- package/lib/cjs/core-react/searchbox/SearchBox.js.map +1 -1
- package/lib/cjs/core-react/searchbox/SearchBox.scss +47 -47
- package/lib/cjs/core-react/settings/SettingsContainer.d.ts +1 -1
- package/lib/cjs/core-react/settings/SettingsContainer.d.ts.map +1 -1
- package/lib/cjs/core-react/settings/SettingsContainer.js +54 -19
- package/lib/cjs/core-react/settings/SettingsContainer.js.map +1 -1
- package/lib/cjs/core-react/settings/SettingsContainer.scss +68 -68
- package/lib/cjs/core-react/settings/SettingsManager.d.ts +3 -3
- package/lib/cjs/core-react/settings/SettingsManager.d.ts.map +1 -1
- package/lib/cjs/core-react/settings/SettingsManager.js +7 -8
- package/lib/cjs/core-react/settings/SettingsManager.js.map +1 -1
- package/lib/cjs/core-react/style/baseline.scss +11 -11
- package/lib/cjs/core-react/style/breakpoints.scss +59 -41
- package/lib/cjs/core-react/style/colors.scss +77 -77
- package/lib/cjs/core-react/style/index.scss +10 -10
- package/lib/cjs/core-react/style/mixins.scss +23 -27
- package/lib/cjs/core-react/style/opacity.scss +16 -16
- package/lib/cjs/core-react/style/themecolors.scss +133 -123
- package/lib/cjs/core-react/tabs/Tabs.d.ts +4 -4
- package/lib/cjs/core-react/tabs/Tabs.d.ts.map +1 -1
- package/lib/cjs/core-react/tabs/Tabs.js +13 -11
- package/lib/cjs/core-react/tabs/Tabs.js.map +1 -1
- package/lib/cjs/core-react/tabs/VerticalTabs.d.ts.map +1 -1
- package/lib/cjs/core-react/tabs/VerticalTabs.js +3 -3
- package/lib/cjs/core-react/tabs/VerticalTabs.js.map +1 -1
- package/lib/cjs/core-react/tabs/classes.scss +9 -7
- package/lib/cjs/core-react/tabs/index.scss +5 -5
- package/lib/cjs/core-react/tabs/tabs.scss +96 -96
- package/lib/cjs/core-react/tabs/vertical.scss +51 -51
- package/lib/cjs/core-react/text/BlockText.js +4 -4
- package/lib/cjs/core-react/text/BlockText.js.map +1 -1
- package/lib/cjs/core-react/text/BodyText.js +4 -4
- package/lib/cjs/core-react/text/BodyText.js.map +1 -1
- package/lib/cjs/core-react/text/DisabledText.js +4 -4
- package/lib/cjs/core-react/text/DisabledText.js.map +1 -1
- package/lib/cjs/core-react/text/FilteredText.d.ts.map +1 -1
- package/lib/cjs/core-react/text/FilteredText.js +5 -5
- package/lib/cjs/core-react/text/FilteredText.js.map +1 -1
- package/lib/cjs/core-react/text/FilteredText.scss +10 -10
- package/lib/cjs/core-react/text/MutedText.js +4 -4
- package/lib/cjs/core-react/text/MutedText.js.map +1 -1
- package/lib/cjs/core-react/text/StyledText.js +3 -3
- package/lib/cjs/core-react/text/StyledText.js.map +1 -1
- package/lib/cjs/core-react/text/TextProps.d.ts.map +1 -1
- package/lib/cjs/core-react/text/TextProps.js +3 -3
- package/lib/cjs/core-react/text/TextProps.js.map +1 -1
- package/lib/cjs/core-react/text/block.scss +15 -15
- package/lib/cjs/core-react/text/body.scss +13 -13
- package/lib/cjs/core-react/text/classes.scss +18 -10
- package/lib/cjs/core-react/text/disabled.scss +9 -10
- package/lib/cjs/core-react/text/index.scss +10 -10
- package/lib/cjs/core-react/text/mixins.scss +24 -24
- package/lib/cjs/core-react/text/muted.scss +9 -10
- package/lib/cjs/core-react/tree/Branch.d.ts.map +1 -1
- package/lib/cjs/core-react/tree/Branch.js +3 -3
- package/lib/cjs/core-react/tree/Branch.js.map +1 -1
- package/lib/cjs/core-react/tree/Branch.scss +13 -13
- package/lib/cjs/core-react/tree/ExpansionToggle.d.ts.map +1 -1
- package/lib/cjs/core-react/tree/ExpansionToggle.js +3 -3
- package/lib/cjs/core-react/tree/ExpansionToggle.js.map +1 -1
- package/lib/cjs/core-react/tree/ExpansionToggle.scss +32 -32
- package/lib/cjs/core-react/tree/Node.d.ts.map +1 -1
- package/lib/cjs/core-react/tree/Node.js +11 -8
- package/lib/cjs/core-react/tree/Node.js.map +1 -1
- package/lib/cjs/core-react/tree/Node.scss +68 -68
- package/lib/cjs/core-react/tree/Placeholder.js +5 -5
- package/lib/cjs/core-react/tree/Placeholder.js.map +1 -1
- package/lib/cjs/core-react/tree/Placeholder.scss +17 -17
- package/lib/cjs/core-react/tree/Tree.d.ts.map +1 -1
- package/lib/cjs/core-react/tree/Tree.js +20 -11
- package/lib/cjs/core-react/tree/Tree.js.map +1 -1
- package/lib/cjs/core-react/tree/Tree.scss +21 -21
- package/lib/cjs/core-react/uistate/LocalStateStorage.d.ts.map +1 -1
- package/lib/cjs/core-react/uistate/LocalStateStorage.js +7 -4
- package/lib/cjs/core-react/uistate/LocalStateStorage.js.map +1 -1
- package/lib/cjs/core-react/uistate/UiStateEntry.d.ts.map +1 -1
- package/lib/cjs/core-react/uistate/UiStateEntry.js +3 -3
- package/lib/cjs/core-react/uistate/UiStateEntry.js.map +1 -1
- package/lib/cjs/core-react/uistate/UiStateStorage.d.ts.map +1 -1
- package/lib/cjs/core-react/uistate/UiStateStorage.js +3 -3
- package/lib/cjs/core-react/uistate/UiStateStorage.js.map +1 -1
- package/lib/cjs/core-react/utils/IconHelper.d.ts +3 -1
- package/lib/cjs/core-react/utils/IconHelper.d.ts.map +1 -1
- package/lib/cjs/core-react/utils/IconHelper.js +35 -6
- package/lib/cjs/core-react/utils/IconHelper.js.map +1 -1
- package/lib/cjs/core-react/utils/IconWebComponent.d.ts.map +1 -1
- package/lib/cjs/core-react/utils/IconWebComponent.js +71 -41
- package/lib/cjs/core-react/utils/IconWebComponent.js.map +1 -1
- package/lib/cjs/core-react/utils/Point.d.ts.map +1 -1
- package/lib/cjs/core-react/utils/Point.js +3 -3
- package/lib/cjs/core-react/utils/Point.js.map +1 -1
- package/lib/cjs/core-react/utils/Props.d.ts.map +1 -1
- package/lib/cjs/core-react/utils/Props.js +3 -3
- package/lib/cjs/core-react/utils/Props.js.map +1 -1
- package/lib/cjs/core-react/utils/Rectangle.d.ts.map +1 -1
- package/lib/cjs/core-react/utils/Rectangle.js +15 -7
- package/lib/cjs/core-react/utils/Rectangle.js.map +1 -1
- package/lib/cjs/core-react/utils/ScrollPositionMaintainer.d.ts.map +1 -1
- package/lib/cjs/core-react/utils/ScrollPositionMaintainer.js +4 -2
- package/lib/cjs/core-react/utils/ScrollPositionMaintainer.js.map +1 -1
- package/lib/cjs/core-react/utils/Size.d.ts.map +1 -1
- package/lib/cjs/core-react/utils/Size.js +4 -5
- package/lib/cjs/core-react/utils/Size.js.map +1 -1
- package/lib/cjs/core-react/utils/Timer.d.ts.map +1 -1
- package/lib/cjs/core-react/utils/Timer.js +3 -3
- package/lib/cjs/core-react/utils/Timer.js.map +1 -1
- package/lib/cjs/core-react/utils/UiGeometry.d.ts.map +1 -1
- package/lib/cjs/core-react/utils/UiGeometry.js +9 -5
- package/lib/cjs/core-react/utils/UiGeometry.js.map +1 -1
- package/lib/cjs/core-react/utils/flattenChildren.js +3 -3
- package/lib/cjs/core-react/utils/flattenChildren.js.map +1 -1
- package/lib/cjs/core-react/utils/getBestBWContrastColor.js +5 -5
- package/lib/cjs/core-react/utils/getBestBWContrastColor.js.map +1 -1
- package/lib/cjs/core-react/utils/getCssVariable.d.ts.map +1 -1
- package/lib/cjs/core-react/utils/getCssVariable.js +3 -3
- package/lib/cjs/core-react/utils/getCssVariable.js.map +1 -1
- package/lib/cjs/core-react/utils/getDisplayName.d.ts.map +1 -1
- package/lib/cjs/core-react/utils/getDisplayName.js +3 -3
- package/lib/cjs/core-react/utils/getDisplayName.js.map +1 -1
- package/lib/cjs/core-react/utils/getUserColor.d.ts.map +1 -1
- package/lib/cjs/core-react/utils/getUserColor.js +5 -4
- package/lib/cjs/core-react/utils/getUserColor.js.map +1 -1
- package/lib/cjs/core-react/utils/hooks/ResizeObserverPolyfill.d.ts.map +1 -1
- package/lib/cjs/core-react/utils/hooks/ResizeObserverPolyfill.js +4 -4
- package/lib/cjs/core-react/utils/hooks/ResizeObserverPolyfill.js.map +1 -1
- package/lib/cjs/core-react/utils/hooks/useCrossOriginPopup.d.ts.map +1 -1
- package/lib/cjs/core-react/utils/hooks/useCrossOriginPopup.js +21 -9
- package/lib/cjs/core-react/utils/hooks/useCrossOriginPopup.js.map +1 -1
- package/lib/cjs/core-react/utils/hooks/useDisposable.d.ts.map +1 -1
- package/lib/cjs/core-react/utils/hooks/useDisposable.js +3 -3
- package/lib/cjs/core-react/utils/hooks/useDisposable.js.map +1 -1
- package/lib/cjs/core-react/utils/hooks/useEffectSkipFirst.d.ts.map +1 -1
- package/lib/cjs/core-react/utils/hooks/useEffectSkipFirst.js +3 -3
- package/lib/cjs/core-react/utils/hooks/useEffectSkipFirst.js.map +1 -1
- package/lib/cjs/core-react/utils/hooks/useEventListener.d.ts.map +1 -1
- package/lib/cjs/core-react/utils/hooks/useEventListener.js +3 -3
- package/lib/cjs/core-react/utils/hooks/useEventListener.js.map +1 -1
- package/lib/cjs/core-react/utils/hooks/useInterval.d.ts.map +1 -1
- package/lib/cjs/core-react/utils/hooks/useInterval.js +6 -4
- package/lib/cjs/core-react/utils/hooks/useInterval.js.map +1 -1
- package/lib/cjs/core-react/utils/hooks/useLifecycleLogging.d.ts.map +1 -1
- package/lib/cjs/core-react/utils/hooks/useLifecycleLogging.js +7 -4
- package/lib/cjs/core-react/utils/hooks/useLifecycleLogging.js.map +1 -1
- package/lib/cjs/core-react/utils/hooks/useOnOutsideClick.d.ts.map +1 -1
- package/lib/cjs/core-react/utils/hooks/useOnOutsideClick.js +15 -6
- package/lib/cjs/core-react/utils/hooks/useOnOutsideClick.js.map +1 -1
- package/lib/cjs/core-react/utils/hooks/useProximityToMouse.js +3 -3
- package/lib/cjs/core-react/utils/hooks/useProximityToMouse.js.map +1 -1
- package/lib/cjs/core-react/utils/hooks/useRefEffect.d.ts +1 -1
- package/lib/cjs/core-react/utils/hooks/useRefEffect.d.ts.map +1 -1
- package/lib/cjs/core-react/utils/hooks/useRefEffect.js +3 -3
- package/lib/cjs/core-react/utils/hooks/useRefEffect.js.map +1 -1
- package/lib/cjs/core-react/utils/hooks/useRefState.js +3 -3
- package/lib/cjs/core-react/utils/hooks/useRefState.js.map +1 -1
- package/lib/cjs/core-react/utils/hooks/useRefs.d.ts.map +1 -1
- package/lib/cjs/core-react/utils/hooks/useRefs.js +8 -6
- package/lib/cjs/core-react/utils/hooks/useRefs.js.map +1 -1
- package/lib/cjs/core-react/utils/hooks/useResizeObserver.d.ts +8 -8
- package/lib/cjs/core-react/utils/hooks/useResizeObserver.d.ts.map +1 -1
- package/lib/cjs/core-react/utils/hooks/useResizeObserver.js +37 -20
- package/lib/cjs/core-react/utils/hooks/useResizeObserver.js.map +1 -1
- package/lib/cjs/core-react/utils/hooks/useTargeted.d.ts.map +1 -1
- package/lib/cjs/core-react/utils/hooks/useTargeted.js +7 -4
- package/lib/cjs/core-react/utils/hooks/useTargeted.js.map +1 -1
- package/lib/cjs/core-react/utils/hooks/useThrottledFn.js +3 -3
- package/lib/cjs/core-react/utils/hooks/useThrottledFn.js.map +1 -1
- package/lib/cjs/core-react/utils/hooks/useWidgetOpacityContext.d.ts.map +1 -1
- package/lib/cjs/core-react/utils/hooks/useWidgetOpacityContext.js +3 -4
- package/lib/cjs/core-react/utils/hooks/useWidgetOpacityContext.js.map +1 -1
- package/lib/cjs/core-react/utils/isPromiseLike.d.ts.map +1 -1
- package/lib/cjs/core-react/utils/isPromiseLike.js +6 -4
- package/lib/cjs/core-react/utils/isPromiseLike.js.map +1 -1
- package/lib/cjs/core-react/utils/reuseOrCreatePromise.d.ts +14 -0
- package/lib/cjs/core-react/utils/reuseOrCreatePromise.d.ts.map +1 -0
- package/lib/cjs/core-react/utils/reuseOrCreatePromise.js +33 -0
- package/lib/cjs/core-react/utils/reuseOrCreatePromise.js.map +1 -0
- package/lib/cjs/core-react/utils/shallowDiffers.d.ts.map +1 -1
- package/lib/cjs/core-react/utils/shallowDiffers.js +3 -3
- package/lib/cjs/core-react/utils/shallowDiffers.js.map +1 -1
- package/lib/cjs/core-react/utils/typeUtils.js +3 -3
- package/lib/cjs/core-react/utils/typeUtils.js.map +1 -1
- package/lib/cjs/core-react.d.ts +3 -3
- package/lib/cjs/core-react.d.ts.map +1 -1
- package/lib/cjs/core-react.js +3 -3
- package/lib/cjs/core-react.js.map +1 -1
- package/lib/esm/core-react/UiCore.d.ts.map +1 -1
- package/lib/esm/core-react/UiCore.js +9 -5
- package/lib/esm/core-react/UiCore.js.map +1 -1
- package/lib/esm/core-react/_geometry.scss +70 -70
- package/lib/esm/core-react/_helpers.scss +52 -51
- package/lib/esm/core-react/_math.scss +13 -13
- package/lib/esm/core-react/_scrollbar.scss +55 -51
- package/lib/esm/core-react/_typography.scss +44 -44
- package/lib/esm/core-react/_z-index.scss +47 -65
- package/lib/esm/core-react/autosuggest/AutoSuggest.d.ts +1 -1
- package/lib/esm/core-react/autosuggest/AutoSuggest.d.ts.map +1 -1
- package/lib/esm/core-react/autosuggest/AutoSuggest.js +14 -15
- package/lib/esm/core-react/autosuggest/AutoSuggest.js.map +1 -1
- package/lib/esm/core-react/autosuggest/AutoSuggest.scss +79 -79
- package/lib/esm/core-react/badge/Badge.d.ts +1 -1
- package/lib/esm/core-react/badge/Badge.d.ts.map +1 -1
- package/lib/esm/core-react/badge/Badge.js +3 -3
- package/lib/esm/core-react/badge/Badge.js.map +1 -1
- package/lib/esm/core-react/badge/Badge.scss +13 -13
- package/lib/esm/core-react/badge/BadgeUtilities.d.ts.map +1 -1
- package/lib/esm/core-react/badge/BadgeUtilities.js +3 -3
- package/lib/esm/core-react/badge/BadgeUtilities.js.map +1 -1
- package/lib/esm/core-react/badge/BetaBadge.d.ts.map +1 -1
- package/lib/esm/core-react/badge/BetaBadge.js +3 -3
- package/lib/esm/core-react/badge/BetaBadge.js.map +1 -1
- package/lib/esm/core-react/badge/NewBadge.d.ts.map +1 -1
- package/lib/esm/core-react/badge/NewBadge.js +4 -4
- package/lib/esm/core-react/badge/NewBadge.js.map +1 -1
- package/lib/esm/core-react/badge/NewBadge.scss +9 -9
- package/lib/esm/core-react/base/Centered.js +3 -3
- package/lib/esm/core-react/base/Centered.js.map +1 -1
- package/lib/esm/core-react/base/Div.d.ts.map +1 -1
- package/lib/esm/core-react/base/Div.js +3 -3
- package/lib/esm/core-react/base/Div.js.map +1 -1
- package/lib/esm/core-react/base/DivWithOutsideClick.d.ts.map +1 -1
- package/lib/esm/core-react/base/DivWithOutsideClick.js +4 -4
- package/lib/esm/core-react/base/DivWithOutsideClick.js.map +1 -1
- package/lib/esm/core-react/base/FillCentered.js +3 -3
- package/lib/esm/core-react/base/FillCentered.js.map +1 -1
- package/lib/esm/core-react/base/FlexWrapContainer.js +3 -3
- package/lib/esm/core-react/base/FlexWrapContainer.js.map +1 -1
- package/lib/esm/core-react/base/Gap.d.ts.map +1 -1
- package/lib/esm/core-react/base/Gap.js +4 -4
- package/lib/esm/core-react/base/Gap.js.map +1 -1
- package/lib/esm/core-react/base/PointerEvents.js +3 -3
- package/lib/esm/core-react/base/PointerEvents.js.map +1 -1
- package/lib/esm/core-react/base/ScrollView.js +3 -3
- package/lib/esm/core-react/base/ScrollView.js.map +1 -1
- package/lib/esm/core-react/base/base.scss +42 -42
- package/lib/esm/core-react/base/classes.scss +27 -13
- package/lib/esm/core-react/base/index.scss +5 -5
- package/lib/esm/core-react/button/UnderlinedButton.d.ts.map +1 -1
- package/lib/esm/core-react/button/UnderlinedButton.js +3 -3
- package/lib/esm/core-react/button/UnderlinedButton.js.map +1 -1
- package/lib/esm/core-react/button/UnderlinedButton.scss +32 -33
- package/lib/esm/core-react/checklistbox/CheckListBox.d.ts.map +1 -1
- package/lib/esm/core-react/checklistbox/CheckListBox.js +4 -4
- package/lib/esm/core-react/checklistbox/CheckListBox.js.map +1 -1
- package/lib/esm/core-react/checklistbox/CheckListBox.scss +22 -22
- package/lib/esm/core-react/classes.scss +11 -11
- package/lib/esm/core-react/colorthemes.scss +61 -61
- package/lib/esm/core-react/colorvariables.scss +131 -131
- package/lib/esm/core-react/contextmenu/ContextMenu.d.ts +7 -7
- package/lib/esm/core-react/contextmenu/ContextMenu.d.ts.map +1 -1
- package/lib/esm/core-react/contextmenu/ContextMenu.js +42 -23
- package/lib/esm/core-react/contextmenu/ContextMenu.js.map +1 -1
- package/lib/esm/core-react/contextmenu/ContextMenu.scss +236 -236
- package/lib/esm/core-react/contextmenu/ContextMenuDirection.d.ts.map +1 -1
- package/lib/esm/core-react/contextmenu/ContextMenuDirection.js +3 -3
- package/lib/esm/core-react/contextmenu/ContextMenuDirection.js.map +1 -1
- package/lib/esm/core-react/contextmenu/ContextMenuDivider.d.ts +1 -1
- package/lib/esm/core-react/contextmenu/ContextMenuDivider.d.ts.map +1 -1
- package/lib/esm/core-react/contextmenu/ContextMenuDivider.js +3 -3
- package/lib/esm/core-react/contextmenu/ContextMenuDivider.js.map +1 -1
- package/lib/esm/core-react/contextmenu/ContextMenuItem.d.ts +1 -1
- package/lib/esm/core-react/contextmenu/ContextMenuItem.d.ts.map +1 -1
- package/lib/esm/core-react/contextmenu/ContextMenuItem.js +16 -12
- package/lib/esm/core-react/contextmenu/ContextMenuItem.js.map +1 -1
- package/lib/esm/core-react/contextmenu/ContextSubMenu.d.ts +2 -2
- package/lib/esm/core-react/contextmenu/ContextSubMenu.d.ts.map +1 -1
- package/lib/esm/core-react/contextmenu/ContextSubMenu.js +37 -15
- package/lib/esm/core-react/contextmenu/ContextSubMenu.js.map +1 -1
- package/lib/esm/core-react/contextmenu/GlobalContextMenu.d.ts.map +1 -1
- package/lib/esm/core-react/contextmenu/GlobalContextMenu.js +11 -7
- package/lib/esm/core-react/contextmenu/GlobalContextMenu.js.map +1 -1
- package/lib/esm/core-react/contextmenu/PopupContextMenu.d.ts.map +1 -1
- package/lib/esm/core-react/contextmenu/PopupContextMenu.js +3 -3
- package/lib/esm/core-react/contextmenu/PopupContextMenu.js.map +1 -1
- package/lib/esm/core-react/contextmenu/TildeFinder.d.ts.map +1 -1
- package/lib/esm/core-react/contextmenu/TildeFinder.js +15 -7
- package/lib/esm/core-react/contextmenu/TildeFinder.js.map +1 -1
- package/lib/esm/core-react/dialog/Dialog.d.ts +6 -5
- package/lib/esm/core-react/dialog/Dialog.d.ts.map +1 -1
- package/lib/esm/core-react/dialog/Dialog.js +94 -86
- package/lib/esm/core-react/dialog/Dialog.js.map +1 -1
- package/lib/esm/core-react/dialog/Dialog.scss +245 -245
- package/lib/esm/core-react/dialog/GlobalDialog.d.ts.map +1 -1
- package/lib/esm/core-react/dialog/GlobalDialog.js +10 -6
- package/lib/esm/core-react/dialog/GlobalDialog.js.map +1 -1
- package/lib/esm/core-react/dialog/SimpleDialog.d.ts +68 -0
- package/lib/esm/core-react/dialog/SimpleDialog.d.ts.map +1 -0
- package/lib/esm/core-react/dialog/SimpleDialog.js +47 -0
- package/lib/esm/core-react/dialog/SimpleDialog.js.map +1 -0
- package/lib/esm/core-react/elementseparator/ElementSeparator.d.ts.map +1 -1
- package/lib/esm/core-react/elementseparator/ElementSeparator.js +14 -8
- package/lib/esm/core-react/elementseparator/ElementSeparator.js.map +1 -1
- package/lib/esm/core-react/elementseparator/ElementSeparator.scss +94 -85
- package/lib/esm/core-react/enums/Alignment.js +3 -3
- package/lib/esm/core-react/enums/Alignment.js.map +1 -1
- package/lib/esm/core-react/enums/CheckBoxState.js +3 -3
- package/lib/esm/core-react/enums/CheckBoxState.js.map +1 -1
- package/lib/esm/core-react/enums/Orientation.js +3 -3
- package/lib/esm/core-react/enums/Orientation.js.map +1 -1
- package/lib/esm/core-react/enums/SortDirection.js +3 -3
- package/lib/esm/core-react/enums/SortDirection.js.map +1 -1
- package/lib/esm/core-react/enums/TimeFormat.js +3 -3
- package/lib/esm/core-react/enums/TimeFormat.js.map +1 -1
- package/lib/esm/core-react/expandable/ExpandableList.d.ts +1 -1
- package/lib/esm/core-react/expandable/ExpandableList.d.ts.map +1 -1
- package/lib/esm/core-react/expandable/ExpandableList.js +8 -5
- package/lib/esm/core-react/expandable/ExpandableList.js.map +1 -1
- package/lib/esm/core-react/expandable/ExpandableList.scss +9 -9
- package/lib/esm/core-react/expandable/classes.scss +9 -7
- package/lib/esm/core-react/expandable/index.scss +5 -5
- package/lib/esm/core-react/expandable/list.scss +35 -35
- package/lib/esm/core-react/focus/ItemKeyboardNavigator.d.ts.map +1 -1
- package/lib/esm/core-react/focus/ItemKeyboardNavigator.js +38 -15
- package/lib/esm/core-react/focus/ItemKeyboardNavigator.js.map +1 -1
- package/lib/esm/core-react/focustrap/FocusTrap.d.ts.map +1 -1
- package/lib/esm/core-react/focustrap/FocusTrap.js +33 -16
- package/lib/esm/core-react/focustrap/FocusTrap.js.map +1 -1
- package/lib/esm/core-react/hocs/withIsPressed.d.ts.map +1 -1
- package/lib/esm/core-react/hocs/withIsPressed.js +4 -7
- package/lib/esm/core-react/hocs/withIsPressed.js.map +1 -1
- package/lib/esm/core-react/hocs/withOnOutsideClick.d.ts.map +1 -1
- package/lib/esm/core-react/hocs/withOnOutsideClick.js +16 -11
- package/lib/esm/core-react/hocs/withOnOutsideClick.js.map +1 -1
- package/lib/esm/core-react/hocs/withTimeout.d.ts.map +1 -1
- package/lib/esm/core-react/hocs/withTimeout.js +6 -8
- package/lib/esm/core-react/hocs/withTimeout.js.map +1 -1
- package/lib/esm/core-react/icons/ConditionalIconItem.d.ts +5 -1
- package/lib/esm/core-react/icons/ConditionalIconItem.d.ts.map +1 -1
- package/lib/esm/core-react/icons/ConditionalIconItem.js +26 -9
- package/lib/esm/core-react/icons/ConditionalIconItem.js.map +1 -1
- package/lib/esm/core-react/icons/IconComponent.d.ts +1 -1
- package/lib/esm/core-react/icons/IconComponent.d.ts.map +1 -1
- package/lib/esm/core-react/icons/IconComponent.js +21 -11
- package/lib/esm/core-react/icons/IconComponent.js.map +1 -1
- package/lib/esm/core-react/icons/IconComponent.scss +19 -20
- package/lib/esm/core-react/icons/SvgPath.d.ts.map +1 -1
- package/lib/esm/core-react/icons/SvgPath.js +4 -4
- package/lib/esm/core-react/icons/SvgPath.js.map +1 -1
- package/lib/esm/core-react/icons/SvgPath.scss +15 -15
- package/lib/esm/core-react/icons/WebFontIcon.js +3 -3
- package/lib/esm/core-react/icons/WebFontIcon.js.map +1 -1
- package/lib/esm/core-react/icons/WebFontIcon.scss +17 -17
- package/lib/esm/core-react/icons/classes.scss +18 -10
- package/lib/esm/core-react/icons/index.scss +6 -6
- package/lib/esm/core-react/icons/mixins.scss +25 -25
- package/lib/esm/core-react/icons/variables.scss +12 -12
- package/lib/esm/core-react/imagecheckbox/ImageCheckBox.d.ts.map +1 -1
- package/lib/esm/core-react/imagecheckbox/ImageCheckBox.js +6 -4
- package/lib/esm/core-react/imagecheckbox/ImageCheckBox.js.map +1 -1
- package/lib/esm/core-react/imagecheckbox/ImageCheckBox.scss +54 -54
- package/lib/esm/core-react/index.scss +21 -21
- package/lib/esm/core-react/inputs/Input.d.ts +1 -1
- package/lib/esm/core-react/inputs/Input.d.ts.map +1 -1
- package/lib/esm/core-react/inputs/Input.js +6 -7
- package/lib/esm/core-react/inputs/Input.js.map +1 -1
- package/lib/esm/core-react/inputs/InputLabel.d.ts +1 -1
- package/lib/esm/core-react/inputs/InputLabel.d.ts.map +1 -1
- package/lib/esm/core-react/inputs/InputLabel.js +11 -14
- package/lib/esm/core-react/inputs/InputLabel.js.map +1 -1
- package/lib/esm/core-react/inputs/InputStatus.js +3 -3
- package/lib/esm/core-react/inputs/InputStatus.js.map +1 -1
- package/lib/esm/core-react/inputs/LabeledComponentProps.js +3 -3
- package/lib/esm/core-react/inputs/LabeledComponentProps.js.map +1 -1
- package/lib/esm/core-react/inputs/classes.scss +12 -8
- package/lib/esm/core-react/inputs/iconinput/IconInput.d.ts +1 -1
- package/lib/esm/core-react/inputs/iconinput/IconInput.d.ts.map +1 -1
- package/lib/esm/core-react/inputs/iconinput/IconInput.js +3 -4
- package/lib/esm/core-react/inputs/iconinput/IconInput.js.map +1 -1
- package/lib/esm/core-react/inputs/iconinput/IconInput.scss +34 -35
- package/lib/esm/core-react/inputs/index.scss +9 -9
- package/lib/esm/core-react/inputs/input-label.scss +90 -90
- package/lib/esm/core-react/inputs/input.scss +58 -58
- package/lib/esm/core-react/inputs/numberinput/NumberInput.d.ts +2 -2
- package/lib/esm/core-react/inputs/numberinput/NumberInput.d.ts.map +1 -1
- package/lib/esm/core-react/inputs/numberinput/NumberInput.js +26 -17
- package/lib/esm/core-react/inputs/numberinput/NumberInput.js.map +1 -1
- package/lib/esm/core-react/inputs/numberinput/NumberInput.scss +88 -88
- package/lib/esm/core-react/inputs/variables.scss +38 -38
- package/lib/esm/core-react/layout-variables.scss +15 -17
- package/lib/esm/core-react/listbox/Listbox.d.ts +2 -2
- package/lib/esm/core-react/listbox/Listbox.d.ts.map +1 -1
- package/lib/esm/core-react/listbox/Listbox.js +19 -12
- package/lib/esm/core-react/listbox/Listbox.js.map +1 -1
- package/lib/esm/core-react/listbox/Listbox.scss +54 -54
- package/lib/esm/core-react/loading/LoadingBar.d.ts.map +1 -1
- package/lib/esm/core-react/loading/LoadingBar.js +4 -4
- package/lib/esm/core-react/loading/LoadingBar.js.map +1 -1
- package/lib/esm/core-react/loading/LoadingBar.scss +29 -29
- package/lib/esm/core-react/loading/LoadingPrompt.d.ts.map +1 -1
- package/lib/esm/core-react/loading/LoadingPrompt.js +9 -9
- package/lib/esm/core-react/loading/LoadingPrompt.js.map +1 -1
- package/lib/esm/core-react/loading/LoadingPrompt.scss +33 -33
- package/lib/esm/core-react/loading/LoadingSpinner.d.ts +3 -3
- package/lib/esm/core-react/loading/LoadingSpinner.d.ts.map +1 -1
- package/lib/esm/core-react/loading/LoadingSpinner.js +5 -5
- package/lib/esm/core-react/loading/LoadingSpinner.js.map +1 -1
- package/lib/esm/core-react/loading/LoadingSpinner.scss +26 -26
- package/lib/esm/core-react/loading/LoadingStatus.d.ts.map +1 -1
- package/lib/esm/core-react/loading/LoadingStatus.js +3 -3
- package/lib/esm/core-react/loading/LoadingStatus.js.map +1 -1
- package/lib/esm/core-react/loading/LoadingStatus.scss +20 -20
- package/lib/esm/core-react/loading/index.scss +5 -5
- package/lib/esm/core-react/loading/mixins.scss +57 -57
- package/lib/esm/core-react/messagebox/MessageBox.d.ts +3 -3
- package/lib/esm/core-react/messagebox/MessageBox.d.ts.map +1 -1
- package/lib/esm/core-react/messagebox/MessageBox.js +6 -6
- package/lib/esm/core-react/messagebox/MessageBox.js.map +1 -1
- package/lib/esm/core-react/messagebox/MessageBox.scss +56 -56
- package/lib/esm/core-react/notification/MessageRenderer.d.ts.map +1 -1
- package/lib/esm/core-react/notification/MessageRenderer.js +18 -12
- package/lib/esm/core-react/notification/MessageRenderer.js.map +1 -1
- package/lib/esm/core-react/notification/MessageType.d.ts.map +1 -1
- package/lib/esm/core-react/notification/MessageType.js +3 -3
- package/lib/esm/core-react/notification/MessageType.js.map +1 -1
- package/lib/esm/core-react/popup/Popup.d.ts.map +1 -1
- package/lib/esm/core-react/popup/Popup.js +46 -23
- package/lib/esm/core-react/popup/Popup.js.map +1 -1
- package/lib/esm/core-react/popup/Popup.scss +240 -240
- package/lib/esm/core-react/radialmenu/Annulus.d.ts.map +1 -1
- package/lib/esm/core-react/radialmenu/Annulus.js +4 -4
- package/lib/esm/core-react/radialmenu/Annulus.js.map +1 -1
- package/lib/esm/core-react/radialmenu/RadialMenu.d.ts +2 -2
- package/lib/esm/core-react/radialmenu/RadialMenu.d.ts.map +1 -1
- package/lib/esm/core-react/radialmenu/RadialMenu.js +26 -11
- package/lib/esm/core-react/radialmenu/RadialMenu.js.map +1 -1
- package/lib/esm/core-react/radialmenu/RadialMenu.scss +55 -55
- package/lib/esm/core-react/searchbox/SearchBox.d.ts.map +1 -1
- package/lib/esm/core-react/searchbox/SearchBox.js +17 -7
- package/lib/esm/core-react/searchbox/SearchBox.js.map +1 -1
- package/lib/esm/core-react/searchbox/SearchBox.scss +47 -47
- package/lib/esm/core-react/settings/SettingsContainer.d.ts +1 -1
- package/lib/esm/core-react/settings/SettingsContainer.d.ts.map +1 -1
- package/lib/esm/core-react/settings/SettingsContainer.js +54 -19
- package/lib/esm/core-react/settings/SettingsContainer.js.map +1 -1
- package/lib/esm/core-react/settings/SettingsContainer.scss +68 -68
- package/lib/esm/core-react/settings/SettingsManager.d.ts +3 -3
- package/lib/esm/core-react/settings/SettingsManager.d.ts.map +1 -1
- package/lib/esm/core-react/settings/SettingsManager.js +7 -8
- package/lib/esm/core-react/settings/SettingsManager.js.map +1 -1
- package/lib/esm/core-react/style/baseline.scss +11 -11
- package/lib/esm/core-react/style/breakpoints.scss +59 -41
- package/lib/esm/core-react/style/colors.scss +77 -77
- package/lib/esm/core-react/style/index.scss +10 -10
- package/lib/esm/core-react/style/mixins.scss +23 -27
- package/lib/esm/core-react/style/opacity.scss +16 -16
- package/lib/esm/core-react/style/themecolors.scss +133 -123
- package/lib/esm/core-react/tabs/Tabs.d.ts +4 -4
- package/lib/esm/core-react/tabs/Tabs.d.ts.map +1 -1
- package/lib/esm/core-react/tabs/Tabs.js +13 -11
- package/lib/esm/core-react/tabs/Tabs.js.map +1 -1
- package/lib/esm/core-react/tabs/VerticalTabs.d.ts.map +1 -1
- package/lib/esm/core-react/tabs/VerticalTabs.js +3 -3
- package/lib/esm/core-react/tabs/VerticalTabs.js.map +1 -1
- package/lib/esm/core-react/tabs/classes.scss +9 -7
- package/lib/esm/core-react/tabs/index.scss +5 -5
- package/lib/esm/core-react/tabs/tabs.scss +96 -96
- package/lib/esm/core-react/tabs/vertical.scss +51 -51
- package/lib/esm/core-react/text/BlockText.js +4 -4
- package/lib/esm/core-react/text/BlockText.js.map +1 -1
- package/lib/esm/core-react/text/BodyText.js +4 -4
- package/lib/esm/core-react/text/BodyText.js.map +1 -1
- package/lib/esm/core-react/text/DisabledText.js +4 -4
- package/lib/esm/core-react/text/DisabledText.js.map +1 -1
- package/lib/esm/core-react/text/FilteredText.d.ts.map +1 -1
- package/lib/esm/core-react/text/FilteredText.js +5 -5
- package/lib/esm/core-react/text/FilteredText.js.map +1 -1
- package/lib/esm/core-react/text/FilteredText.scss +10 -10
- package/lib/esm/core-react/text/MutedText.js +4 -4
- package/lib/esm/core-react/text/MutedText.js.map +1 -1
- package/lib/esm/core-react/text/StyledText.js +3 -3
- package/lib/esm/core-react/text/StyledText.js.map +1 -1
- package/lib/esm/core-react/text/TextProps.d.ts.map +1 -1
- package/lib/esm/core-react/text/TextProps.js +3 -3
- package/lib/esm/core-react/text/TextProps.js.map +1 -1
- package/lib/esm/core-react/text/block.scss +15 -15
- package/lib/esm/core-react/text/body.scss +13 -13
- package/lib/esm/core-react/text/classes.scss +18 -10
- package/lib/esm/core-react/text/disabled.scss +9 -10
- package/lib/esm/core-react/text/index.scss +10 -10
- package/lib/esm/core-react/text/mixins.scss +24 -24
- package/lib/esm/core-react/text/muted.scss +9 -10
- package/lib/esm/core-react/tree/Branch.d.ts.map +1 -1
- package/lib/esm/core-react/tree/Branch.js +3 -3
- package/lib/esm/core-react/tree/Branch.js.map +1 -1
- package/lib/esm/core-react/tree/Branch.scss +13 -13
- package/lib/esm/core-react/tree/ExpansionToggle.d.ts.map +1 -1
- package/lib/esm/core-react/tree/ExpansionToggle.js +3 -3
- package/lib/esm/core-react/tree/ExpansionToggle.js.map +1 -1
- package/lib/esm/core-react/tree/ExpansionToggle.scss +32 -32
- package/lib/esm/core-react/tree/Node.d.ts.map +1 -1
- package/lib/esm/core-react/tree/Node.js +11 -8
- package/lib/esm/core-react/tree/Node.js.map +1 -1
- package/lib/esm/core-react/tree/Node.scss +68 -68
- package/lib/esm/core-react/tree/Placeholder.js +5 -5
- package/lib/esm/core-react/tree/Placeholder.js.map +1 -1
- package/lib/esm/core-react/tree/Placeholder.scss +17 -17
- package/lib/esm/core-react/tree/Tree.d.ts.map +1 -1
- package/lib/esm/core-react/tree/Tree.js +20 -11
- package/lib/esm/core-react/tree/Tree.js.map +1 -1
- package/lib/esm/core-react/tree/Tree.scss +21 -21
- package/lib/esm/core-react/uistate/LocalStateStorage.d.ts.map +1 -1
- package/lib/esm/core-react/uistate/LocalStateStorage.js +7 -4
- package/lib/esm/core-react/uistate/LocalStateStorage.js.map +1 -1
- package/lib/esm/core-react/uistate/UiStateEntry.d.ts.map +1 -1
- package/lib/esm/core-react/uistate/UiStateEntry.js +3 -3
- package/lib/esm/core-react/uistate/UiStateEntry.js.map +1 -1
- package/lib/esm/core-react/uistate/UiStateStorage.d.ts.map +1 -1
- package/lib/esm/core-react/uistate/UiStateStorage.js +3 -3
- package/lib/esm/core-react/uistate/UiStateStorage.js.map +1 -1
- package/lib/esm/core-react/utils/IconHelper.d.ts +3 -1
- package/lib/esm/core-react/utils/IconHelper.d.ts.map +1 -1
- package/lib/esm/core-react/utils/IconHelper.js +35 -6
- package/lib/esm/core-react/utils/IconHelper.js.map +1 -1
- package/lib/esm/core-react/utils/IconWebComponent.d.ts.map +1 -1
- package/lib/esm/core-react/utils/IconWebComponent.js +71 -41
- package/lib/esm/core-react/utils/IconWebComponent.js.map +1 -1
- package/lib/esm/core-react/utils/Point.d.ts.map +1 -1
- package/lib/esm/core-react/utils/Point.js +3 -3
- package/lib/esm/core-react/utils/Point.js.map +1 -1
- package/lib/esm/core-react/utils/Props.d.ts.map +1 -1
- package/lib/esm/core-react/utils/Props.js +3 -3
- package/lib/esm/core-react/utils/Props.js.map +1 -1
- package/lib/esm/core-react/utils/Rectangle.d.ts.map +1 -1
- package/lib/esm/core-react/utils/Rectangle.js +15 -7
- package/lib/esm/core-react/utils/Rectangle.js.map +1 -1
- package/lib/esm/core-react/utils/ScrollPositionMaintainer.d.ts.map +1 -1
- package/lib/esm/core-react/utils/ScrollPositionMaintainer.js +4 -2
- package/lib/esm/core-react/utils/ScrollPositionMaintainer.js.map +1 -1
- package/lib/esm/core-react/utils/Size.d.ts.map +1 -1
- package/lib/esm/core-react/utils/Size.js +4 -5
- package/lib/esm/core-react/utils/Size.js.map +1 -1
- package/lib/esm/core-react/utils/Timer.d.ts.map +1 -1
- package/lib/esm/core-react/utils/Timer.js +3 -3
- package/lib/esm/core-react/utils/Timer.js.map +1 -1
- package/lib/esm/core-react/utils/UiGeometry.d.ts.map +1 -1
- package/lib/esm/core-react/utils/UiGeometry.js +9 -5
- package/lib/esm/core-react/utils/UiGeometry.js.map +1 -1
- package/lib/esm/core-react/utils/flattenChildren.js +3 -3
- package/lib/esm/core-react/utils/flattenChildren.js.map +1 -1
- package/lib/esm/core-react/utils/getBestBWContrastColor.js +5 -5
- package/lib/esm/core-react/utils/getBestBWContrastColor.js.map +1 -1
- package/lib/esm/core-react/utils/getCssVariable.d.ts.map +1 -1
- package/lib/esm/core-react/utils/getCssVariable.js +3 -3
- package/lib/esm/core-react/utils/getCssVariable.js.map +1 -1
- package/lib/esm/core-react/utils/getDisplayName.d.ts.map +1 -1
- package/lib/esm/core-react/utils/getDisplayName.js +3 -3
- package/lib/esm/core-react/utils/getDisplayName.js.map +1 -1
- package/lib/esm/core-react/utils/getUserColor.d.ts.map +1 -1
- package/lib/esm/core-react/utils/getUserColor.js +5 -4
- package/lib/esm/core-react/utils/getUserColor.js.map +1 -1
- package/lib/esm/core-react/utils/hooks/ResizeObserverPolyfill.d.ts.map +1 -1
- package/lib/esm/core-react/utils/hooks/ResizeObserverPolyfill.js +4 -4
- package/lib/esm/core-react/utils/hooks/ResizeObserverPolyfill.js.map +1 -1
- package/lib/esm/core-react/utils/hooks/useCrossOriginPopup.d.ts.map +1 -1
- package/lib/esm/core-react/utils/hooks/useCrossOriginPopup.js +21 -9
- package/lib/esm/core-react/utils/hooks/useCrossOriginPopup.js.map +1 -1
- package/lib/esm/core-react/utils/hooks/useDisposable.d.ts.map +1 -1
- package/lib/esm/core-react/utils/hooks/useDisposable.js +3 -3
- package/lib/esm/core-react/utils/hooks/useDisposable.js.map +1 -1
- package/lib/esm/core-react/utils/hooks/useEffectSkipFirst.d.ts.map +1 -1
- package/lib/esm/core-react/utils/hooks/useEffectSkipFirst.js +3 -3
- package/lib/esm/core-react/utils/hooks/useEffectSkipFirst.js.map +1 -1
- package/lib/esm/core-react/utils/hooks/useEventListener.d.ts.map +1 -1
- package/lib/esm/core-react/utils/hooks/useEventListener.js +3 -3
- package/lib/esm/core-react/utils/hooks/useEventListener.js.map +1 -1
- package/lib/esm/core-react/utils/hooks/useInterval.d.ts.map +1 -1
- package/lib/esm/core-react/utils/hooks/useInterval.js +6 -4
- package/lib/esm/core-react/utils/hooks/useInterval.js.map +1 -1
- package/lib/esm/core-react/utils/hooks/useLifecycleLogging.d.ts.map +1 -1
- package/lib/esm/core-react/utils/hooks/useLifecycleLogging.js +7 -4
- package/lib/esm/core-react/utils/hooks/useLifecycleLogging.js.map +1 -1
- package/lib/esm/core-react/utils/hooks/useOnOutsideClick.d.ts.map +1 -1
- package/lib/esm/core-react/utils/hooks/useOnOutsideClick.js +15 -6
- package/lib/esm/core-react/utils/hooks/useOnOutsideClick.js.map +1 -1
- package/lib/esm/core-react/utils/hooks/useProximityToMouse.js +3 -3
- package/lib/esm/core-react/utils/hooks/useProximityToMouse.js.map +1 -1
- package/lib/esm/core-react/utils/hooks/useRefEffect.d.ts +1 -1
- package/lib/esm/core-react/utils/hooks/useRefEffect.d.ts.map +1 -1
- package/lib/esm/core-react/utils/hooks/useRefEffect.js +3 -3
- package/lib/esm/core-react/utils/hooks/useRefEffect.js.map +1 -1
- package/lib/esm/core-react/utils/hooks/useRefState.js +3 -3
- package/lib/esm/core-react/utils/hooks/useRefState.js.map +1 -1
- package/lib/esm/core-react/utils/hooks/useRefs.d.ts.map +1 -1
- package/lib/esm/core-react/utils/hooks/useRefs.js +8 -6
- package/lib/esm/core-react/utils/hooks/useRefs.js.map +1 -1
- package/lib/esm/core-react/utils/hooks/useResizeObserver.d.ts +8 -8
- package/lib/esm/core-react/utils/hooks/useResizeObserver.d.ts.map +1 -1
- package/lib/esm/core-react/utils/hooks/useResizeObserver.js +37 -20
- package/lib/esm/core-react/utils/hooks/useResizeObserver.js.map +1 -1
- package/lib/esm/core-react/utils/hooks/useTargeted.d.ts.map +1 -1
- package/lib/esm/core-react/utils/hooks/useTargeted.js +7 -4
- package/lib/esm/core-react/utils/hooks/useTargeted.js.map +1 -1
- package/lib/esm/core-react/utils/hooks/useThrottledFn.js +3 -3
- package/lib/esm/core-react/utils/hooks/useThrottledFn.js.map +1 -1
- package/lib/esm/core-react/utils/hooks/useWidgetOpacityContext.d.ts.map +1 -1
- package/lib/esm/core-react/utils/hooks/useWidgetOpacityContext.js +3 -4
- package/lib/esm/core-react/utils/hooks/useWidgetOpacityContext.js.map +1 -1
- package/lib/esm/core-react/utils/isPromiseLike.d.ts.map +1 -1
- package/lib/esm/core-react/utils/isPromiseLike.js +6 -4
- package/lib/esm/core-react/utils/isPromiseLike.js.map +1 -1
- package/lib/esm/core-react/utils/reuseOrCreatePromise.d.ts +14 -0
- package/lib/esm/core-react/utils/reuseOrCreatePromise.d.ts.map +1 -0
- package/lib/esm/core-react/utils/reuseOrCreatePromise.js +29 -0
- package/lib/esm/core-react/utils/reuseOrCreatePromise.js.map +1 -0
- package/lib/esm/core-react/utils/shallowDiffers.d.ts.map +1 -1
- package/lib/esm/core-react/utils/shallowDiffers.js +3 -3
- package/lib/esm/core-react/utils/shallowDiffers.js.map +1 -1
- package/lib/esm/core-react/utils/typeUtils.js +3 -3
- package/lib/esm/core-react/utils/typeUtils.js.map +1 -1
- package/lib/esm/core-react.d.ts +3 -3
- package/lib/esm/core-react.d.ts.map +1 -1
- package/lib/esm/core-react.js +6 -6
- package/lib/esm/core-react.js.map +1 -1
- package/lib/public/locales/en/UiCore.json +31 -31
- package/package.json +8 -17
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/*---------------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
-
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
-
*--------------------------------------------------------------------------------------------*/
|
|
5
|
-
@import "./list";
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
@import "./list";
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
/*---------------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
-
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
-
*--------------------------------------------------------------------------------------------*/
|
|
5
|
-
@import "../style/index";
|
|
6
|
-
|
|
7
|
-
@mixin uicore-expandable-blocks-list {
|
|
8
|
-
> div {
|
|
9
|
-
transition: margin var(--iui-duration-1) ease-in-out;
|
|
10
|
-
|
|
11
|
-
> .iui-header {
|
|
12
|
-
border-color: var(--iui-color-border);
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
&:first-child {
|
|
16
|
-
> .iui-header {
|
|
17
|
-
border-top-color: var(--iui-color-border);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
> .iui-expanded + div {
|
|
23
|
-
> .iui-header {
|
|
24
|
-
border-top-color: var(--iui-color-border);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
&.iui-expanded > .iui-header {
|
|
28
|
-
border-top-color: var(--iui-color-border-accent);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
> .iui-expanded + .iui-expanded {
|
|
33
|
-
margin-top: 0;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
@import "../style/index";
|
|
6
|
+
|
|
7
|
+
@mixin uicore-expandable-blocks-list {
|
|
8
|
+
> div {
|
|
9
|
+
transition: margin var(--iui-duration-1) ease-in-out;
|
|
10
|
+
|
|
11
|
+
> .iui-header {
|
|
12
|
+
border-color: var(--iui-color-border);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
&:first-child {
|
|
16
|
+
> .iui-header {
|
|
17
|
+
border-top-color: var(--iui-color-border);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
> .iui-expanded + div {
|
|
23
|
+
> .iui-header {
|
|
24
|
+
border-top-color: var(--iui-color-border);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
&.iui-expanded > .iui-header {
|
|
28
|
+
border-top-color: var(--iui-color-border-accent);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
> .iui-expanded + .iui-expanded {
|
|
33
|
+
margin-top: 0;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ItemKeyboardNavigator.d.ts","sourceRoot":"","sources":["../../../../src/core-react/focus/ItemKeyboardNavigator.tsx"],"names":[],"mappings":"AAIA;;GAEG;;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;AAE/D;;GAEG;AACH,qBAAa,qBAAqB;
|
|
1
|
+
{"version":3,"file":"ItemKeyboardNavigator.d.ts","sourceRoot":"","sources":["../../../../src/core-react/focus/ItemKeyboardNavigator.tsx"],"names":[],"mappings":"AAIA;;GAEG;;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;AAE/D;;GAEG;AACH,qBAAa,qBAAqB;IAQvB,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;IACpC,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;IARhD,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,yBAAyB,CAAC,CAAwB;gBAGjD,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,EACpC,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;IAUhD,qBAAqB;IACrB,IAAW,SAAS,IAAI,MAAM,CAE7B;IACD,IAAW,SAAS,CAAC,KAAK,EAAE,MAAM,EAEjC;IAED,8BAA8B;IAC9B,IAAW,WAAW,IAAI,WAAW,CAEpC;IACD,IAAW,WAAW,CAAC,WAAW,EAAE,WAAW,EAE9C;IAED,2GAA2G;IAC3G,IAAW,SAAS,IAAI,OAAO,CAE9B;IACD,IAAW,SAAS,CAAC,CAAC,EAAE,OAAO,EAE9B;IAED,+FAA+F;IAC/F,IAAW,wBAAwB,IAAI,qBAAqB,GAAG,SAAS,CAEvE;IACD,IAAW,wBAAwB,CAAC,CAAC,EAAE,qBAAqB,GAAG,SAAS,EAEvE;IAED,8BAA8B;IACvB,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IA6B1E,4BAA4B;IACrB,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAWxE,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,aAAa;IAKrB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAkC5B;OACG;IACH,OAAO,CAAC,sBAAsB;IA8B9B,OAAO,CAAC,YAAY;CAGrB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAQpD"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*---------------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
-
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
-
*--------------------------------------------------------------------------------------------*/
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
5
|
/** @packageDocumentation
|
|
6
6
|
* @module Focus
|
|
7
7
|
*/
|
|
@@ -25,17 +25,33 @@ export class ItemKeyboardNavigator {
|
|
|
25
25
|
]);
|
|
26
26
|
}
|
|
27
27
|
/** The item count */
|
|
28
|
-
get itemCount() {
|
|
29
|
-
|
|
28
|
+
get itemCount() {
|
|
29
|
+
return this._itemCount;
|
|
30
|
+
}
|
|
31
|
+
set itemCount(count) {
|
|
32
|
+
this._itemCount = count;
|
|
33
|
+
}
|
|
30
34
|
/** The primary orientation */
|
|
31
|
-
get orientation() {
|
|
32
|
-
|
|
35
|
+
get orientation() {
|
|
36
|
+
return this._orientation;
|
|
37
|
+
}
|
|
38
|
+
set orientation(orientation) {
|
|
39
|
+
this._orientation = orientation;
|
|
40
|
+
}
|
|
33
41
|
/** The allow wrap property controls whether the movement will stop at the first and last items or wrap */
|
|
34
|
-
get allowWrap() {
|
|
35
|
-
|
|
42
|
+
get allowWrap() {
|
|
43
|
+
return this._allowWrap;
|
|
44
|
+
}
|
|
45
|
+
set allowWrap(v) {
|
|
46
|
+
this._allowWrap = v;
|
|
47
|
+
}
|
|
36
48
|
/** Called when the arrow keys that run perpendicular to the primary orientation are pressed */
|
|
37
|
-
get crossAxisArrowKeyHandler() {
|
|
38
|
-
|
|
49
|
+
get crossAxisArrowKeyHandler() {
|
|
50
|
+
return this._crossAxisArrowKeyHandler;
|
|
51
|
+
}
|
|
52
|
+
set crossAxisArrowKeyHandler(v) {
|
|
53
|
+
this._crossAxisArrowKeyHandler = v;
|
|
54
|
+
}
|
|
39
55
|
/** Handle KeyDown on items */
|
|
40
56
|
handleKeyDownEvent(event, index) {
|
|
41
57
|
const key = event.key;
|
|
@@ -92,7 +108,8 @@ export class ItemKeyboardNavigator {
|
|
|
92
108
|
event.preventDefault();
|
|
93
109
|
proceed = true;
|
|
94
110
|
}
|
|
95
|
-
else if (this.crossAxisArrowKeyHandler &&
|
|
111
|
+
else if (this.crossAxisArrowKeyHandler &&
|
|
112
|
+
(key === SpecialKey.ArrowLeft || key === SpecialKey.ArrowRight)) {
|
|
96
113
|
this.crossAxisArrowKeyHandler(key === SpecialKey.ArrowRight);
|
|
97
114
|
}
|
|
98
115
|
}
|
|
@@ -100,7 +117,8 @@ export class ItemKeyboardNavigator {
|
|
|
100
117
|
if (key === SpecialKey.ArrowLeft || key === SpecialKey.ArrowRight) {
|
|
101
118
|
proceed = true;
|
|
102
119
|
}
|
|
103
|
-
else if (this.crossAxisArrowKeyHandler &&
|
|
120
|
+
else if (this.crossAxisArrowKeyHandler &&
|
|
121
|
+
(key === SpecialKey.ArrowUp || key === SpecialKey.ArrowDown)) {
|
|
104
122
|
this.crossAxisArrowKeyHandler(key === SpecialKey.ArrowDown);
|
|
105
123
|
}
|
|
106
124
|
}
|
|
@@ -123,7 +141,8 @@ export class ItemKeyboardNavigator {
|
|
|
123
141
|
else {
|
|
124
142
|
// istanbul ignore else
|
|
125
143
|
if (this._allowWrap) {
|
|
126
|
-
if (pressed === SpecialKey.ArrowLeft ||
|
|
144
|
+
if (pressed === SpecialKey.ArrowLeft ||
|
|
145
|
+
pressed === SpecialKey.ArrowUp) {
|
|
127
146
|
this.focusLastItem();
|
|
128
147
|
}
|
|
129
148
|
else {
|
|
@@ -141,6 +160,10 @@ export class ItemKeyboardNavigator {
|
|
|
141
160
|
* @internal
|
|
142
161
|
*/
|
|
143
162
|
export function isNavigationKey(key) {
|
|
144
|
-
return (isArrowKey(key) ||
|
|
163
|
+
return (isArrowKey(key) ||
|
|
164
|
+
key === SpecialKey.Home ||
|
|
165
|
+
key === SpecialKey.End ||
|
|
166
|
+
key === SpecialKey.Space ||
|
|
167
|
+
key === SpecialKey.Enter);
|
|
145
168
|
}
|
|
146
169
|
//# sourceMappingURL=ItemKeyboardNavigator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ItemKeyboardNavigator.js","sourceRoot":"","sources":["../../../../src/core-react/focus/ItemKeyboardNavigator.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Focus\r\n */\r\n\r\nimport { isArrowKey, SpecialKey } from \"@itwin/appui-abstract\";\r\nimport { Orientation } from \"../enums/Orientation\";\r\n\r\n/** Cross-Axis Arrow Key Callback\r\n * @internal\r\n */\r\nexport type CrossAxisArrowKeyFunc = (forward: boolean) => void;\r\n\r\n/** Keyboard Navigator for parent components\r\n * @internal\r\n */\r\nexport class ItemKeyboardNavigator {\r\n private _direction: Map<string, number>;\r\n private _itemCount = 0;\r\n private _orientation = Orientation.Horizontal;\r\n private _allowWrap = true;\r\n private _crossAxisArrowKeyHandler?: CrossAxisArrowKeyFunc;\r\n\r\n constructor(public onFocusItem: (index: number) => void, public onActivateItem: (index: number) => void) {\r\n this._direction = new Map<string, number>([\r\n [SpecialKey.ArrowLeft, -1],\r\n [SpecialKey.ArrowUp, -1],\r\n [SpecialKey.ArrowRight, 1],\r\n [SpecialKey.ArrowDown, 1],\r\n ]);\r\n }\r\n\r\n /** The item count */\r\n public get itemCount(): number { return this._itemCount; }\r\n public set itemCount(count: number) { this._itemCount = count; }\r\n\r\n /** The primary orientation */\r\n public get orientation(): Orientation { return this._orientation; }\r\n public set orientation(orientation: Orientation) { this._orientation = orientation; }\r\n\r\n /** The allow wrap property controls whether the movement will stop at the first and last items or wrap */\r\n public get allowWrap(): boolean { return this._allowWrap; }\r\n public set allowWrap(v: boolean) { this._allowWrap = v; }\r\n\r\n /** Called when the arrow keys that run perpendicular to the primary orientation are pressed */\r\n public get crossAxisArrowKeyHandler(): CrossAxisArrowKeyFunc | undefined { return this._crossAxisArrowKeyHandler; }\r\n public set crossAxisArrowKeyHandler(v: CrossAxisArrowKeyFunc | undefined) { this._crossAxisArrowKeyHandler = v; }\r\n\r\n /** Handle KeyDown on items */\r\n public handleKeyDownEvent(event: React.KeyboardEvent, index: number): void {\r\n const key = event.key;\r\n\r\n switch (key) {\r\n case SpecialKey.Home:\r\n event.preventDefault();\r\n // Activate first item\r\n this.focusFirstItem();\r\n break;\r\n case SpecialKey.End:\r\n event.preventDefault();\r\n // Activate last item\r\n this.focusLastItem();\r\n break;\r\n\r\n // Up and down are in keydown\r\n // because we need to prevent page scroll >:)\r\n case SpecialKey.ArrowUp:\r\n case SpecialKey.ArrowDown:\r\n this.determineOrientation(event, index);\r\n break;\r\n\r\n case SpecialKey.Enter:\r\n case SpecialKey.Space:\r\n this.activateItem(index);\r\n break;\r\n }\r\n }\r\n\r\n /** Handle KeyUp on items */\r\n public handleKeyUpEvent(event: React.KeyboardEvent, index: number): void {\r\n const key = event.key;\r\n\r\n switch (key) {\r\n case SpecialKey.ArrowLeft:\r\n case SpecialKey.ArrowRight:\r\n this.determineOrientation(event, index);\r\n break;\r\n }\r\n }\r\n\r\n private focusFirstItem(): void {\r\n this.onFocusItem(0);\r\n }\r\n\r\n private focusLastItem(): void {\r\n const index = this._itemCount - 1;\r\n this.onFocusItem(index);\r\n }\r\n\r\n /** When an item list's orientation is set to vertical,\r\n * only up and down arrow should function.\r\n * In all other cases only left and right arrow function.\r\n */\r\n private determineOrientation(event: React.KeyboardEvent, index: number): void {\r\n const key = event.key;\r\n const vertical = this._orientation === Orientation.Vertical;\r\n let proceed = false;\r\n\r\n if (vertical) {\r\n if (key === SpecialKey.ArrowUp || key === SpecialKey.ArrowDown) {\r\n event.preventDefault();\r\n proceed = true;\r\n } else if (this.crossAxisArrowKeyHandler && (key === SpecialKey.ArrowLeft || key === SpecialKey.ArrowRight)) {\r\n this.crossAxisArrowKeyHandler(key === SpecialKey.ArrowRight);\r\n }\r\n } else {\r\n if (key === SpecialKey.ArrowLeft || key === SpecialKey.ArrowRight) {\r\n proceed = true;\r\n } else if (this.crossAxisArrowKeyHandler && (key === SpecialKey.ArrowUp || key === SpecialKey.ArrowDown)) {\r\n this.crossAxisArrowKeyHandler(key === SpecialKey.ArrowDown);\r\n }\r\n }\r\n\r\n if (proceed) {\r\n this.switchItemOnArrowPress(event, index);\r\n }\r\n }\r\n\r\n /** Either focus the next, previous, first, or last item depending on key pressed\r\n */\r\n private switchItemOnArrowPress(event: React.KeyboardEvent, index: number): void {\r\n // Add or subtract depending on key pressed\r\n const pressed = event.key;\r\n const targetDirection = this._direction.get(pressed);\r\n\r\n // istanbul ignore else\r\n if (targetDirection) {\r\n const newIndex = index + targetDirection;\r\n\r\n if (0 <= newIndex && newIndex < this._itemCount) {\r\n this.onFocusItem(newIndex);\r\n } else {\r\n // istanbul ignore else\r\n if (this._allowWrap) {\r\n if (pressed === SpecialKey.ArrowLeft || pressed === SpecialKey.ArrowUp) {\r\n this.focusLastItem();\r\n } else {\r\n this.focusFirstItem();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private activateItem(index: number): void {\r\n this.onActivateItem(index);\r\n }\r\n}\r\n\r\n/** Determines if a KeyboardEvent.key is an Item Navigation key\r\n * @internal\r\n */\r\nexport function isNavigationKey(key: string): boolean {\r\n return (isArrowKey(key) || key === SpecialKey.Home || key === SpecialKey.End || key === SpecialKey.Space || key === SpecialKey.Enter);\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ItemKeyboardNavigator.js","sourceRoot":"","sources":["../../../../src/core-react/focus/ItemKeyboardNavigator.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Focus\n */\n\nimport { isArrowKey, SpecialKey } from \"@itwin/appui-abstract\";\nimport { Orientation } from \"../enums/Orientation\";\n\n/** Cross-Axis Arrow Key Callback\n * @internal\n */\nexport type CrossAxisArrowKeyFunc = (forward: boolean) => void;\n\n/** Keyboard Navigator for parent components\n * @internal\n */\nexport class ItemKeyboardNavigator {\n private _direction: Map<string, number>;\n private _itemCount = 0;\n private _orientation = Orientation.Horizontal;\n private _allowWrap = true;\n private _crossAxisArrowKeyHandler?: CrossAxisArrowKeyFunc;\n\n constructor(\n public onFocusItem: (index: number) => void,\n public onActivateItem: (index: number) => void\n ) {\n this._direction = new Map<string, number>([\n [SpecialKey.ArrowLeft, -1],\n [SpecialKey.ArrowUp, -1],\n [SpecialKey.ArrowRight, 1],\n [SpecialKey.ArrowDown, 1],\n ]);\n }\n\n /** The item count */\n public get itemCount(): number {\n return this._itemCount;\n }\n public set itemCount(count: number) {\n this._itemCount = count;\n }\n\n /** The primary orientation */\n public get orientation(): Orientation {\n return this._orientation;\n }\n public set orientation(orientation: Orientation) {\n this._orientation = orientation;\n }\n\n /** The allow wrap property controls whether the movement will stop at the first and last items or wrap */\n public get allowWrap(): boolean {\n return this._allowWrap;\n }\n public set allowWrap(v: boolean) {\n this._allowWrap = v;\n }\n\n /** Called when the arrow keys that run perpendicular to the primary orientation are pressed */\n public get crossAxisArrowKeyHandler(): CrossAxisArrowKeyFunc | undefined {\n return this._crossAxisArrowKeyHandler;\n }\n public set crossAxisArrowKeyHandler(v: CrossAxisArrowKeyFunc | undefined) {\n this._crossAxisArrowKeyHandler = v;\n }\n\n /** Handle KeyDown on items */\n public handleKeyDownEvent(event: React.KeyboardEvent, index: number): void {\n const key = event.key;\n\n switch (key) {\n case SpecialKey.Home:\n event.preventDefault();\n // Activate first item\n this.focusFirstItem();\n break;\n case SpecialKey.End:\n event.preventDefault();\n // Activate last item\n this.focusLastItem();\n break;\n\n // Up and down are in keydown\n // because we need to prevent page scroll >:)\n case SpecialKey.ArrowUp:\n case SpecialKey.ArrowDown:\n this.determineOrientation(event, index);\n break;\n\n case SpecialKey.Enter:\n case SpecialKey.Space:\n this.activateItem(index);\n break;\n }\n }\n\n /** Handle KeyUp on items */\n public handleKeyUpEvent(event: React.KeyboardEvent, index: number): void {\n const key = event.key;\n\n switch (key) {\n case SpecialKey.ArrowLeft:\n case SpecialKey.ArrowRight:\n this.determineOrientation(event, index);\n break;\n }\n }\n\n private focusFirstItem(): void {\n this.onFocusItem(0);\n }\n\n private focusLastItem(): void {\n const index = this._itemCount - 1;\n this.onFocusItem(index);\n }\n\n /** When an item list's orientation is set to vertical,\n * only up and down arrow should function.\n * In all other cases only left and right arrow function.\n */\n private determineOrientation(\n event: React.KeyboardEvent,\n index: number\n ): void {\n const key = event.key;\n const vertical = this._orientation === Orientation.Vertical;\n let proceed = false;\n\n if (vertical) {\n if (key === SpecialKey.ArrowUp || key === SpecialKey.ArrowDown) {\n event.preventDefault();\n proceed = true;\n } else if (\n this.crossAxisArrowKeyHandler &&\n (key === SpecialKey.ArrowLeft || key === SpecialKey.ArrowRight)\n ) {\n this.crossAxisArrowKeyHandler(key === SpecialKey.ArrowRight);\n }\n } else {\n if (key === SpecialKey.ArrowLeft || key === SpecialKey.ArrowRight) {\n proceed = true;\n } else if (\n this.crossAxisArrowKeyHandler &&\n (key === SpecialKey.ArrowUp || key === SpecialKey.ArrowDown)\n ) {\n this.crossAxisArrowKeyHandler(key === SpecialKey.ArrowDown);\n }\n }\n\n if (proceed) {\n this.switchItemOnArrowPress(event, index);\n }\n }\n\n /** Either focus the next, previous, first, or last item depending on key pressed\n */\n private switchItemOnArrowPress(\n event: React.KeyboardEvent,\n index: number\n ): void {\n // Add or subtract depending on key pressed\n const pressed = event.key;\n const targetDirection = this._direction.get(pressed);\n\n // istanbul ignore else\n if (targetDirection) {\n const newIndex = index + targetDirection;\n\n if (0 <= newIndex && newIndex < this._itemCount) {\n this.onFocusItem(newIndex);\n } else {\n // istanbul ignore else\n if (this._allowWrap) {\n if (\n pressed === SpecialKey.ArrowLeft ||\n pressed === SpecialKey.ArrowUp\n ) {\n this.focusLastItem();\n } else {\n this.focusFirstItem();\n }\n }\n }\n }\n }\n\n private activateItem(index: number): void {\n this.onActivateItem(index);\n }\n}\n\n/** Determines if a KeyboardEvent.key is an Item Navigation key\n * @internal\n */\nexport function isNavigationKey(key: string): boolean {\n return (\n isArrowKey(key) ||\n key === SpecialKey.Home ||\n key === SpecialKey.End ||\n key === SpecialKey.Space ||\n key === SpecialKey.Enter\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FocusTrap.d.ts","sourceRoot":"","sources":["../../../../src/core-react/focustrap/FocusTrap.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"FocusTrap.d.ts","sourceRoot":"","sources":["../../../../src/core-react/focustrap/FocusTrap.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAkI/B;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,cAAc,EAAE,cAAc,EAC9B,mBAAmB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,MAAM,GAC1D,OAAO,CAcT;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC;IAClE,uBAAuB;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,oEAAoE;IACpE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,wEAAwE;IACxE,uBAAuB,EAAE,OAAO,CAAC;IACjC;;;OAGG;IACH,mBAAmB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC;CAC7D;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,sBA+G9C"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*---------------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
-
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
-
*--------------------------------------------------------------------------------------------*/
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
5
|
/** @packageDocumentation
|
|
6
6
|
* @module Popup
|
|
7
7
|
*/
|
|
@@ -12,11 +12,15 @@ import { UiCore } from "../UiCore";
|
|
|
12
12
|
function isFocusable(element) {
|
|
13
13
|
if (!element || element.tabIndex < 0)
|
|
14
14
|
return false;
|
|
15
|
-
if (element.classList &&
|
|
15
|
+
if (element.classList &&
|
|
16
|
+
element.classList.contains("core-focus-trap-ignore-initial"))
|
|
16
17
|
return false;
|
|
17
|
-
if (element.getAttribute &&
|
|
18
|
+
if (element.getAttribute &&
|
|
19
|
+
typeof element.getAttribute === "function" &&
|
|
20
|
+
element.getAttribute("disabled") !== null)
|
|
18
21
|
return false;
|
|
19
|
-
if (element.tabIndex > 0 ||
|
|
22
|
+
if (element.tabIndex > 0 ||
|
|
23
|
+
(element.tabIndex === 0 && element.getAttribute("tabIndex") !== null))
|
|
20
24
|
return true;
|
|
21
25
|
switch (element.nodeName) {
|
|
22
26
|
case "A":
|
|
@@ -93,13 +97,15 @@ function attemptFocus(element, preventScroll) {
|
|
|
93
97
|
try {
|
|
94
98
|
// istanbul ignore else
|
|
95
99
|
if (document.activeElement !== element)
|
|
96
|
-
element.focus({
|
|
100
|
+
element.focus({
|
|
101
|
+
preventScroll: preventScroll ? true : /* istanbul ignore next */ false,
|
|
102
|
+
});
|
|
97
103
|
}
|
|
98
104
|
catch (e) {
|
|
99
105
|
// istanbul ignore next
|
|
100
106
|
return false;
|
|
101
107
|
}
|
|
102
|
-
return
|
|
108
|
+
return document.activeElement === element;
|
|
103
109
|
} // end attemptFocus
|
|
104
110
|
/** Focus into first focusable element of a container.
|
|
105
111
|
* @internal
|
|
@@ -143,13 +149,20 @@ export function FocusTrap(props) {
|
|
|
143
149
|
}
|
|
144
150
|
}
|
|
145
151
|
}
|
|
146
|
-
}, [
|
|
152
|
+
}, [
|
|
153
|
+
props.children,
|
|
154
|
+
props.initialFocusElement,
|
|
155
|
+
props.active,
|
|
156
|
+
props.returnFocusOnDeactivate,
|
|
157
|
+
]);
|
|
147
158
|
// Return function to run only when FocusTrap is unmounted to restore focus
|
|
148
159
|
React.useEffect(() => {
|
|
149
160
|
return () => {
|
|
150
161
|
window.clearTimeout(timeoutRef.current);
|
|
151
162
|
if (restoreFocusElement.current)
|
|
152
|
-
restoreFocusElement.current.focus({
|
|
163
|
+
restoreFocusElement.current.focus({
|
|
164
|
+
preventScroll: true,
|
|
165
|
+
});
|
|
153
166
|
};
|
|
154
167
|
}, []);
|
|
155
168
|
// this is hit if Shift tab is used.
|
|
@@ -166,7 +179,8 @@ export function FocusTrap(props) {
|
|
|
166
179
|
focusable.focus();
|
|
167
180
|
}
|
|
168
181
|
else {
|
|
169
|
-
if (initialFocusElement.current &&
|
|
182
|
+
if (initialFocusElement.current &&
|
|
183
|
+
initialFocusElement.current !== document.activeElement)
|
|
170
184
|
attemptFocus(initialFocusElement.current, true);
|
|
171
185
|
}
|
|
172
186
|
}
|
|
@@ -178,15 +192,18 @@ export function FocusTrap(props) {
|
|
|
178
192
|
return;
|
|
179
193
|
event.stopPropagation();
|
|
180
194
|
// istanbul ignore else
|
|
181
|
-
if (initialFocusElement.current &&
|
|
195
|
+
if (initialFocusElement.current &&
|
|
196
|
+
initialFocusElement.current !== document.activeElement)
|
|
182
197
|
initialFocusElement.current.focus();
|
|
183
198
|
}, [props.active]);
|
|
184
199
|
if (!props.children)
|
|
185
200
|
return null;
|
|
186
201
|
return (React.createElement(React.Fragment, null,
|
|
187
|
-
React.createElement("div", { "data-testid": "focus-trap-div", onFocus: cycleFocusToEnd, ref: focusContainer,
|
|
188
|
-
|
|
189
|
-
style: { outline: "none", WebkitTapHighlightColor: "rgba(0,0,0,0)" } }, props.children),
|
|
190
|
-
React.createElement("div", { "data-testid": "focus-trap-limit-div", onFocus: cycleFocusToStart,
|
|
202
|
+
React.createElement("div", { "data-testid": "focus-trap-div", onFocus: cycleFocusToEnd, ref: focusContainer,
|
|
203
|
+
/* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */
|
|
204
|
+
tabIndex: 0, style: { outline: "none", WebkitTapHighlightColor: "rgba(0,0,0,0)" } }, props.children),
|
|
205
|
+
React.createElement("div", { "data-testid": "focus-trap-limit-div", onFocus: cycleFocusToStart,
|
|
206
|
+
/* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */
|
|
207
|
+
tabIndex: 0 })));
|
|
191
208
|
}
|
|
192
209
|
//# sourceMappingURL=FocusTrap.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FocusTrap.js","sourceRoot":"","sources":["../../../../src/core-react/focustrap/FocusTrap.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Popup\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { Logger } from \"@itwin/core-bentley\";\r\nimport { UiCore } from \"../UiCore\";\r\n\r\n// cSpell:ignore focusable\r\n\r\nfunction isFocusable(element: HTMLElement): boolean {\r\n if (!element || element.tabIndex < 0)\r\n return false;\r\n\r\n if (element.classList && element.classList.contains(\"core-focus-trap-ignore-initial\"))\r\n return false;\r\n\r\n if (element.getAttribute && (typeof element.getAttribute === \"function\") && element.getAttribute(\"disabled\") !== null)\r\n return false;\r\n\r\n if (element.tabIndex > 0 || (element.tabIndex === 0 && element.getAttribute(\"tabIndex\") !== null))\r\n return true;\r\n\r\n switch (element.nodeName) {\r\n case \"A\":\r\n const anchorElement = element as HTMLAnchorElement;\r\n return !!anchorElement.href && anchorElement.rel !== \"ignore\";\r\n case \"INPUT\":\r\n const inputElement = element as HTMLInputElement;\r\n return inputElement.type !== \"hidden\" && inputElement.type !== \"file\";\r\n case \"BUTTON\":\r\n case \"SELECT\":\r\n case \"TEXTAREA\":\r\n return true;\r\n default:\r\n return false;\r\n }\r\n}\r\n\r\nfunction processFindFocusableDescendant(element: HTMLElement | null): HTMLElement | null {\r\n // istanbul ignore next\r\n if (!element)\r\n return null;\r\n\r\n for (const child of element.childNodes) {\r\n // istanbul ignore else\r\n if (isFocusable(child as HTMLElement))\r\n return child as HTMLElement;\r\n\r\n const focusable = processFindFocusableDescendant(child as HTMLElement);\r\n if (focusable)\r\n return focusable;\r\n }\r\n return null;\r\n}\r\n\r\nfunction findFirstFocusableDescendant(focusContainer: HTMLDivElement | null): HTMLElement | null {\r\n return processFindFocusableDescendant(focusContainer);\r\n}\r\n\r\nfunction processFindLastFocusableDescendant(element: HTMLElement): HTMLElement | null {\r\n for (let i = element.childNodes.length - 1; i >= 0; i--) {\r\n const child = element.childNodes[i] as HTMLElement;\r\n\r\n const focusable = processFindLastFocusableDescendant(child);\r\n // istanbul ignore else\r\n if (focusable)\r\n return focusable;\r\n\r\n // istanbul ignore else\r\n if (isFocusable(child))\r\n return child;\r\n }\r\n return null;\r\n}\r\n\r\nfunction findLastFocusableDescendant(focusContainer: HTMLDivElement): HTMLElement | null {\r\n return processFindLastFocusableDescendant(focusContainer);\r\n}\r\n\r\nfunction getInitialFocusElement(focusContainer: HTMLDivElement | null, initialFocusSpec: React.RefObject<HTMLElement> | string | undefined): HTMLElement | null {\r\n // istanbul ignore next\r\n if (!focusContainer)\r\n return null;\r\n\r\n if (initialFocusSpec) {\r\n if (typeof initialFocusSpec === \"string\") {\r\n const node = focusContainer.querySelector(initialFocusSpec);\r\n if (node) {\r\n return node as HTMLElement;\r\n } else {\r\n Logger.logError(`${UiCore.packageName}.FocusTrap`, `Unable to locate element via selector ${initialFocusSpec}`);\r\n }\r\n } else {\r\n return initialFocusSpec.current;\r\n }\r\n }\r\n return findFirstFocusableDescendant(focusContainer);\r\n}\r\n\r\nfunction attemptFocus(element: HTMLElement, preventScroll: boolean): boolean {\r\n // istanbul ignore next\r\n if (!isFocusable(element))\r\n return false;\r\n\r\n try {\r\n // istanbul ignore else\r\n if (document.activeElement !== element)\r\n element.focus({ preventScroll: preventScroll ? true : /* istanbul ignore next */ false });\r\n } catch (e) {\r\n // istanbul ignore next\r\n return false;\r\n }\r\n return (document.activeElement === element);\r\n} // end attemptFocus\r\n\r\n/** Focus into first focusable element of a container.\r\n * @internal\r\n */\r\nexport function focusIntoContainer(focusContainer: HTMLDivElement, initialFocusElement?: React.RefObject<HTMLElement> | string): boolean {\r\n let result = false;\r\n const focusElement = getInitialFocusElement(focusContainer, initialFocusElement);\r\n if (focusElement) {\r\n // delay setting focus immediately because in some browsers other focus events happen when popup is initially opened.\r\n setTimeout(() => {\r\n attemptFocus(focusElement, true);\r\n }, 60);\r\n result = true;\r\n }\r\n return result;\r\n}\r\n\r\n/** Properties supported by [[FocusTrap]] component.\r\n * @internal\r\n */\r\nexport interface FocusTrapProps extends React.AllHTMLAttributes<any> {\r\n /** child components */\r\n children: React.ReactNode;\r\n /** if active is not true then no trapping of focus is attempted. */\r\n active?: boolean;\r\n /** restore focus to element that had focus before trap was activated */\r\n returnFocusOnDeactivate: boolean;\r\n /** Optional reference to element to receive focus when trap is activated. Optionally a CSS Selector\r\n * string can be supplied to locate an element in the FocusTrap container. If no specification is defined\r\n * the first focusable element is used.\r\n */\r\n initialFocusElement?: React.RefObject<HTMLElement> | string;\r\n}\r\n\r\n/** Trap Focus in container while trap is active.\r\n * @internal\r\n */\r\nexport function FocusTrap(props: FocusTrapProps) {\r\n const restoreFocusElement = React.useRef<Element | null>(null);\r\n const initialFocusElement = React.useRef<Element | null>(null);\r\n const focusContainer = React.useRef<HTMLDivElement | null>(null);\r\n const isInitialMount = React.useRef(true);\r\n const timeoutRef = React.useRef<number | undefined>();\r\n\r\n // Run on initial mount and when dependencies change. which could happen often.\r\n React.useEffect(() => {\r\n // istanbul ignore else\r\n if (isInitialMount.current) {\r\n isInitialMount.current = false;\r\n if (props.active) {\r\n if (props.returnFocusOnDeactivate) {\r\n restoreFocusElement.current = document.activeElement;\r\n }\r\n\r\n initialFocusElement.current = getInitialFocusElement(focusContainer.current, props.initialFocusElement);\r\n if (initialFocusElement.current) {\r\n // delay setting focus immediately because in some browsers other focus events happen when popup is initially opened.\r\n timeoutRef.current = window.setTimeout(() => {\r\n attemptFocus((initialFocusElement.current as HTMLElement), true);\r\n }, 60);\r\n }\r\n }\r\n }\r\n }, [props.children, props.initialFocusElement, props.active, props.returnFocusOnDeactivate]);\r\n\r\n // Return function to run only when FocusTrap is unmounted to restore focus\r\n React.useEffect(() => {\r\n return () => {\r\n window.clearTimeout(timeoutRef.current);\r\n if (restoreFocusElement.current)\r\n (restoreFocusElement.current as HTMLElement).focus({ preventScroll: true });\r\n };\r\n }, []);\r\n\r\n // this is hit if Shift tab is used.\r\n const cycleFocusToEnd = React.useCallback((event: React.FocusEvent<HTMLDivElement>) => {\r\n // istanbul ignore next\r\n if (!props.active)\r\n return;\r\n\r\n if (focusContainer.current && event.target === focusContainer.current) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n const focusable = findLastFocusableDescendant(focusContainer.current);\r\n\r\n // istanbul ignore else\r\n if (focusable) {\r\n focusable.focus();\r\n } else {\r\n if (initialFocusElement.current && initialFocusElement.current !== document.activeElement)\r\n attemptFocus((initialFocusElement.current as HTMLElement), true);\r\n }\r\n }\r\n }, [props.active]);\r\n\r\n // this is hit if tab is used on last focusable item in child container.\r\n const cycleFocusToStart = React.useCallback((event: React.FocusEvent<HTMLDivElement>) => {\r\n // istanbul ignore next\r\n if (!props.active)\r\n return;\r\n\r\n event.stopPropagation();\r\n // istanbul ignore else\r\n if (initialFocusElement.current && initialFocusElement.current !== document.activeElement)\r\n (initialFocusElement.current as HTMLElement).focus();\r\n }, [props.active]);\r\n\r\n if (!props.children)\r\n return null;\r\n return (\r\n <>\r\n {/* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */}\r\n <div data-testid=\"focus-trap-div\" onFocus={cycleFocusToEnd} ref={focusContainer} tabIndex={0}\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n style={{ outline: \"none\", WebkitTapHighlightColor: \"rgba(0,0,0,0)\" }}>\r\n {props.children}\r\n </div>\r\n {/* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */}\r\n <div data-testid=\"focus-trap-limit-div\" onFocus={cycleFocusToStart} tabIndex={0} />\r\n </>\r\n );\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"FocusTrap.js","sourceRoot":"","sources":["../../../../src/core-react/focustrap/FocusTrap.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Popup\n */\n\nimport * as React from \"react\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport { UiCore } from \"../UiCore\";\n\n// cSpell:ignore focusable\n\nfunction isFocusable(element: HTMLElement): boolean {\n if (!element || element.tabIndex < 0) return false;\n\n if (\n element.classList &&\n element.classList.contains(\"core-focus-trap-ignore-initial\")\n )\n return false;\n\n if (\n element.getAttribute &&\n typeof element.getAttribute === \"function\" &&\n element.getAttribute(\"disabled\") !== null\n )\n return false;\n\n if (\n element.tabIndex > 0 ||\n (element.tabIndex === 0 && element.getAttribute(\"tabIndex\") !== null)\n )\n return true;\n\n switch (element.nodeName) {\n case \"A\":\n const anchorElement = element as HTMLAnchorElement;\n return !!anchorElement.href && anchorElement.rel !== \"ignore\";\n case \"INPUT\":\n const inputElement = element as HTMLInputElement;\n return inputElement.type !== \"hidden\" && inputElement.type !== \"file\";\n case \"BUTTON\":\n case \"SELECT\":\n case \"TEXTAREA\":\n return true;\n default:\n return false;\n }\n}\n\nfunction processFindFocusableDescendant(\n element: HTMLElement | null\n): HTMLElement | null {\n // istanbul ignore next\n if (!element) return null;\n\n for (const child of element.childNodes) {\n // istanbul ignore else\n if (isFocusable(child as HTMLElement)) return child as HTMLElement;\n\n const focusable = processFindFocusableDescendant(child as HTMLElement);\n if (focusable) return focusable;\n }\n return null;\n}\n\nfunction findFirstFocusableDescendant(\n focusContainer: HTMLDivElement | null\n): HTMLElement | null {\n return processFindFocusableDescendant(focusContainer);\n}\n\nfunction processFindLastFocusableDescendant(\n element: HTMLElement\n): HTMLElement | null {\n for (let i = element.childNodes.length - 1; i >= 0; i--) {\n const child = element.childNodes[i] as HTMLElement;\n\n const focusable = processFindLastFocusableDescendant(child);\n // istanbul ignore else\n if (focusable) return focusable;\n\n // istanbul ignore else\n if (isFocusable(child)) return child;\n }\n return null;\n}\n\nfunction findLastFocusableDescendant(\n focusContainer: HTMLDivElement\n): HTMLElement | null {\n return processFindLastFocusableDescendant(focusContainer);\n}\n\nfunction getInitialFocusElement(\n focusContainer: HTMLDivElement | null,\n initialFocusSpec: React.RefObject<HTMLElement> | string | undefined\n): HTMLElement | null {\n // istanbul ignore next\n if (!focusContainer) return null;\n\n if (initialFocusSpec) {\n if (typeof initialFocusSpec === \"string\") {\n const node = focusContainer.querySelector(initialFocusSpec);\n if (node) {\n return node as HTMLElement;\n } else {\n Logger.logError(\n `${UiCore.packageName}.FocusTrap`,\n `Unable to locate element via selector ${initialFocusSpec}`\n );\n }\n } else {\n return initialFocusSpec.current;\n }\n }\n return findFirstFocusableDescendant(focusContainer);\n}\n\nfunction attemptFocus(element: HTMLElement, preventScroll: boolean): boolean {\n // istanbul ignore next\n if (!isFocusable(element)) return false;\n\n try {\n // istanbul ignore else\n if (document.activeElement !== element)\n element.focus({\n preventScroll: preventScroll ? true : /* istanbul ignore next */ false,\n });\n } catch (e) {\n // istanbul ignore next\n return false;\n }\n return document.activeElement === element;\n} // end attemptFocus\n\n/** Focus into first focusable element of a container.\n * @internal\n */\nexport function focusIntoContainer(\n focusContainer: HTMLDivElement,\n initialFocusElement?: React.RefObject<HTMLElement> | string\n): boolean {\n let result = false;\n const focusElement = getInitialFocusElement(\n focusContainer,\n initialFocusElement\n );\n if (focusElement) {\n // delay setting focus immediately because in some browsers other focus events happen when popup is initially opened.\n setTimeout(() => {\n attemptFocus(focusElement, true);\n }, 60);\n result = true;\n }\n return result;\n}\n\n/** Properties supported by [[FocusTrap]] component.\n * @internal\n */\nexport interface FocusTrapProps extends React.AllHTMLAttributes<any> {\n /** child components */\n children: React.ReactNode;\n /** if active is not true then no trapping of focus is attempted. */\n active?: boolean;\n /** restore focus to element that had focus before trap was activated */\n returnFocusOnDeactivate: boolean;\n /** Optional reference to element to receive focus when trap is activated. Optionally a CSS Selector\n * string can be supplied to locate an element in the FocusTrap container. If no specification is defined\n * the first focusable element is used.\n */\n initialFocusElement?: React.RefObject<HTMLElement> | string;\n}\n\n/** Trap Focus in container while trap is active.\n * @internal\n */\nexport function FocusTrap(props: FocusTrapProps) {\n const restoreFocusElement = React.useRef<Element | null>(null);\n const initialFocusElement = React.useRef<Element | null>(null);\n const focusContainer = React.useRef<HTMLDivElement | null>(null);\n const isInitialMount = React.useRef(true);\n const timeoutRef = React.useRef<number | undefined>();\n\n // Run on initial mount and when dependencies change. which could happen often.\n React.useEffect(() => {\n // istanbul ignore else\n if (isInitialMount.current) {\n isInitialMount.current = false;\n if (props.active) {\n if (props.returnFocusOnDeactivate) {\n restoreFocusElement.current = document.activeElement;\n }\n\n initialFocusElement.current = getInitialFocusElement(\n focusContainer.current,\n props.initialFocusElement\n );\n if (initialFocusElement.current) {\n // delay setting focus immediately because in some browsers other focus events happen when popup is initially opened.\n timeoutRef.current = window.setTimeout(() => {\n attemptFocus(initialFocusElement.current as HTMLElement, true);\n }, 60);\n }\n }\n }\n }, [\n props.children,\n props.initialFocusElement,\n props.active,\n props.returnFocusOnDeactivate,\n ]);\n\n // Return function to run only when FocusTrap is unmounted to restore focus\n React.useEffect(() => {\n return () => {\n window.clearTimeout(timeoutRef.current);\n if (restoreFocusElement.current)\n (restoreFocusElement.current as HTMLElement).focus({\n preventScroll: true,\n });\n };\n }, []);\n\n // this is hit if Shift tab is used.\n const cycleFocusToEnd = React.useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n // istanbul ignore next\n if (!props.active) return;\n\n if (focusContainer.current && event.target === focusContainer.current) {\n event.stopPropagation();\n event.preventDefault();\n const focusable = findLastFocusableDescendant(focusContainer.current);\n\n // istanbul ignore else\n if (focusable) {\n focusable.focus();\n } else {\n if (\n initialFocusElement.current &&\n initialFocusElement.current !== document.activeElement\n )\n attemptFocus(initialFocusElement.current as HTMLElement, true);\n }\n }\n },\n [props.active]\n );\n\n // this is hit if tab is used on last focusable item in child container.\n const cycleFocusToStart = React.useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n // istanbul ignore next\n if (!props.active) return;\n\n event.stopPropagation();\n // istanbul ignore else\n if (\n initialFocusElement.current &&\n initialFocusElement.current !== document.activeElement\n )\n (initialFocusElement.current as HTMLElement).focus();\n },\n [props.active]\n );\n\n if (!props.children) return null;\n return (\n <>\n <div\n data-testid=\"focus-trap-div\"\n onFocus={cycleFocusToEnd}\n ref={focusContainer}\n /* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */\n tabIndex={0}\n style={{ outline: \"none\", WebkitTapHighlightColor: \"rgba(0,0,0,0)\" }}\n >\n {props.children}\n </div>\n <div\n data-testid=\"focus-trap-limit-div\"\n onFocus={cycleFocusToStart}\n /* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */\n tabIndex={0}\n />\n </>\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withIsPressed.d.ts","sourceRoot":"","sources":["../../../../src/core-react/hocs/withIsPressed.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,uCAAuC;IACvC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+CAA+C;IAC/C,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;CAClD;AAED;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;
|
|
1
|
+
{"version":3,"file":"withIsPressed.d.ts","sourceRoot":"","sources":["../../../../src/core-react/hocs/withIsPressed.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,uCAAuC;IACvC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+CAA+C;IAC/C,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;CAClD;AAED;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;qCAkBe,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAAP,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;CAuB/C,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*---------------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
-
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
-
*--------------------------------------------------------------------------------------------*/
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
5
|
/** @packageDocumentation
|
|
6
6
|
* @module Common
|
|
7
7
|
*/
|
|
@@ -9,9 +9,7 @@ import * as React from "react";
|
|
|
9
9
|
/** withIsPressed is a React higher-order component that adds pointer and mouse events.
|
|
10
10
|
* @public
|
|
11
11
|
*/
|
|
12
|
-
export const withIsPressed = (
|
|
13
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
14
|
-
Component) => {
|
|
12
|
+
export const withIsPressed = (Component) => {
|
|
15
13
|
return class WithIsPressed extends React.PureComponent {
|
|
16
14
|
constructor() {
|
|
17
15
|
super(...arguments);
|
|
@@ -31,7 +29,6 @@ Component) => {
|
|
|
31
29
|
};
|
|
32
30
|
}
|
|
33
31
|
render() {
|
|
34
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
35
32
|
const { isPressed, onIsPressedChange, ...props } = this.props; // todo: better solution to rest object of intersected type
|
|
36
33
|
return (
|
|
37
34
|
// eslint-disable-next-line jsx-a11y/no-static-element-interactions
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withIsPressed.js","sourceRoot":"","sources":["../../../../src/core-react/hocs/withIsPressed.tsx"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"withIsPressed.js","sourceRoot":"","sources":["../../../../src/core-react/hocs/withIsPressed.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAY/B;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,SAA8C,EAC9C,EAAE;IACF,OAAO,MAAM,aAAc,SAAQ,KAAK,CAAC,aAExC;QAFM;;YAGE,wBAAmB,GAAG,GAAG,EAAE;gBAChC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC,CAAC;YAEK,sBAAiB,GAAG,GAAG,EAAE;gBAC9B,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC,CAAC;YAEK,uBAAkB,GAAG,GAAG,EAAE;gBAC/B,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC,CAAC;YAEK,oBAAe,GAAG,CAAC,SAAkB,EAAE,EAAE;gBAC9C,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS;oBAAE,OAAO;gBAE/C,IAAI,CAAC,KAAK,CAAC,iBAAiB,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAC1E,CAAC,CAAC;QAkBJ,CAAC;QAhBiB,MAAM;YACpB,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,2DAA2D;YAC1H,OAAO;YACL,mEAAmE;YACnE,6BACE,SAAS,EAAC,uBAAuB,EACjC,WAAW,EAAE,IAAI,CAAC,mBAAmB,EACrC,SAAS,EAAE,IAAI,CAAC,iBAAiB,EACjC,YAAY,EAAE,IAAI,CAAC,mBAAmB,EACtC,UAAU,EAAE,IAAI,CAAC,iBAAiB,EAClC,YAAY,EAAE,IAAI,CAAC,kBAAkB;gBAErC,oBAAC,SAAS,OAAM,KAAwB,KAAM,IAAI,CAAC,KAAK,GAAI,CACxD,CACP,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Common\n */\n\nimport * as React from \"react\";\n\n/** Properties for [[withIsPressed]] React higher-order component\n * @public\n */\nexport interface WithIsPressedProps {\n /** initial value for pressed status */\n isPressed?: boolean;\n /** callback function for [isPressed] change */\n onIsPressedChange?: (isPressed: boolean) => void;\n}\n\n/** withIsPressed is a React higher-order component that adds pointer and mouse events.\n * @public\n */\nexport const withIsPressed = <ComponentProps extends {}>(\n Component: React.ComponentType<ComponentProps>\n) => {\n return class WithIsPressed extends React.PureComponent<\n ComponentProps & WithIsPressedProps\n > {\n public handleOnPointerDown = () => {\n this.changeIsPressed(true);\n };\n\n public handleOnPointerUp = () => {\n this.changeIsPressed(false);\n };\n\n public handleOnMouseLeave = () => {\n this.changeIsPressed(false);\n };\n\n public changeIsPressed = (isPressed: boolean) => {\n if (this.props.isPressed === isPressed) return;\n\n this.props.onIsPressedChange && this.props.onIsPressedChange(isPressed);\n };\n\n public override render() {\n const { isPressed, onIsPressedChange, ...props } = this.props; // todo: better solution to rest object of intersected type\n return (\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n <div\n className=\"withispressed-wrapper\"\n onMouseDown={this.handleOnPointerDown}\n onMouseUp={this.handleOnPointerUp}\n onTouchStart={this.handleOnPointerDown}\n onTouchEnd={this.handleOnPointerUp}\n onMouseLeave={this.handleOnMouseLeave}\n >\n <Component {...(props as ComponentProps)} {...this.state} />\n </div>\n );\n }\n };\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withOnOutsideClick.d.ts","sourceRoot":"","sources":["../../../../src/core-react/hocs/withOnOutsideClick.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,sCAAsC;IACtC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,GAAG,CAAC;IAC5C,8HAA8H;IAC9H,8BAA8B,CAAC,EAAE,OAAO,CAAC;CAC1C;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,+
|
|
1
|
+
{"version":3,"file":"withOnOutsideClick.d.ts","sourceRoot":"","sources":["../../../../src/core-react/hocs/withOnOutsideClick.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,sCAAsC;IACtC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,GAAG,CAAC;IAC5C,8HAA8H;IAC9H,8BAA8B,CAAC,EAAE,OAAO,CAAC;CAC1C;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,+GAEG,UAAU,KAAK,GAAG,4BACtC,OAAO,qBACD,OAAO;;QAKvB,gBAAgB;;QAEhB,gBAAgB;;QAGhB,gBAAgB;+BACc,WAAW,GAAG,OAAO;QAcnD,gBAAgB;0BACS,UAAU;QAenC,gBAAgB;iCACiB,UAAU;QAW3C,gBAAgB;uCACuB,YAAY;QAWnD,gBAAgB;qCACqB,YAAY;sEAgBrB,cAAc,GAAG,IAAI;;;QA+BjD,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;QA5GhB,gBAAgB;;QAEhB,gBAAgB;;QAGhB,gBAAgB;+BACc,WAAW,GAAG,OAAO;QAcnD,gBAAgB;0BACS,UAAU;QAenC,gBAAgB;iCACiB,UAAU;QAW3C,gBAAgB;uCACuB,YAAY;QAWnD,gBAAgB;qCACqB,YAAY;sEAgBrB,cAAc,GAAG,IAAI;;;QA+BjD,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;CAgCnB,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*---------------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
-
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
-
*--------------------------------------------------------------------------------------------*/
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
5
|
/** @packageDocumentation
|
|
6
6
|
* @module Common
|
|
7
7
|
*/
|
|
@@ -9,9 +9,7 @@ import * as React from "react";
|
|
|
9
9
|
/** withOnOutsideClick is a React higher-order component that adds outside click support.
|
|
10
10
|
* @public
|
|
11
11
|
*/
|
|
12
|
-
export const withOnOutsideClick = (
|
|
13
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
14
|
-
Component, defaultOnOutsideClick, useCapture = true, usePointerEvents = true) => {
|
|
12
|
+
export const withOnOutsideClick = (Component, defaultOnOutsideClick, useCapture = true, usePointerEvents = true) => {
|
|
15
13
|
return class WithOnOutsideClick extends React.PureComponent {
|
|
16
14
|
constructor() {
|
|
17
15
|
super(...arguments);
|
|
@@ -21,7 +19,9 @@ Component, defaultOnOutsideClick, useCapture = true, usePointerEvents = true) =>
|
|
|
21
19
|
this.isDownOutside = false;
|
|
22
20
|
/** @internal */
|
|
23
21
|
this.handleDocumentClick = (e) => {
|
|
24
|
-
if (!this.outsideClickContainerDiv ||
|
|
22
|
+
if (!this.outsideClickContainerDiv ||
|
|
23
|
+
!(e.target instanceof Node) ||
|
|
24
|
+
this.outsideClickContainerDiv.contains(e.target))
|
|
25
25
|
return;
|
|
26
26
|
return this.onOutsideClick(e);
|
|
27
27
|
};
|
|
@@ -31,7 +31,9 @@ Component, defaultOnOutsideClick, useCapture = true, usePointerEvents = true) =>
|
|
|
31
31
|
// istanbul ignore else
|
|
32
32
|
if (this.outsideClickContainerDiv) {
|
|
33
33
|
// typically e.target test for instance of Node, but this is not working from pop out windows
|
|
34
|
-
this.isDownOutside =
|
|
34
|
+
this.isDownOutside =
|
|
35
|
+
!!e.target &&
|
|
36
|
+
!this.outsideClickContainerDiv.contains(e.target);
|
|
35
37
|
}
|
|
36
38
|
};
|
|
37
39
|
/** @internal */
|
|
@@ -40,7 +42,9 @@ Component, defaultOnOutsideClick, useCapture = true, usePointerEvents = true) =>
|
|
|
40
42
|
// istanbul ignore else
|
|
41
43
|
if (this.outsideClickContainerDiv) {
|
|
42
44
|
// typically e.target test for instance of Node, but this is not working from pop out windows
|
|
43
|
-
isUpOutside =
|
|
45
|
+
isUpOutside =
|
|
46
|
+
!!e.target &&
|
|
47
|
+
!this.outsideClickContainerDiv.contains(e.target);
|
|
44
48
|
}
|
|
45
49
|
const isOutsideClick = isUpOutside && this.isDownOutside;
|
|
46
50
|
this.isDownOutside = false;
|
|
@@ -70,7 +74,8 @@ Component, defaultOnOutsideClick, useCapture = true, usePointerEvents = true) =>
|
|
|
70
74
|
// istanbul ignore else
|
|
71
75
|
if (e.target instanceof Node && e.target.nodeType === Node.ELEMENT_NODE) {
|
|
72
76
|
// istanbul ignore else
|
|
73
|
-
if (!this.props.closeOnNestedPopupOutsideClick &&
|
|
77
|
+
if (!this.props.closeOnNestedPopupOutsideClick &&
|
|
78
|
+
this.isInCorePopup(e.target))
|
|
74
79
|
return;
|
|
75
80
|
}
|
|
76
81
|
if (this.props.onOutsideClick)
|
|
@@ -103,7 +108,7 @@ Component, defaultOnOutsideClick, useCapture = true, usePointerEvents = true) =>
|
|
|
103
108
|
outsideClickParentDocument.removeEventListener("click", this.handleDocumentClick, useCapture);
|
|
104
109
|
}
|
|
105
110
|
render() {
|
|
106
|
-
const { onOutsideClick, closeOnNestedPopupOutsideClick, ...props } = this.props;
|
|
111
|
+
const { onOutsideClick, closeOnNestedPopupOutsideClick, ...props } = this.props;
|
|
107
112
|
return (React.createElement("div", { ref: this.handleOutsideClickContainerDivSet },
|
|
108
113
|
React.createElement(Component, { ...props })));
|
|
109
114
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withOnOutsideClick.js","sourceRoot":"","sources":["../../../../src/core-react/hocs/withOnOutsideClick.tsx"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"withOnOutsideClick.js","sourceRoot":"","sources":["../../../../src/core-react/hocs/withOnOutsideClick.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Common\n */\n\nimport * as React from \"react\";\n\n/** Properties for [[withOnOutsideClick]] React higher-order component\n * @public\n */\nexport interface WithOnOutsideClickProps {\n /** Outside click callback function */\n onOutsideClick?: (event: MouseEvent) => any;\n /** If false outside click processing and closing are skipped if click occurs in another Popup component, default to false. */\n closeOnNestedPopupOutsideClick?: boolean;\n}\n\n/** withOnOutsideClick is a React higher-order component that adds outside click support.\n * @public\n */\nexport const withOnOutsideClick = <ComponentProps extends {}>(\n Component: React.ComponentType<ComponentProps>,\n defaultOnOutsideClick?: (event: MouseEvent) => any,\n useCapture: boolean = true,\n usePointerEvents: boolean = true\n) => {\n return class WithOnOutsideClick extends React.PureComponent<\n ComponentProps & WithOnOutsideClickProps\n > {\n /** @internal */\n public outsideClickContainerDiv?: HTMLDivElement | null = null;\n /** @internal */\n public isDownOutside = false;\n\n /** @internal */\n public isInCorePopup(element: HTMLElement): boolean {\n if (element.nodeName === \"DIV\") {\n if (element.classList && element.classList.contains(\"core-popup\"))\n return true;\n if (element.parentElement && this.isInCorePopup(element.parentElement))\n return true;\n } else {\n // istanbul ignore else\n if (element.parentElement && this.isInCorePopup(element.parentElement))\n return true;\n }\n return false;\n }\n\n /** @internal */\n public onOutsideClick(e: MouseEvent) {\n // istanbul ignore else\n if (e.target instanceof Node && e.target.nodeType === Node.ELEMENT_NODE) {\n // istanbul ignore else\n if (\n !this.props.closeOnNestedPopupOutsideClick &&\n this.isInCorePopup(e.target as HTMLElement)\n )\n return;\n }\n\n if (this.props.onOutsideClick) return this.props.onOutsideClick(e);\n else if (defaultOnOutsideClick) return defaultOnOutsideClick(e);\n }\n\n /** @internal */\n public handleDocumentClick = (e: MouseEvent) => {\n if (\n !this.outsideClickContainerDiv ||\n !(e.target instanceof Node) ||\n this.outsideClickContainerDiv.contains(e.target)\n )\n return;\n\n return this.onOutsideClick(e);\n };\n\n /** @internal */\n public handleDocumentPointerDown = (e: PointerEvent) => {\n this.isDownOutside = true;\n // istanbul ignore else\n if (this.outsideClickContainerDiv) {\n // typically e.target test for instance of Node, but this is not working from pop out windows\n this.isDownOutside =\n !!e.target &&\n !this.outsideClickContainerDiv.contains(e.target as any);\n }\n };\n\n /** @internal */\n public handleDocumentPointerUp = (e: PointerEvent) => {\n let isUpOutside = true;\n // istanbul ignore else\n if (this.outsideClickContainerDiv) {\n // typically e.target test for instance of Node, but this is not working from pop out windows\n isUpOutside =\n !!e.target &&\n !this.outsideClickContainerDiv.contains(e.target as any);\n }\n\n const isOutsideClick = isUpOutside && this.isDownOutside;\n this.isDownOutside = false;\n isOutsideClick && this.onOutsideClick(e);\n };\n\n public handleOutsideClickContainerDivSet = (\n outsideClickContainerDiv: HTMLDivElement | null\n ) => {\n this.outsideClickContainerDiv = outsideClickContainerDiv;\n };\n\n public getParentDocument() {\n // istanbul ignore next\n return this.outsideClickContainerDiv?.ownerDocument ?? document;\n }\n\n public override componentDidMount() {\n const outsideClickParentDocument = this.getParentDocument();\n if (usePointerEvents) {\n outsideClickParentDocument.addEventListener(\n \"pointerdown\",\n this.handleDocumentPointerDown,\n useCapture\n );\n outsideClickParentDocument.addEventListener(\n \"pointerup\",\n this.handleDocumentPointerUp,\n useCapture\n );\n } else\n outsideClickParentDocument.addEventListener(\n \"click\",\n this.handleDocumentClick,\n useCapture\n );\n }\n\n /** @internal */\n public override componentWillUnmount() {\n const outsideClickParentDocument = this.getParentDocument();\n if (usePointerEvents) {\n outsideClickParentDocument.removeEventListener(\n \"pointerdown\",\n this.handleDocumentPointerDown,\n useCapture\n );\n outsideClickParentDocument.removeEventListener(\n \"pointerup\",\n this.handleDocumentPointerUp,\n useCapture\n );\n } else\n outsideClickParentDocument.removeEventListener(\n \"click\",\n this.handleDocumentClick,\n useCapture\n );\n }\n\n public override render() {\n const { onOutsideClick, closeOnNestedPopupOutsideClick, ...props } =\n this.props;\n return (\n <div ref={this.handleOutsideClickContainerDivSet}>\n <Component {...(props as ComponentProps)} />\n </div>\n );\n }\n };\n};\n"]}
|