@itwin/core-react 4.12.0 → 4.13.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 +18 -1
- 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 +2 -2
- package/lib/cjs/core-react/autosuggest/AutoSuggest.js.map +1 -1
- package/lib/cjs/core-react/base/Centered.d.ts +1 -0
- package/lib/cjs/core-react/base/Centered.d.ts.map +1 -1
- package/lib/cjs/core-react/base/Centered.js +2 -0
- package/lib/cjs/core-react/base/Centered.js.map +1 -1
- package/lib/cjs/core-react/base/Div.d.ts +2 -0
- package/lib/cjs/core-react/base/Div.d.ts.map +1 -1
- package/lib/cjs/core-react/base/Div.js +2 -0
- package/lib/cjs/core-react/base/Div.js.map +1 -1
- package/lib/cjs/core-react/base/DivWithOutsideClick.d.ts +1 -0
- package/lib/cjs/core-react/base/DivWithOutsideClick.d.ts.map +1 -1
- package/lib/cjs/core-react/base/DivWithOutsideClick.js +1 -0
- package/lib/cjs/core-react/base/DivWithOutsideClick.js.map +1 -1
- package/lib/cjs/core-react/base/FillCentered.d.ts +1 -0
- package/lib/cjs/core-react/base/FillCentered.d.ts.map +1 -1
- package/lib/cjs/core-react/base/FillCentered.js +2 -0
- package/lib/cjs/core-react/base/FillCentered.js.map +1 -1
- package/lib/cjs/core-react/base/FlexWrapContainer.d.ts +1 -0
- package/lib/cjs/core-react/base/FlexWrapContainer.d.ts.map +1 -1
- package/lib/cjs/core-react/base/FlexWrapContainer.js +2 -0
- package/lib/cjs/core-react/base/FlexWrapContainer.js.map +1 -1
- package/lib/cjs/core-react/base/Gap.d.ts +2 -0
- package/lib/cjs/core-react/base/Gap.d.ts.map +1 -1
- package/lib/cjs/core-react/base/Gap.js +3 -1
- package/lib/cjs/core-react/base/Gap.js.map +1 -1
- package/lib/cjs/core-react/base/ScrollView.d.ts +1 -0
- package/lib/cjs/core-react/base/ScrollView.d.ts.map +1 -1
- package/lib/cjs/core-react/base/ScrollView.js +2 -0
- package/lib/cjs/core-react/base/ScrollView.js.map +1 -1
- package/lib/cjs/core-react/button/UnderlinedButton.d.ts +2 -0
- package/lib/cjs/core-react/button/UnderlinedButton.d.ts.map +1 -1
- package/lib/cjs/core-react/button/UnderlinedButton.js +2 -0
- package/lib/cjs/core-react/button/UnderlinedButton.js.map +1 -1
- package/lib/cjs/core-react/checklistbox/CheckListBox.d.ts +4 -0
- package/lib/cjs/core-react/checklistbox/CheckListBox.d.ts.map +1 -1
- package/lib/cjs/core-react/checklistbox/CheckListBox.js +4 -0
- package/lib/cjs/core-react/checklistbox/CheckListBox.js.map +1 -1
- package/lib/cjs/core-react/contextmenu/ContextMenu.d.ts.map +1 -1
- package/lib/cjs/core-react/contextmenu/ContextMenu.js +1 -2
- package/lib/cjs/core-react/contextmenu/ContextMenu.js.map +1 -1
- package/lib/cjs/core-react/contextmenu/GlobalContextMenu.js +3 -5
- package/lib/cjs/core-react/contextmenu/GlobalContextMenu.js.map +1 -1
- package/lib/cjs/core-react/dialog/Dialog.d.ts +3 -0
- package/lib/cjs/core-react/dialog/Dialog.d.ts.map +1 -1
- package/lib/cjs/core-react/dialog/Dialog.js +17 -3
- package/lib/cjs/core-react/dialog/Dialog.js.map +1 -1
- package/lib/cjs/core-react/dialog/GlobalDialog.d.ts +3 -0
- package/lib/cjs/core-react/dialog/GlobalDialog.d.ts.map +1 -1
- package/lib/cjs/core-react/dialog/GlobalDialog.js +7 -3
- package/lib/cjs/core-react/dialog/GlobalDialog.js.map +1 -1
- package/lib/cjs/core-react/elementseparator/ElementSeparator.d.ts +4 -2
- package/lib/cjs/core-react/elementseparator/ElementSeparator.d.ts.map +1 -1
- package/lib/cjs/core-react/elementseparator/ElementSeparator.js +4 -2
- package/lib/cjs/core-react/elementseparator/ElementSeparator.js.map +1 -1
- package/lib/cjs/core-react/expandable/ExpandableList.d.ts +3 -3
- package/lib/cjs/core-react/expandable/ExpandableList.d.ts.map +1 -1
- package/lib/cjs/core-react/expandable/ExpandableList.js +5 -2
- package/lib/cjs/core-react/expandable/ExpandableList.js.map +1 -1
- package/lib/cjs/core-react/hocs/withOnOutsideClick.js +1 -2
- package/lib/cjs/core-react/hocs/withOnOutsideClick.js.map +1 -1
- package/lib/cjs/core-react/icons/IconComponent.d.ts.map +1 -1
- package/lib/cjs/core-react/icons/IconComponent.js +22 -12
- package/lib/cjs/core-react/icons/IconComponent.js.map +1 -1
- package/lib/cjs/core-react/imagecheckbox/ImageCheckBox.d.ts +3 -2
- package/lib/cjs/core-react/imagecheckbox/ImageCheckBox.d.ts.map +1 -1
- package/lib/cjs/core-react/imagecheckbox/ImageCheckBox.js +3 -2
- package/lib/cjs/core-react/imagecheckbox/ImageCheckBox.js.map +1 -1
- package/lib/cjs/core-react/inputs/InputLabel.d.ts +2 -0
- package/lib/cjs/core-react/inputs/InputLabel.d.ts.map +1 -1
- package/lib/cjs/core-react/inputs/InputLabel.js +5 -0
- package/lib/cjs/core-react/inputs/InputLabel.js.map +1 -1
- package/lib/cjs/core-react/inputs/InputStatus.d.ts +1 -0
- package/lib/cjs/core-react/inputs/InputStatus.d.ts.map +1 -1
- package/lib/cjs/core-react/inputs/InputStatus.js +1 -0
- package/lib/cjs/core-react/inputs/InputStatus.js.map +1 -1
- package/lib/cjs/core-react/inputs/LabeledComponentProps.d.ts +2 -0
- package/lib/cjs/core-react/inputs/LabeledComponentProps.d.ts.map +1 -1
- package/lib/cjs/core-react/inputs/LabeledComponentProps.js.map +1 -1
- package/lib/cjs/core-react/inputs/iconinput/IconInput.d.ts +2 -0
- package/lib/cjs/core-react/inputs/iconinput/IconInput.d.ts.map +1 -1
- package/lib/cjs/core-react/inputs/iconinput/IconInput.js +3 -0
- package/lib/cjs/core-react/inputs/iconinput/IconInput.js.map +1 -1
- package/lib/cjs/core-react/inputs/numberinput/NumberInput.d.ts +3 -0
- package/lib/cjs/core-react/inputs/numberinput/NumberInput.d.ts.map +1 -1
- package/lib/cjs/core-react/inputs/numberinput/NumberInput.js +1 -0
- package/lib/cjs/core-react/inputs/numberinput/NumberInput.js.map +1 -1
- package/lib/cjs/core-react/l10n/usePackageTranslation.js +1 -1
- package/lib/cjs/core-react/l10n/usePackageTranslation.js.map +1 -1
- package/lib/cjs/core-react/listbox/Listbox.d.ts +14 -14
- package/lib/cjs/core-react/listbox/Listbox.d.ts.map +1 -1
- package/lib/cjs/core-react/listbox/Listbox.js +8 -10
- package/lib/cjs/core-react/listbox/Listbox.js.map +1 -1
- package/lib/cjs/core-react/loading/LoadingBar.d.ts +3 -2
- package/lib/cjs/core-react/loading/LoadingBar.d.ts.map +1 -1
- package/lib/cjs/core-react/loading/LoadingBar.js +2 -2
- package/lib/cjs/core-react/loading/LoadingBar.js.map +1 -1
- package/lib/cjs/core-react/loading/LoadingPrompt.d.ts +3 -2
- package/lib/cjs/core-react/loading/LoadingPrompt.d.ts.map +1 -1
- package/lib/cjs/core-react/loading/LoadingPrompt.js +2 -2
- package/lib/cjs/core-react/loading/LoadingPrompt.js.map +1 -1
- package/lib/cjs/core-react/loading/LoadingSpinner.d.ts +4 -2
- package/lib/cjs/core-react/loading/LoadingSpinner.d.ts.map +1 -1
- package/lib/cjs/core-react/loading/LoadingSpinner.js +2 -2
- package/lib/cjs/core-react/loading/LoadingSpinner.js.map +1 -1
- package/lib/cjs/core-react/loading/LoadingStatus.d.ts +3 -2
- package/lib/cjs/core-react/loading/LoadingStatus.d.ts.map +1 -1
- package/lib/cjs/core-react/loading/LoadingStatus.js +2 -2
- package/lib/cjs/core-react/loading/LoadingStatus.js.map +1 -1
- package/lib/cjs/core-react/messagebox/MessageBox.d.ts.map +1 -1
- package/lib/cjs/core-react/messagebox/MessageBox.js +3 -1
- package/lib/cjs/core-react/messagebox/MessageBox.js.map +1 -1
- package/lib/cjs/core-react/notification/MessageRenderer.js +1 -1
- package/lib/cjs/core-react/notification/MessageRenderer.js.map +1 -1
- package/lib/cjs/core-react/popup/Popup.js +4 -8
- package/lib/cjs/core-react/popup/Popup.js.map +1 -1
- package/lib/cjs/core-react/radialmenu/Annulus.d.ts +7 -8
- package/lib/cjs/core-react/radialmenu/Annulus.d.ts.map +1 -1
- package/lib/cjs/core-react/radialmenu/Annulus.js +7 -8
- package/lib/cjs/core-react/radialmenu/Annulus.js.map +1 -1
- package/lib/cjs/core-react/radialmenu/RadialMenu.d.ts +0 -1
- package/lib/cjs/core-react/radialmenu/RadialMenu.d.ts.map +1 -1
- package/lib/cjs/core-react/radialmenu/RadialMenu.js.map +1 -1
- package/lib/cjs/core-react/searchbox/SearchBox.d.ts +3 -3
- package/lib/cjs/core-react/searchbox/SearchBox.d.ts.map +1 -1
- package/lib/cjs/core-react/searchbox/SearchBox.js +2 -2
- package/lib/cjs/core-react/searchbox/SearchBox.js.map +1 -1
- package/lib/cjs/core-react/settings/SettingsContainer.d.ts.map +1 -1
- package/lib/cjs/core-react/settings/SettingsContainer.js +8 -4
- package/lib/cjs/core-react/settings/SettingsContainer.js.map +1 -1
- package/lib/cjs/core-react/settings/SettingsManager.d.ts +10 -7
- package/lib/cjs/core-react/settings/SettingsManager.d.ts.map +1 -1
- package/lib/cjs/core-react/settings/SettingsManager.js +14 -12
- package/lib/cjs/core-react/settings/SettingsManager.js.map +1 -1
- package/lib/cjs/core-react/tabs/Tabs.d.ts +5 -5
- package/lib/cjs/core-react/tabs/Tabs.d.ts.map +1 -1
- package/lib/cjs/core-react/tabs/Tabs.js +1 -0
- package/lib/cjs/core-react/tabs/Tabs.js.map +1 -1
- package/lib/cjs/core-react/tabs/VerticalTabs.d.ts +1 -0
- package/lib/cjs/core-react/tabs/VerticalTabs.d.ts.map +1 -1
- package/lib/cjs/core-react/tabs/VerticalTabs.js +2 -0
- package/lib/cjs/core-react/tabs/VerticalTabs.js.map +1 -1
- package/lib/cjs/core-react/text/BlockText.d.ts +1 -0
- package/lib/cjs/core-react/text/BlockText.d.ts.map +1 -1
- package/lib/cjs/core-react/text/BlockText.js +2 -0
- package/lib/cjs/core-react/text/BlockText.js.map +1 -1
- package/lib/cjs/core-react/text/BodyText.d.ts +1 -1
- package/lib/cjs/core-react/text/BodyText.d.ts.map +1 -1
- package/lib/cjs/core-react/text/BodyText.js +2 -1
- package/lib/cjs/core-react/text/BodyText.js.map +1 -1
- package/lib/cjs/core-react/text/DisabledText.d.ts +1 -0
- package/lib/cjs/core-react/text/DisabledText.d.ts.map +1 -1
- package/lib/cjs/core-react/text/DisabledText.js +2 -1
- package/lib/cjs/core-react/text/DisabledText.js.map +1 -1
- package/lib/cjs/core-react/text/MutedText.d.ts.map +1 -1
- package/lib/cjs/core-react/text/MutedText.js +1 -0
- package/lib/cjs/core-react/text/MutedText.js.map +1 -1
- package/lib/cjs/core-react/text/StyledText.d.ts +1 -0
- package/lib/cjs/core-react/text/StyledText.d.ts.map +1 -1
- package/lib/cjs/core-react/text/StyledText.js.map +1 -1
- package/lib/cjs/core-react/text/TextProps.d.ts +1 -0
- package/lib/cjs/core-react/text/TextProps.d.ts.map +1 -1
- package/lib/cjs/core-react/text/TextProps.js.map +1 -1
- package/lib/cjs/core-react/tree/ExpansionToggle.d.ts.map +1 -1
- package/lib/cjs/core-react/tree/ExpansionToggle.js +1 -1
- package/lib/cjs/core-react/tree/ExpansionToggle.js.map +1 -1
- package/lib/cjs/core-react/tree/Node.js +1 -2
- package/lib/cjs/core-react/tree/Node.js.map +1 -1
- package/lib/cjs/core-react/utils/IconWebComponent.js +1 -1
- package/lib/cjs/core-react/utils/IconWebComponent.js.map +1 -1
- package/lib/cjs/core-react/utils/getCssVariable.js +1 -1
- package/lib/cjs/core-react/utils/getCssVariable.js.map +1 -1
- package/lib/cjs/core-react/utils/getObjectClassName.js +2 -3
- package/lib/cjs/core-react/utils/getObjectClassName.js.map +1 -1
- package/lib/cjs/core-react/utils/hooks/ResizeObserverPolyfill.d.ts +4 -1
- package/lib/cjs/core-react/utils/hooks/ResizeObserverPolyfill.d.ts.map +1 -1
- package/lib/cjs/core-react/utils/hooks/ResizeObserverPolyfill.js +5 -2
- package/lib/cjs/core-react/utils/hooks/ResizeObserverPolyfill.js.map +1 -1
- package/lib/cjs/core-react/utils/hooks/useCrossOriginPopup.d.ts +1 -1
- package/lib/cjs/core-react/utils/hooks/useCrossOriginPopup.js +2 -3
- package/lib/cjs/core-react/utils/hooks/useCrossOriginPopup.js.map +1 -1
- package/lib/cjs/core-react/utils/hooks/useResizeObserver.d.ts.map +1 -1
- package/lib/cjs/core-react/utils/hooks/useResizeObserver.js +12 -16
- package/lib/cjs/core-react/utils/hooks/useResizeObserver.js.map +1 -1
- 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 +1 -1
- package/lib/esm/core-react/autosuggest/AutoSuggest.js.map +1 -1
- package/lib/esm/core-react/base/Centered.d.ts +1 -0
- package/lib/esm/core-react/base/Centered.d.ts.map +1 -1
- package/lib/esm/core-react/base/Centered.js +2 -0
- package/lib/esm/core-react/base/Centered.js.map +1 -1
- package/lib/esm/core-react/base/Div.d.ts +2 -0
- package/lib/esm/core-react/base/Div.d.ts.map +1 -1
- package/lib/esm/core-react/base/Div.js +2 -0
- package/lib/esm/core-react/base/Div.js.map +1 -1
- package/lib/esm/core-react/base/DivWithOutsideClick.d.ts +1 -0
- package/lib/esm/core-react/base/DivWithOutsideClick.d.ts.map +1 -1
- package/lib/esm/core-react/base/DivWithOutsideClick.js +1 -0
- package/lib/esm/core-react/base/DivWithOutsideClick.js.map +1 -1
- package/lib/esm/core-react/base/FillCentered.d.ts +1 -0
- package/lib/esm/core-react/base/FillCentered.d.ts.map +1 -1
- package/lib/esm/core-react/base/FillCentered.js +2 -0
- package/lib/esm/core-react/base/FillCentered.js.map +1 -1
- package/lib/esm/core-react/base/FlexWrapContainer.d.ts +1 -0
- package/lib/esm/core-react/base/FlexWrapContainer.d.ts.map +1 -1
- package/lib/esm/core-react/base/FlexWrapContainer.js +2 -0
- package/lib/esm/core-react/base/FlexWrapContainer.js.map +1 -1
- package/lib/esm/core-react/base/Gap.d.ts +2 -0
- package/lib/esm/core-react/base/Gap.d.ts.map +1 -1
- package/lib/esm/core-react/base/Gap.js +3 -1
- package/lib/esm/core-react/base/Gap.js.map +1 -1
- package/lib/esm/core-react/base/ScrollView.d.ts +1 -0
- package/lib/esm/core-react/base/ScrollView.d.ts.map +1 -1
- package/lib/esm/core-react/base/ScrollView.js +2 -0
- package/lib/esm/core-react/base/ScrollView.js.map +1 -1
- package/lib/esm/core-react/button/UnderlinedButton.d.ts +2 -0
- package/lib/esm/core-react/button/UnderlinedButton.d.ts.map +1 -1
- package/lib/esm/core-react/button/UnderlinedButton.js +2 -0
- package/lib/esm/core-react/button/UnderlinedButton.js.map +1 -1
- package/lib/esm/core-react/checklistbox/CheckListBox.d.ts +4 -0
- package/lib/esm/core-react/checklistbox/CheckListBox.d.ts.map +1 -1
- package/lib/esm/core-react/checklistbox/CheckListBox.js +4 -0
- package/lib/esm/core-react/checklistbox/CheckListBox.js.map +1 -1
- package/lib/esm/core-react/contextmenu/ContextMenu.d.ts.map +1 -1
- package/lib/esm/core-react/contextmenu/ContextMenu.js +1 -2
- package/lib/esm/core-react/contextmenu/ContextMenu.js.map +1 -1
- package/lib/esm/core-react/contextmenu/GlobalContextMenu.js +3 -5
- package/lib/esm/core-react/contextmenu/GlobalContextMenu.js.map +1 -1
- package/lib/esm/core-react/dialog/Dialog.d.ts +3 -0
- package/lib/esm/core-react/dialog/Dialog.d.ts.map +1 -1
- package/lib/esm/core-react/dialog/Dialog.js +17 -3
- package/lib/esm/core-react/dialog/Dialog.js.map +1 -1
- package/lib/esm/core-react/dialog/GlobalDialog.d.ts +3 -0
- package/lib/esm/core-react/dialog/GlobalDialog.d.ts.map +1 -1
- package/lib/esm/core-react/dialog/GlobalDialog.js +7 -3
- package/lib/esm/core-react/dialog/GlobalDialog.js.map +1 -1
- package/lib/esm/core-react/elementseparator/ElementSeparator.d.ts +4 -2
- package/lib/esm/core-react/elementseparator/ElementSeparator.d.ts.map +1 -1
- package/lib/esm/core-react/elementseparator/ElementSeparator.js +4 -2
- package/lib/esm/core-react/elementseparator/ElementSeparator.js.map +1 -1
- package/lib/esm/core-react/expandable/ExpandableList.d.ts +3 -3
- package/lib/esm/core-react/expandable/ExpandableList.d.ts.map +1 -1
- package/lib/esm/core-react/expandable/ExpandableList.js +5 -2
- package/lib/esm/core-react/expandable/ExpandableList.js.map +1 -1
- package/lib/esm/core-react/hocs/withOnOutsideClick.js +1 -2
- package/lib/esm/core-react/hocs/withOnOutsideClick.js.map +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/imagecheckbox/ImageCheckBox.d.ts +3 -2
- package/lib/esm/core-react/imagecheckbox/ImageCheckBox.d.ts.map +1 -1
- package/lib/esm/core-react/imagecheckbox/ImageCheckBox.js +3 -2
- package/lib/esm/core-react/imagecheckbox/ImageCheckBox.js.map +1 -1
- package/lib/esm/core-react/inputs/InputLabel.d.ts +2 -0
- package/lib/esm/core-react/inputs/InputLabel.d.ts.map +1 -1
- package/lib/esm/core-react/inputs/InputLabel.js +5 -0
- package/lib/esm/core-react/inputs/InputLabel.js.map +1 -1
- package/lib/esm/core-react/inputs/InputStatus.d.ts +1 -0
- package/lib/esm/core-react/inputs/InputStatus.d.ts.map +1 -1
- package/lib/esm/core-react/inputs/InputStatus.js +1 -0
- package/lib/esm/core-react/inputs/InputStatus.js.map +1 -1
- package/lib/esm/core-react/inputs/LabeledComponentProps.d.ts +2 -0
- package/lib/esm/core-react/inputs/LabeledComponentProps.d.ts.map +1 -1
- package/lib/esm/core-react/inputs/LabeledComponentProps.js.map +1 -1
- package/lib/esm/core-react/inputs/iconinput/IconInput.d.ts +2 -0
- package/lib/esm/core-react/inputs/iconinput/IconInput.d.ts.map +1 -1
- package/lib/esm/core-react/inputs/iconinput/IconInput.js +3 -0
- package/lib/esm/core-react/inputs/iconinput/IconInput.js.map +1 -1
- package/lib/esm/core-react/inputs/numberinput/NumberInput.d.ts +3 -0
- package/lib/esm/core-react/inputs/numberinput/NumberInput.d.ts.map +1 -1
- package/lib/esm/core-react/inputs/numberinput/NumberInput.js +1 -0
- package/lib/esm/core-react/inputs/numberinput/NumberInput.js.map +1 -1
- package/lib/esm/core-react/l10n/usePackageTranslation.js +1 -1
- package/lib/esm/core-react/l10n/usePackageTranslation.js.map +1 -1
- package/lib/esm/core-react/listbox/Listbox.d.ts +14 -14
- package/lib/esm/core-react/listbox/Listbox.d.ts.map +1 -1
- package/lib/esm/core-react/listbox/Listbox.js +8 -10
- package/lib/esm/core-react/listbox/Listbox.js.map +1 -1
- package/lib/esm/core-react/loading/LoadingBar.d.ts +3 -2
- package/lib/esm/core-react/loading/LoadingBar.d.ts.map +1 -1
- package/lib/esm/core-react/loading/LoadingBar.js +2 -2
- package/lib/esm/core-react/loading/LoadingBar.js.map +1 -1
- package/lib/esm/core-react/loading/LoadingPrompt.d.ts +3 -2
- package/lib/esm/core-react/loading/LoadingPrompt.d.ts.map +1 -1
- package/lib/esm/core-react/loading/LoadingPrompt.js +2 -2
- package/lib/esm/core-react/loading/LoadingPrompt.js.map +1 -1
- package/lib/esm/core-react/loading/LoadingSpinner.d.ts +4 -2
- package/lib/esm/core-react/loading/LoadingSpinner.d.ts.map +1 -1
- package/lib/esm/core-react/loading/LoadingSpinner.js +2 -2
- package/lib/esm/core-react/loading/LoadingSpinner.js.map +1 -1
- package/lib/esm/core-react/loading/LoadingStatus.d.ts +3 -2
- package/lib/esm/core-react/loading/LoadingStatus.d.ts.map +1 -1
- package/lib/esm/core-react/loading/LoadingStatus.js +2 -2
- package/lib/esm/core-react/loading/LoadingStatus.js.map +1 -1
- package/lib/esm/core-react/messagebox/MessageBox.d.ts.map +1 -1
- package/lib/esm/core-react/messagebox/MessageBox.js +3 -1
- package/lib/esm/core-react/messagebox/MessageBox.js.map +1 -1
- package/lib/esm/core-react/notification/MessageRenderer.js +1 -1
- package/lib/esm/core-react/notification/MessageRenderer.js.map +1 -1
- package/lib/esm/core-react/popup/Popup.js +4 -8
- package/lib/esm/core-react/popup/Popup.js.map +1 -1
- package/lib/esm/core-react/radialmenu/Annulus.d.ts +7 -8
- package/lib/esm/core-react/radialmenu/Annulus.d.ts.map +1 -1
- package/lib/esm/core-react/radialmenu/Annulus.js +7 -8
- package/lib/esm/core-react/radialmenu/Annulus.js.map +1 -1
- package/lib/esm/core-react/radialmenu/RadialMenu.d.ts +0 -1
- package/lib/esm/core-react/radialmenu/RadialMenu.d.ts.map +1 -1
- package/lib/esm/core-react/radialmenu/RadialMenu.js.map +1 -1
- package/lib/esm/core-react/searchbox/SearchBox.d.ts +3 -3
- package/lib/esm/core-react/searchbox/SearchBox.d.ts.map +1 -1
- package/lib/esm/core-react/searchbox/SearchBox.js +2 -2
- package/lib/esm/core-react/searchbox/SearchBox.js.map +1 -1
- package/lib/esm/core-react/settings/SettingsContainer.d.ts.map +1 -1
- package/lib/esm/core-react/settings/SettingsContainer.js +8 -4
- package/lib/esm/core-react/settings/SettingsContainer.js.map +1 -1
- package/lib/esm/core-react/settings/SettingsManager.d.ts +10 -7
- package/lib/esm/core-react/settings/SettingsManager.d.ts.map +1 -1
- package/lib/esm/core-react/settings/SettingsManager.js +13 -10
- package/lib/esm/core-react/settings/SettingsManager.js.map +1 -1
- package/lib/esm/core-react/tabs/Tabs.d.ts +5 -5
- package/lib/esm/core-react/tabs/Tabs.d.ts.map +1 -1
- package/lib/esm/core-react/tabs/Tabs.js +1 -0
- package/lib/esm/core-react/tabs/Tabs.js.map +1 -1
- package/lib/esm/core-react/tabs/VerticalTabs.d.ts +1 -0
- package/lib/esm/core-react/tabs/VerticalTabs.d.ts.map +1 -1
- package/lib/esm/core-react/tabs/VerticalTabs.js +2 -0
- package/lib/esm/core-react/tabs/VerticalTabs.js.map +1 -1
- package/lib/esm/core-react/text/BlockText.d.ts +1 -0
- package/lib/esm/core-react/text/BlockText.d.ts.map +1 -1
- package/lib/esm/core-react/text/BlockText.js +2 -0
- package/lib/esm/core-react/text/BlockText.js.map +1 -1
- package/lib/esm/core-react/text/BodyText.d.ts +1 -1
- package/lib/esm/core-react/text/BodyText.d.ts.map +1 -1
- package/lib/esm/core-react/text/BodyText.js +2 -1
- package/lib/esm/core-react/text/BodyText.js.map +1 -1
- package/lib/esm/core-react/text/DisabledText.d.ts +1 -0
- package/lib/esm/core-react/text/DisabledText.d.ts.map +1 -1
- package/lib/esm/core-react/text/DisabledText.js +2 -1
- package/lib/esm/core-react/text/DisabledText.js.map +1 -1
- package/lib/esm/core-react/text/MutedText.d.ts.map +1 -1
- package/lib/esm/core-react/text/MutedText.js +1 -0
- package/lib/esm/core-react/text/MutedText.js.map +1 -1
- package/lib/esm/core-react/text/StyledText.d.ts +1 -0
- package/lib/esm/core-react/text/StyledText.d.ts.map +1 -1
- package/lib/esm/core-react/text/StyledText.js.map +1 -1
- package/lib/esm/core-react/text/TextProps.d.ts +1 -0
- package/lib/esm/core-react/text/TextProps.d.ts.map +1 -1
- package/lib/esm/core-react/text/TextProps.js.map +1 -1
- package/lib/esm/core-react/tree/ExpansionToggle.d.ts.map +1 -1
- package/lib/esm/core-react/tree/ExpansionToggle.js +1 -1
- package/lib/esm/core-react/tree/ExpansionToggle.js.map +1 -1
- package/lib/esm/core-react/tree/Node.js +1 -2
- package/lib/esm/core-react/tree/Node.js.map +1 -1
- package/lib/esm/core-react/utils/IconWebComponent.js +1 -1
- package/lib/esm/core-react/utils/IconWebComponent.js.map +1 -1
- package/lib/esm/core-react/utils/getCssVariable.js +1 -1
- package/lib/esm/core-react/utils/getCssVariable.js.map +1 -1
- package/lib/esm/core-react/utils/getObjectClassName.js +2 -3
- package/lib/esm/core-react/utils/getObjectClassName.js.map +1 -1
- package/lib/esm/core-react/utils/hooks/ResizeObserverPolyfill.d.ts +4 -1
- package/lib/esm/core-react/utils/hooks/ResizeObserverPolyfill.d.ts.map +1 -1
- package/lib/esm/core-react/utils/hooks/ResizeObserverPolyfill.js +3 -1
- package/lib/esm/core-react/utils/hooks/ResizeObserverPolyfill.js.map +1 -1
- package/lib/esm/core-react/utils/hooks/useCrossOriginPopup.d.ts +1 -1
- package/lib/esm/core-react/utils/hooks/useCrossOriginPopup.js +2 -3
- package/lib/esm/core-react/utils/hooks/useCrossOriginPopup.js.map +1 -1
- package/lib/esm/core-react/utils/hooks/useResizeObserver.d.ts.map +1 -1
- package/lib/esm/core-react/utils/hooks/useResizeObserver.js +13 -17
- package/lib/esm/core-react/utils/hooks/useResizeObserver.js.map +1 -1
- package/package.json +7 -31
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RadialMenu.js","sourceRoot":"","sources":["../../../../src/core-react/radialmenu/RadialMenu.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 RadialMenu\n */\n\nimport \"./RadialMenu.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { Key } from \"ts-key-enum\";\nimport type { IconSpec } from \"../icons/IconComponent\";\nimport { Icon } from \"../icons/IconComponent\";\nimport { Point } from \"../utils/Point\";\nimport type { CommonProps } from \"../utils/Props\";\nimport { AnnularSector, Annulus } from \"./Annulus\";\n\n/** Properties for [[RadialMenu]]\n * @public\n */\nexport interface RadialMenuProps extends CommonProps {\n /** Whether to show RadialMenu */\n opened: boolean;\n /** Radius of inner portion of RadialMenu */\n innerRadius: number;\n /** Radius of outer portion of RadialMenu */\n outerRadius: number;\n /** Optional parameter to specify left position in viewport. */\n left?: number | string;\n /** Optional parameter to specify top position in viewport. */\n top?: number | string;\n /** Whether to rotate labels according to location on the RadialMenu, or to keep labels upright.\n * Default: false\n */\n labelRotate?: boolean;\n /** Which child RadialButton to highlight */\n selected?: number;\n /** triggered in case of onClick events anywhere other than radial menu */\n onBlur?: (event: any) => any;\n /** triggered onKeyUp for <Esc> key */\n onEsc?: (event: any) => any;\n /** Content */\n children?: React.ReactNode;\n}\n\n/** @internal */\ninterface RadialMenuState {\n sectors: AnnularSector[];\n}\n\n/**\n * A context menu arranged in a radial layout.\n * @public\n */\nexport class RadialMenu extends React.Component<\n RadialMenuProps,\n RadialMenuState\n> {\n private _root: HTMLDivElement | null = null;\n private _selectedButton: RadialButton | null = null;\n public static defaultProps: Partial<RadialMenuProps> = {\n labelRotate: false,\n selected: -1,\n };\n\n /** @internal */\n public override readonly state: Readonly<RadialMenuState> = {\n sectors: [],\n };\n\n constructor(props: RadialMenuProps) {\n super(props);\n }\n\n public override render(): React.ReactElement {\n const width = 2 * (this.props.outerRadius + 1);\n let x = this.props.left,\n y = this.props.top;\n\n if (\n this.props.left &&\n this.props.top &&\n typeof this.props.left === \"number\" &&\n typeof this.props.top === \"number\"\n ) {\n x = this.props.left;\n y = this.props.top;\n\n if (x < 0) x = 0;\n if (x > window.innerWidth - width) x = window.innerWidth - width;\n if (y < 0) y = 0;\n if (y > window.innerHeight - width) y = window.innerHeight - width;\n }\n\n const divStyle: React.CSSProperties = {\n left: x,\n top: y,\n ...this.props.style,\n };\n\n return (\n <div\n ref={(el) => {\n this._root = el;\n }}\n className={classnames(\n \"core-radial-menu\",\n { opened: this.props.opened },\n this.props.className\n )}\n style={divStyle}\n data-testid=\"core-radial-menu\"\n >\n <svg\n xmlns=\"http://w3.org/2000/svg\"\n version=\"1.1\"\n width={width}\n height={width}\n className={\"core-radial-menu-container\"}\n >\n {React.Children.map(this.props.children, (child, index) => {\n // istanbul ignore next\n if (!child || typeof child !== \"object\" || !(\"props\" in child))\n return child;\n\n const childElement = child as React.ReactElement<any>;\n return React.cloneElement(childElement, {\n key: index,\n ref: (el: any) => {\n if (this.props.selected === index) this._selectedButton = el;\n },\n selected: index === this.props.selected,\n labelRotate:\n childElement.props.labelRotate || this.props.labelRotate,\n annularSector: this.state.sectors[index],\n });\n })}\n </svg>\n </div>\n );\n }\n\n public override componentDidMount() {\n this._generateAnnularSectors();\n\n setTimeout(() => {\n window.addEventListener(\"keyup\", this._handleKeyUp);\n window.addEventListener(\"mouseup\", this._handleClick);\n });\n }\n\n public override componentWillUnmount() {\n window.removeEventListener(\"keyup\", this._handleKeyUp);\n window.removeEventListener(\"mouseup\", this._handleClick);\n }\n\n public override componentDidUpdate(prevProps: RadialMenuProps) {\n if (\n prevProps.innerRadius !== this.props.innerRadius ||\n prevProps.outerRadius !== this.props.outerRadius\n ) {\n this._generateAnnularSectors();\n }\n }\n\n private _handleKeyUp = (event: KeyboardEvent) => {\n if (event.key === Key.Escape.valueOf() && this.props.onEsc)\n this.props.onEsc(event);\n };\n\n private _handleClick = (event: MouseEvent) => {\n if (\n event.target instanceof HTMLElement &&\n this._root &&\n !event.target.contains(this._root) &&\n this.props.onBlur\n )\n this.props.onBlur(event);\n };\n\n /** Manually call onSelect of highlighted button. */\n public select = () => {\n // istanbul ignore else\n if (this._selectedButton) this._selectedButton.select();\n };\n\n private _generateAnnularSectors = () => {\n const n = React.Children.count(this.props.children);\n const angle = (2 * Math.PI) / n;\n const outer = this.props.outerRadius;\n const inner = this.props.innerRadius;\n\n const offset = -Math.PI / 8;\n const annulus = new Annulus(\n new Point(outer + 1, outer + 1),\n inner + 1,\n outer - 1\n );\n const sectors: AnnularSector[] = [];\n for (let i = 0; i < n; i++) {\n sectors.push(\n new AnnularSector(annulus, angle * i + offset, angle * (i + 1) + offset)\n );\n }\n this.setState({ sectors });\n };\n}\n\n/** Properties for [[RadialButton]] component\n * @public\n */\nexport interface RadialButtonProps extends CommonProps {\n /** Whether label is rotated to radial menu. Default: Inherit */\n labelRotate?: boolean;\n /** which icon to display in on the menu button */\n icon?: IconSpec;\n /** @internal */\n annularSector?: AnnularSector;\n /** listens to any onClick event, or any select event, which can be triggered by the select() method. */\n onSelect?: (e: any) => any;\n /** Whether item is highlighted */\n selected?: boolean;\n /** Content */\n children?: React.ReactNode;\n}\n\n/** @internal */\ninterface RadialButtonState {\n hover: boolean;\n}\n\n/**\n * Button for use within a [[RadialMenu]]\n * @public\n */\nexport class RadialButton extends React.Component<\n RadialButtonProps,\n RadialButtonState\n> {\n /** @internal */\n public override readonly state: Readonly<RadialButtonState> = {\n hover: this.props.selected || false,\n };\n\n constructor(props: RadialButtonProps) {\n super(props);\n }\n\n public override render(): React.ReactElement {\n const sector = this.props.annularSector;\n let p = new Point();\n let size = 0;\n let t = \"\";\n let path = \"\";\n\n if (sector) {\n size = sector.start.p1.getDistanceTo(sector.end.p2) * 2;\n path = sector.path;\n\n const parent = sector.parent;\n const { x: cx, y: cy } = parent.center;\n const r = (parent.inner.radius + parent.outer.radius) / 2;\n const angle = (sector.startAngle + sector.endAngle) / 2;\n p = new Point(cx + r * Math.cos(angle), cy + r * Math.sin(angle));\n\n if (this.props.labelRotate) {\n let a = (angle * 180) / Math.PI + 90;\n while (a > 180) a -= 360;\n while (a < -180)\n /* istanbul ignore next */\n a += 360;\n if (a > 90) a -= 180;\n if (a < -90) a += 180;\n t = `rotate(${a} ${p.x}, ${p.y})`;\n }\n }\n\n return (\n <g\n onMouseOver={this._handleMouseOver}\n onMouseOut={this._handleMouseOut}\n onClick={this._handleClick}\n >\n <path\n className={classnames(\n \"core-radial-menu-sector\",\n { selected: this.state.hover },\n this.props.className\n )}\n style={this.props.style}\n d={path}\n ></path>\n <foreignObject\n transform={t}\n x={p.x - size / 2}\n y={p.y - 16}\n width={size}\n height={size}\n className={\"core-radial-menu-button-svg\"}\n >\n <div\n {...{ xmlns: \"http://www.w3.org/1999/xhtml\" }}\n className={\"core-radial-menu-button-container\"}\n >\n <div className=\"core-radial-menu-button-icon\">\n <Icon iconSpec={this.props.icon} />\n </div>\n <div className={\"core-radial-menu-button-content\"}>\n {this.props.children}\n </div>\n </div>\n </foreignObject>\n </g>\n );\n }\n\n /** Manually call this.props.onSelect */\n public select = () => {\n // istanbul ignore else\n if (this.props.onSelect) this.props.onSelect(undefined);\n };\n\n private _handleClick = (event: React.MouseEvent<SVGElement>) => {\n // istanbul ignore else\n if (this.props.onSelect) this.props.onSelect(event);\n };\n\n private _handleMouseOver = (_event: React.MouseEvent<SVGElement>) => {\n this.setState({ hover: true });\n };\n\n private _handleMouseOut = (_event: React.MouseEvent<SVGElement>) => {\n this.setState({ hover: false });\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"RadialMenu.js","sourceRoot":"","sources":["../../../../src/core-react/radialmenu/RadialMenu.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 RadialMenu\n */\n\nimport \"./RadialMenu.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { Key } from \"ts-key-enum\";\nimport type { IconSpec } from \"../icons/IconComponent\";\nimport { Icon } from \"../icons/IconComponent\";\nimport { Point } from \"../utils/Point\";\nimport type { CommonProps } from \"../utils/Props\";\nimport { AnnularSector, Annulus } from \"./Annulus\";\n\n/** Properties for [[RadialMenu]]\n * @public\n */\nexport interface RadialMenuProps extends CommonProps {\n /** Whether to show RadialMenu */\n opened: boolean;\n /** Radius of inner portion of RadialMenu */\n innerRadius: number;\n /** Radius of outer portion of RadialMenu */\n outerRadius: number;\n /** Optional parameter to specify left position in viewport. */\n left?: number | string;\n /** Optional parameter to specify top position in viewport. */\n top?: number | string;\n /** Whether to rotate labels according to location on the RadialMenu, or to keep labels upright.\n * Default: false\n */\n labelRotate?: boolean;\n /** Which child RadialButton to highlight */\n selected?: number;\n /** triggered in case of onClick events anywhere other than radial menu */\n onBlur?: (event: any) => any;\n /** triggered onKeyUp for <Esc> key */\n onEsc?: (event: any) => any;\n /** Content */\n children?: React.ReactNode;\n}\n\ninterface RadialMenuState {\n sectors: AnnularSector[];\n}\n\n/**\n * A context menu arranged in a radial layout.\n * @public\n */\nexport class RadialMenu extends React.Component<\n RadialMenuProps,\n RadialMenuState\n> {\n private _root: HTMLDivElement | null = null;\n private _selectedButton: RadialButton | null = null;\n public static defaultProps: Partial<RadialMenuProps> = {\n labelRotate: false,\n selected: -1,\n };\n\n /** @internal */\n public override readonly state: Readonly<RadialMenuState> = {\n sectors: [],\n };\n\n constructor(props: RadialMenuProps) {\n super(props);\n }\n\n public override render(): React.ReactElement {\n const width = 2 * (this.props.outerRadius + 1);\n let x = this.props.left,\n y = this.props.top;\n\n if (\n this.props.left &&\n this.props.top &&\n typeof this.props.left === \"number\" &&\n typeof this.props.top === \"number\"\n ) {\n x = this.props.left;\n y = this.props.top;\n\n if (x < 0) x = 0;\n if (x > window.innerWidth - width) x = window.innerWidth - width;\n if (y < 0) y = 0;\n if (y > window.innerHeight - width) y = window.innerHeight - width;\n }\n\n const divStyle: React.CSSProperties = {\n left: x,\n top: y,\n ...this.props.style,\n };\n\n return (\n <div\n ref={(el) => {\n this._root = el;\n }}\n className={classnames(\n \"core-radial-menu\",\n { opened: this.props.opened },\n this.props.className\n )}\n style={divStyle}\n data-testid=\"core-radial-menu\"\n >\n <svg\n xmlns=\"http://w3.org/2000/svg\"\n version=\"1.1\"\n width={width}\n height={width}\n className={\"core-radial-menu-container\"}\n >\n {React.Children.map(this.props.children, (child, index) => {\n // istanbul ignore next\n if (!child || typeof child !== \"object\" || !(\"props\" in child))\n return child;\n\n const childElement = child as React.ReactElement<any>;\n return React.cloneElement(childElement, {\n key: index,\n ref: (el: any) => {\n if (this.props.selected === index) this._selectedButton = el;\n },\n selected: index === this.props.selected,\n labelRotate:\n childElement.props.labelRotate || this.props.labelRotate,\n annularSector: this.state.sectors[index],\n });\n })}\n </svg>\n </div>\n );\n }\n\n public override componentDidMount() {\n this._generateAnnularSectors();\n\n setTimeout(() => {\n window.addEventListener(\"keyup\", this._handleKeyUp);\n window.addEventListener(\"mouseup\", this._handleClick);\n });\n }\n\n public override componentWillUnmount() {\n window.removeEventListener(\"keyup\", this._handleKeyUp);\n window.removeEventListener(\"mouseup\", this._handleClick);\n }\n\n public override componentDidUpdate(prevProps: RadialMenuProps) {\n if (\n prevProps.innerRadius !== this.props.innerRadius ||\n prevProps.outerRadius !== this.props.outerRadius\n ) {\n this._generateAnnularSectors();\n }\n }\n\n private _handleKeyUp = (event: KeyboardEvent) => {\n if (event.key === Key.Escape.valueOf() && this.props.onEsc)\n this.props.onEsc(event);\n };\n\n private _handleClick = (event: MouseEvent) => {\n if (\n event.target instanceof HTMLElement &&\n this._root &&\n !event.target.contains(this._root) &&\n this.props.onBlur\n )\n this.props.onBlur(event);\n };\n\n /** Manually call onSelect of highlighted button. */\n public select = () => {\n // istanbul ignore else\n if (this._selectedButton) this._selectedButton.select();\n };\n\n private _generateAnnularSectors = () => {\n const n = React.Children.count(this.props.children);\n const angle = (2 * Math.PI) / n;\n const outer = this.props.outerRadius;\n const inner = this.props.innerRadius;\n\n const offset = -Math.PI / 8;\n const annulus = new Annulus(\n new Point(outer + 1, outer + 1),\n inner + 1,\n outer - 1\n );\n const sectors: AnnularSector[] = [];\n for (let i = 0; i < n; i++) {\n sectors.push(\n new AnnularSector(annulus, angle * i + offset, angle * (i + 1) + offset)\n );\n }\n this.setState({ sectors });\n };\n}\n\n/** Properties for [[RadialButton]] component\n * @public\n */\nexport interface RadialButtonProps extends CommonProps {\n /** Whether label is rotated to radial menu. Default: Inherit */\n labelRotate?: boolean;\n /** which icon to display in on the menu button */\n icon?: IconSpec;\n /** @internal */\n annularSector?: AnnularSector;\n /** listens to any onClick event, or any select event, which can be triggered by the select() method. */\n onSelect?: (e: any) => any;\n /** Whether item is highlighted */\n selected?: boolean;\n /** Content */\n children?: React.ReactNode;\n}\n\n/** @internal */\ninterface RadialButtonState {\n hover: boolean;\n}\n\n/**\n * Button for use within a [[RadialMenu]]\n * @public\n */\nexport class RadialButton extends React.Component<\n RadialButtonProps,\n RadialButtonState\n> {\n /** @internal */\n public override readonly state: Readonly<RadialButtonState> = {\n hover: this.props.selected || false,\n };\n\n constructor(props: RadialButtonProps) {\n super(props);\n }\n\n public override render(): React.ReactElement {\n const sector = this.props.annularSector;\n let p = new Point();\n let size = 0;\n let t = \"\";\n let path = \"\";\n\n if (sector) {\n size = sector.start.p1.getDistanceTo(sector.end.p2) * 2;\n path = sector.path;\n\n const parent = sector.parent;\n const { x: cx, y: cy } = parent.center;\n const r = (parent.inner.radius + parent.outer.radius) / 2;\n const angle = (sector.startAngle + sector.endAngle) / 2;\n p = new Point(cx + r * Math.cos(angle), cy + r * Math.sin(angle));\n\n if (this.props.labelRotate) {\n let a = (angle * 180) / Math.PI + 90;\n while (a > 180) a -= 360;\n while (a < -180)\n /* istanbul ignore next */\n a += 360;\n if (a > 90) a -= 180;\n if (a < -90) a += 180;\n t = `rotate(${a} ${p.x}, ${p.y})`;\n }\n }\n\n return (\n <g\n onMouseOver={this._handleMouseOver}\n onMouseOut={this._handleMouseOut}\n onClick={this._handleClick}\n >\n <path\n className={classnames(\n \"core-radial-menu-sector\",\n { selected: this.state.hover },\n this.props.className\n )}\n style={this.props.style}\n d={path}\n ></path>\n <foreignObject\n transform={t}\n x={p.x - size / 2}\n y={p.y - 16}\n width={size}\n height={size}\n className={\"core-radial-menu-button-svg\"}\n >\n <div\n {...{ xmlns: \"http://www.w3.org/1999/xhtml\" }}\n className={\"core-radial-menu-button-container\"}\n >\n <div className=\"core-radial-menu-button-icon\">\n <Icon iconSpec={this.props.icon} />\n </div>\n <div className={\"core-radial-menu-button-content\"}>\n {this.props.children}\n </div>\n </div>\n </foreignObject>\n </g>\n );\n }\n\n /** Manually call this.props.onSelect */\n public select = () => {\n // istanbul ignore else\n if (this.props.onSelect) this.props.onSelect(undefined);\n };\n\n private _handleClick = (event: React.MouseEvent<SVGElement>) => {\n // istanbul ignore else\n if (this.props.onSelect) this.props.onSelect(event);\n };\n\n private _handleMouseOver = (_event: React.MouseEvent<SVGElement>) => {\n this.setState({ hover: true });\n };\n\n private _handleMouseOut = (_event: React.MouseEvent<SVGElement>) => {\n this.setState({ hover: false });\n };\n}\n"]}
|
|
@@ -6,6 +6,7 @@ import * as React from "react";
|
|
|
6
6
|
import type { CommonProps } from "../utils/Props";
|
|
7
7
|
/** Properties for [[SearchBox]] component
|
|
8
8
|
* @public
|
|
9
|
+
* @deprecated in 4.12.x. Props of deprecated component {@link SearchBox}.
|
|
9
10
|
*/
|
|
10
11
|
export interface SearchBoxProps extends CommonProps {
|
|
11
12
|
/** Value to set SearchBox to initially */
|
|
@@ -23,14 +24,13 @@ export interface SearchBoxProps extends CommonProps {
|
|
|
23
24
|
/** Listens for onClick event for Clear (x) icon */
|
|
24
25
|
onClear?: () => void;
|
|
25
26
|
}
|
|
26
|
-
/** @internal */
|
|
27
27
|
interface SearchBoxState {
|
|
28
28
|
value: string;
|
|
29
29
|
}
|
|
30
|
-
/**
|
|
31
|
-
* Input box for entering text to search for.
|
|
30
|
+
/** Input box for entering text to search for.
|
|
32
31
|
* The SearchBox has an icon right-justified and bounded by the box and shows a Search or Clear icon.
|
|
33
32
|
* @public
|
|
33
|
+
* @deprecated in 4.12.x. Use {@link https://itwinui.bentley.com/docs/searchbox iTwinUI SearchBox} instead.
|
|
34
34
|
*/
|
|
35
35
|
export declare class SearchBox extends React.Component<SearchBoxProps, SearchBoxState> {
|
|
36
36
|
private _inputElement;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchBox.d.ts","sourceRoot":"","sources":["../../../../src/core-react/searchbox/SearchBox.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,kBAAkB,CAAC;AAE1B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AASlD
|
|
1
|
+
{"version":3,"file":"SearchBox.d.ts","sourceRoot":"","sources":["../../../../src/core-react/searchbox/SearchBox.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,kBAAkB,CAAC;AAE1B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AASlD;;;GAGG;AACH,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,0CAA0C;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,8DAA8D;IAC9D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mCAAmC;IACnC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,iCAAiC;IACjC,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,UAAU,cAAc;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,qBAAa,SAAU,SAAQ,KAAK,CAAC,SAAS,CAAC,cAAc,EAAE,cAAc,CAAC;IAC5E,OAAO,CAAC,aAAa,CAAiC;IACtD,OAAO,CAAC,UAAU,CAAa;IAE/B,gBAAgB;IAChB,SAAyB,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,CAEtD;gBAEU,KAAK,EAAE,cAAc;IAIjC,gBAAgB;IACA,MAAM,IAAI,KAAK,CAAC,SAAS;IAuCzC,6HAA6H;IAC7H,OAAO,CAAC,eAAe,CAcrB;IACF,OAAO,CAAC,YAAY,CAelB;IAEF,OAAO,CAAC,cAAc,CAWpB;IAEF,OAAO,CAAC,gBAAgB,CAUtB;IAEF,OAAO,CAAC,aAAa,CAKnB;IAEc,oBAAoB;IAI7B,KAAK;CAIb"}
|
|
@@ -16,10 +16,10 @@ const itwinui_react_1 = require("@itwin/itwinui-react");
|
|
|
16
16
|
const IconComponent_1 = require("../icons/IconComponent");
|
|
17
17
|
const itwinui_icons_react_1 = require("@itwin/itwinui-icons-react");
|
|
18
18
|
const useTranslation_1 = require("../l10n/useTranslation");
|
|
19
|
-
/**
|
|
20
|
-
* Input box for entering text to search for.
|
|
19
|
+
/** Input box for entering text to search for.
|
|
21
20
|
* The SearchBox has an icon right-justified and bounded by the box and shows a Search or Clear icon.
|
|
22
21
|
* @public
|
|
22
|
+
* @deprecated in 4.12.x. Use {@link https://itwinui.bentley.com/docs/searchbox iTwinUI SearchBox} instead.
|
|
23
23
|
*/
|
|
24
24
|
class SearchBox extends React.Component {
|
|
25
25
|
constructor(props) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchBox.js","sourceRoot":"","sources":["../../../../src/core-react/searchbox/SearchBox.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 SearchBox\n */\n\nimport \"./SearchBox.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { Key } from \"ts-key-enum\";\nimport type { CommonProps } from \"../utils/Props\";\nimport { Input } from \"@itwin/itwinui-react\";\nimport type { IconSpec } from \"../icons/IconComponent\";\nimport { Icon } from \"../icons/IconComponent\";\nimport { SvgClose, SvgSearch } from \"@itwin/itwinui-icons-react\";\nimport { useTranslation } from \"../l10n/useTranslation\";\n\n// TODO: deprecate in favor of iTwinUI SearchBox.\n\n/** Properties for [[SearchBox]] component\n * @public\n */\nexport interface SearchBoxProps extends CommonProps {\n /** Value to set SearchBox to initially */\n initialValue?: string;\n /** Placeholder value to show in gray before anything is entered in */\n placeholder?: string;\n /** Triggered when the content of SearchBox is changed */\n onValueChanged: (value: string) => void;\n /** Frequency to poll for changes in value, in milliseconds */\n valueChangedDelay?: number;\n /** Listens for <Enter> keypress */\n onEnterPressed?: () => void;\n /** Listens for <Esc> keypress */\n onEscPressed?: () => void;\n /** Listens for onClick event for Clear (x) icon */\n onClear?: () => void;\n}\n\n/** @internal */\ninterface SearchBoxState {\n value: string;\n}\n\n/**\n * Input box for entering text to search for.\n * The SearchBox has an icon right-justified and bounded by the box and shows a Search or Clear icon.\n * @public\n */\nexport class SearchBox extends React.Component<SearchBoxProps, SearchBoxState> {\n private _inputElement: HTMLInputElement | null = null;\n private _timeoutId: number = 0;\n\n /** @internal */\n public override readonly state: Readonly<SearchBoxState> = {\n value: this.props.initialValue || \"\",\n };\n\n constructor(props: SearchBoxProps) {\n super(props);\n }\n\n /** @internal */\n public override render(): React.ReactNode {\n const searchClassName = classnames(\"core-searchbox\", this.props.className);\n const emptyString = this.state.value === \"\";\n const iconClassName = classnames(\"core-searchbox-icon\", \"icon\");\n const iconSpec: IconSpec = emptyString ? <SvgSearch /> : <SvgClose />;\n return (\n <div\n className={searchClassName}\n style={this.props.style}\n data-testid=\"core-searchbox-instance\"\n >\n <SearchBoxInput\n defaultValue={this.props.initialValue}\n ref={(el) => {\n this._inputElement = el;\n }}\n onChange={this._trackChange}\n onKeyDown={this._handleKeyDown}\n onPaste={this._trackChange}\n onCut={this._trackChange}\n placeholder={this.props.placeholder}\n role=\"searchbox\"\n data-testid=\"core-searchbox-input\"\n />\n <SearchBoxButton\n className=\"core-searchbox-button\"\n onClick={this._handleIconClick}\n role=\"button\"\n tabIndex={-1}\n emptyString={emptyString}\n >\n <span className={iconClassName}>\n <Icon iconSpec={iconSpec} />\n </span>\n </SearchBoxButton>\n </div>\n );\n }\n\n /** Wrapper for onValueChanged to make sure we don't call search unless the new value is different from the previous value */\n private _onValueChanged = (value: string, previousValue: string) => {\n // istanbul ignore else\n if (value === previousValue) return;\n\n this.setState(\n (_prevState) => {\n return {\n value,\n };\n },\n () => {\n this.props.onValueChanged(this.state.value);\n }\n );\n };\n private _trackChange = (_event?: any): void => {\n let value = \"\";\n const previousValue = this.state.value;\n\n // istanbul ignore else\n if (this._inputElement) value = this._inputElement.value;\n\n if (this.props.valueChangedDelay) {\n this._unsetTimeout();\n this._timeoutId = window.setTimeout(() => {\n this._onValueChanged(value, previousValue);\n }, this.props.valueChangedDelay);\n } else {\n this._onValueChanged(value, previousValue);\n }\n };\n\n private _handleKeyDown = (e: React.KeyboardEvent) => {\n switch (e.key) {\n case Key.Escape.valueOf():\n // istanbul ignore else\n if (this.props.onEscPressed) this.props.onEscPressed();\n break;\n case Key.Enter.valueOf():\n // istanbul ignore else\n if (this.props.onEnterPressed) this.props.onEnterPressed();\n break;\n }\n };\n\n private _handleIconClick = (_event: React.MouseEvent<HTMLElement>): void => {\n // istanbul ignore else\n if (this._inputElement) {\n const clear = this.state.value !== \"\";\n this._inputElement.value = \"\";\n // istanbul ignore else\n if (clear && this.props.onClear) this.props.onClear();\n this._inputElement.focus();\n }\n this._trackChange();\n };\n\n private _unsetTimeout = (): void => {\n if (this._timeoutId) {\n window.clearTimeout(this._timeoutId);\n this._timeoutId = 0;\n }\n };\n\n public override componentWillUnmount() {\n this._unsetTimeout();\n }\n\n public focus() {\n // istanbul ignore else\n if (this._inputElement) this._inputElement.focus();\n }\n}\n\nconst SearchBoxInput = React.forwardRef<\n HTMLInputElement,\n React.ComponentProps<typeof Input>\n>(function SearchBoxInput({ placeholder, ...props }, ref) {\n const { translate } = useTranslation();\n return (\n <Input\n ref={ref}\n placeholder={placeholder || translate(\"general.search\")}\n {...props}\n />\n );\n});\n\nfunction SearchBoxButton({\n emptyString,\n ...props\n}: React.ComponentProps<\"div\"> & { emptyString: boolean }) {\n const { translate } = useTranslation();\n const buttonTitle = translate(\n emptyString ? \"general.search\" : \"general.clear\"\n );\n return <div title={buttonTitle} {...props} />;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SearchBox.js","sourceRoot":"","sources":["../../../../src/core-react/searchbox/SearchBox.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 SearchBox\n */\n\nimport \"./SearchBox.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { Key } from \"ts-key-enum\";\nimport type { CommonProps } from \"../utils/Props\";\nimport { Input } from \"@itwin/itwinui-react\";\nimport type { IconSpec } from \"../icons/IconComponent\";\nimport { Icon } from \"../icons/IconComponent\";\nimport { SvgClose, SvgSearch } from \"@itwin/itwinui-icons-react\";\nimport { useTranslation } from \"../l10n/useTranslation\";\n\n/* eslint-disable deprecation/deprecation */\n\n/** Properties for [[SearchBox]] component\n * @public\n * @deprecated in 4.12.x. Props of deprecated component {@link SearchBox}.\n */\nexport interface SearchBoxProps extends CommonProps {\n /** Value to set SearchBox to initially */\n initialValue?: string;\n /** Placeholder value to show in gray before anything is entered in */\n placeholder?: string;\n /** Triggered when the content of SearchBox is changed */\n onValueChanged: (value: string) => void;\n /** Frequency to poll for changes in value, in milliseconds */\n valueChangedDelay?: number;\n /** Listens for <Enter> keypress */\n onEnterPressed?: () => void;\n /** Listens for <Esc> keypress */\n onEscPressed?: () => void;\n /** Listens for onClick event for Clear (x) icon */\n onClear?: () => void;\n}\n\ninterface SearchBoxState {\n value: string;\n}\n\n/** Input box for entering text to search for.\n * The SearchBox has an icon right-justified and bounded by the box and shows a Search or Clear icon.\n * @public\n * @deprecated in 4.12.x. Use {@link https://itwinui.bentley.com/docs/searchbox iTwinUI SearchBox} instead.\n */\nexport class SearchBox extends React.Component<SearchBoxProps, SearchBoxState> {\n private _inputElement: HTMLInputElement | null = null;\n private _timeoutId: number = 0;\n\n /** @internal */\n public override readonly state: Readonly<SearchBoxState> = {\n value: this.props.initialValue || \"\",\n };\n\n constructor(props: SearchBoxProps) {\n super(props);\n }\n\n /** @internal */\n public override render(): React.ReactNode {\n const searchClassName = classnames(\"core-searchbox\", this.props.className);\n const emptyString = this.state.value === \"\";\n const iconClassName = classnames(\"core-searchbox-icon\", \"icon\");\n const iconSpec: IconSpec = emptyString ? <SvgSearch /> : <SvgClose />;\n return (\n <div\n className={searchClassName}\n style={this.props.style}\n data-testid=\"core-searchbox-instance\"\n >\n <SearchBoxInput\n defaultValue={this.props.initialValue}\n ref={(el) => {\n this._inputElement = el;\n }}\n onChange={this._trackChange}\n onKeyDown={this._handleKeyDown}\n onPaste={this._trackChange}\n onCut={this._trackChange}\n placeholder={this.props.placeholder}\n role=\"searchbox\"\n data-testid=\"core-searchbox-input\"\n />\n <SearchBoxButton\n className=\"core-searchbox-button\"\n onClick={this._handleIconClick}\n role=\"button\"\n tabIndex={-1}\n emptyString={emptyString}\n >\n <span className={iconClassName}>\n <Icon iconSpec={iconSpec} />\n </span>\n </SearchBoxButton>\n </div>\n );\n }\n\n /** Wrapper for onValueChanged to make sure we don't call search unless the new value is different from the previous value */\n private _onValueChanged = (value: string, previousValue: string) => {\n // istanbul ignore else\n if (value === previousValue) return;\n\n this.setState(\n (_prevState) => {\n return {\n value,\n };\n },\n () => {\n this.props.onValueChanged(this.state.value);\n }\n );\n };\n private _trackChange = (_event?: any): void => {\n let value = \"\";\n const previousValue = this.state.value;\n\n // istanbul ignore else\n if (this._inputElement) value = this._inputElement.value;\n\n if (this.props.valueChangedDelay) {\n this._unsetTimeout();\n this._timeoutId = window.setTimeout(() => {\n this._onValueChanged(value, previousValue);\n }, this.props.valueChangedDelay);\n } else {\n this._onValueChanged(value, previousValue);\n }\n };\n\n private _handleKeyDown = (e: React.KeyboardEvent) => {\n switch (e.key) {\n case Key.Escape.valueOf():\n // istanbul ignore else\n if (this.props.onEscPressed) this.props.onEscPressed();\n break;\n case Key.Enter.valueOf():\n // istanbul ignore else\n if (this.props.onEnterPressed) this.props.onEnterPressed();\n break;\n }\n };\n\n private _handleIconClick = (_event: React.MouseEvent<HTMLElement>): void => {\n // istanbul ignore else\n if (this._inputElement) {\n const clear = this.state.value !== \"\";\n this._inputElement.value = \"\";\n // istanbul ignore else\n if (clear && this.props.onClear) this.props.onClear();\n this._inputElement.focus();\n }\n this._trackChange();\n };\n\n private _unsetTimeout = (): void => {\n if (this._timeoutId) {\n window.clearTimeout(this._timeoutId);\n this._timeoutId = 0;\n }\n };\n\n public override componentWillUnmount() {\n this._unsetTimeout();\n }\n\n public focus() {\n // istanbul ignore else\n if (this._inputElement) this._inputElement.focus();\n }\n}\n\nconst SearchBoxInput = React.forwardRef<\n HTMLInputElement,\n React.ComponentProps<typeof Input>\n>(function SearchBoxInput({ placeholder, ...props }, ref) {\n const { translate } = useTranslation();\n return (\n <Input\n ref={ref}\n placeholder={placeholder || translate(\"general.search\")}\n {...props}\n />\n );\n});\n\nfunction SearchBoxButton({\n emptyString,\n ...props\n}: React.ComponentProps<\"div\"> & { emptyString: boolean }) {\n const { translate } = useTranslation();\n const buttonTitle = translate(\n emptyString ? \"general.search\" : \"general.clear\"\n );\n return <div title={buttonTitle} {...props} />;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsContainer.d.ts","sourceRoot":"","sources":["../../../../src/core-react/settings/SettingsContainer.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,0BAA0B,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAIV,eAAe,EACf,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAiB3B;;GAEG;AACH,wBAAgB,qCAAqC,CACnD,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,EAAE,aAAa,CAAC,EAAE,GAAG,KAAK,IAAI,
|
|
1
|
+
{"version":3,"file":"SettingsContainer.d.ts","sourceRoot":"","sources":["../../../../src/core-react/settings/SettingsContainer.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,0BAA0B,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAIV,eAAe,EACf,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAiB3B;;GAEG;AACH,wBAAgB,qCAAqC,CACnD,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,EAAE,aAAa,CAAC,EAAE,GAAG,KAAK,IAAI,QAY5E;AAED;;GAEG;AACH,wBAAgB,qCAAqC,CACnD,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,CACZ,gBAAgB,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,EACrC,sBAAsB,CAAC,EAAE,MAAM,KAC5B,IAAI,QAeV;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,gBAAgB,EAAE,CAAC;IAEzB,kBAAkB,CAAC,EAAE,gBAAgB,CAAC;IAEtC,qBAAqB,CAAC,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAExD,eAAe,EAAE,eAAe,CAAC;IAEjC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,sFAM3B,sBAAsB,sBAkJxB,CAAC"}
|
|
@@ -29,7 +29,8 @@ const saveChanges = React.useCallback((afterSaveFunction: (args: any) => void, a
|
|
|
29
29
|
*/
|
|
30
30
|
function useSaveBeforeClosingSettingsContainer(settingsManager, saveFunction) {
|
|
31
31
|
React.useEffect(() => {
|
|
32
|
-
const handleProcessSettingsContainerClose = ({ closeFunc, closeFuncArgs
|
|
32
|
+
const handleProcessSettingsContainerClose = ({ closeFunc, closeFuncArgs } // eslint-disable-line deprecation/deprecation
|
|
33
|
+
) => {
|
|
33
34
|
saveFunction(closeFunc, closeFuncArgs);
|
|
34
35
|
};
|
|
35
36
|
return settingsManager.onProcessSettingsContainerClose.addListener(handleProcessSettingsContainerClose);
|
|
@@ -41,7 +42,8 @@ exports.useSaveBeforeClosingSettingsContainer = useSaveBeforeClosingSettingsCont
|
|
|
41
42
|
*/
|
|
42
43
|
function useSaveBeforeActivatingNewSettingsTab(settingsManager, saveFunction) {
|
|
43
44
|
React.useEffect(() => {
|
|
44
|
-
const handleProcessSettingsTabActivation = ({ tabSelectionFunc, requestedSettingsTabId, }
|
|
45
|
+
const handleProcessSettingsTabActivation = ({ tabSelectionFunc, requestedSettingsTabId, } // eslint-disable-line deprecation/deprecation
|
|
46
|
+
) => {
|
|
45
47
|
saveFunction(tabSelectionFunc, requestedSettingsTabId);
|
|
46
48
|
};
|
|
47
49
|
return settingsManager.onProcessSettingsTabActivation.addListener(handleProcessSettingsTabActivation);
|
|
@@ -90,7 +92,8 @@ const SettingsContainer = ({ tabs, onSettingsTabSelected, currentSettingsTab, se
|
|
|
90
92
|
tabs,
|
|
91
93
|
]);
|
|
92
94
|
React.useEffect(() => {
|
|
93
|
-
const handleActivateSettingsTab = ({ settingsTabId
|
|
95
|
+
const handleActivateSettingsTab = ({ settingsTabId } // eslint-disable-line deprecation/deprecation
|
|
96
|
+
) => {
|
|
94
97
|
const idToFind = settingsTabId.toLowerCase();
|
|
95
98
|
let tabToActivate = tabs.find((tab) => tab.tabId.toLowerCase() === idToFind);
|
|
96
99
|
if (!tabToActivate)
|
|
@@ -116,7 +119,8 @@ const SettingsContainer = ({ tabs, onSettingsTabSelected, currentSettingsTab, se
|
|
|
116
119
|
tabs,
|
|
117
120
|
]);
|
|
118
121
|
React.useEffect(() => {
|
|
119
|
-
const handleSettingsContainerClose = ({ closeFunc, closeFuncArgs
|
|
122
|
+
const handleSettingsContainerClose = ({ closeFunc, closeFuncArgs } // eslint-disable-line deprecation/deprecation
|
|
123
|
+
) => {
|
|
120
124
|
if (openTab && openTab.pageWillHandleCloseRequest)
|
|
121
125
|
settingsManager.onProcessSettingsContainerClose.emit({
|
|
122
126
|
closeFunc,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsContainer.js","sourceRoot":"","sources":["../../../../src/core-react/settings/SettingsContainer.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 Settings\n */\n\nimport \"./SettingsContainer.scss\";\nimport * as React from \"react\";\nimport type {\n ActivateSettingsTabEventArgs,\n ProcessSettingsContainerCloseEventArgs,\n ProcessSettingsTabActivationEventArgs,\n SettingsManager,\n SettingsTabEntry,\n} from \"./SettingsManager\";\nimport { VerticalTabs } from \"../tabs/VerticalTabs\";\nimport { ConditionalBooleanValue } from \"@itwin/appui-abstract\";\n\n/* ---------------------------------------------------------------------------------------------------\n// A typical implementation of a saveFunction callback\nconst saveChanges = React.useCallback((afterSaveFunction: (args: any) => void, args?: any) => {\n if (dataIsDirty) {\n // prompt user to save changes passing in function and arguments to call after saving changes.\n UiFramework.dialogs.modal.openDialog(<CustomSavePromptModalDialog customProps={customProps}\n onDialogCloseArgs={args} onDialogClose={afterSaveFunction} />);\n return;\n }\n afterSaveFunction(args);\n}, []);\n---------------------------------------------------------------------------------------------------------- */\n\n/** Hook to use within Settings Page component to allow saving the current page's data before the Setting Container is closed.\n * @public\n */\nexport function useSaveBeforeClosingSettingsContainer(\n settingsManager: SettingsManager,\n saveFunction: (closeFunc: (args: any) => void, closeFuncArgs?: any) => void\n) {\n React.useEffect(() => {\n const handleProcessSettingsContainerClose = ({\n closeFunc,\n closeFuncArgs,\n }: ProcessSettingsContainerCloseEventArgs) => {\n saveFunction(closeFunc, closeFuncArgs);\n };\n return settingsManager.onProcessSettingsContainerClose.addListener(\n handleProcessSettingsContainerClose\n );\n }, [saveFunction, settingsManager]);\n}\n\n/** Hook to use within Settings Page component to allow saving the current page's data before loading to the requested Setting Tab's page.\n * @public\n */\nexport function useSaveBeforeActivatingNewSettingsTab(\n settingsManager: SettingsManager,\n saveFunction: (\n tabSelectionFunc: (args: any) => void,\n requestedSettingsTabId?: string\n ) => void\n) {\n React.useEffect(() => {\n const handleProcessSettingsTabActivation = ({\n tabSelectionFunc,\n requestedSettingsTabId,\n }: ProcessSettingsTabActivationEventArgs) => {\n saveFunction(tabSelectionFunc, requestedSettingsTabId);\n };\n return settingsManager.onProcessSettingsTabActivation.addListener(\n handleProcessSettingsTabActivation\n );\n }, [saveFunction, settingsManager]);\n}\n\n/**\n * @public\n */\nexport interface SettingsContainerProps {\n tabs: SettingsTabEntry[];\n // sets tab to set as active tab\n currentSettingsTab?: SettingsTabEntry;\n // If plugging into a SPA and you need to modify the route, you can pass in additional logic here\n onSettingsTabSelected?: (tab: SettingsTabEntry) => void;\n // The SettingsManager that can have event handlers registered against it so pages can save its settings before the page is closed.\n settingsManager: SettingsManager;\n // if true show tab label as header above page contents.\n showHeader?: boolean;\n}\n\n/**\n * SettingsContainer component that displays Setting Tabs on Left and the P\n * Note: that SettingsContainer is not rendered if tabs array is empty\n * @public\n */\nexport const SettingsContainer = ({\n tabs,\n onSettingsTabSelected,\n currentSettingsTab,\n settingsManager,\n showHeader,\n}: SettingsContainerProps) => {\n // sort the tabs based on itemPriority\n tabs = tabs.sort((a, b) => a.itemPriority - b.itemPriority);\n\n const [openTab, setOpenTab] = React.useState(() => {\n if (\n currentSettingsTab &&\n !ConditionalBooleanValue.getValue(currentSettingsTab.isDisabled)\n )\n return currentSettingsTab;\n else return tabs[0];\n });\n\n const processTabSelection = React.useCallback(\n (tab: SettingsTabEntry) => {\n if (ConditionalBooleanValue.getValue(tab.isDisabled)) return;\n onSettingsTabSelected && onSettingsTabSelected(tab);\n setOpenTab(tab);\n },\n [onSettingsTabSelected]\n );\n\n const processTabSelectionById = React.useCallback(\n (tabId: string) => {\n const tabToActivate = tabs.find((tab) => tab.tabId === tabId);\n tabToActivate && processTabSelection(tabToActivate);\n },\n [processTabSelection, tabs]\n );\n\n const onActivateTab = React.useCallback(\n (tabIndex: number) => {\n const selectedTab = tabs[tabIndex];\n if (openTab && openTab.pageWillHandleCloseRequest)\n settingsManager.onProcessSettingsTabActivation.emit({\n requestedSettingsTabId: selectedTab.tabId,\n tabSelectionFunc: processTabSelectionById,\n });\n else processTabSelection(selectedTab);\n },\n [\n openTab,\n processTabSelection,\n processTabSelectionById,\n settingsManager,\n tabs,\n ]\n );\n\n React.useEffect(() => {\n const handleActivateSettingsTab = ({\n settingsTabId,\n }: ActivateSettingsTabEventArgs) => {\n const idToFind = settingsTabId.toLowerCase();\n let tabToActivate = tabs.find(\n (tab) => tab.tabId.toLowerCase() === idToFind\n );\n if (!tabToActivate)\n tabToActivate = tabs.find(\n (tab) => tab.label.toLowerCase() === idToFind\n );\n // istanbul ignore else\n if (tabToActivate) {\n if (openTab && openTab.pageWillHandleCloseRequest)\n settingsManager.onProcessSettingsTabActivation.emit({\n requestedSettingsTabId: tabToActivate.tabId,\n tabSelectionFunc: processTabSelectionById,\n });\n else processTabSelection(tabToActivate);\n }\n };\n\n return settingsManager.onActivateSettingsTab.addListener(\n handleActivateSettingsTab\n );\n }, [\n openTab,\n processTabSelection,\n processTabSelectionById,\n settingsManager,\n settingsManager.onActivateSettingsTab,\n tabs,\n ]);\n\n React.useEffect(() => {\n const handleSettingsContainerClose = ({\n closeFunc,\n closeFuncArgs,\n }: ProcessSettingsContainerCloseEventArgs) => {\n if (openTab && openTab.pageWillHandleCloseRequest)\n settingsManager.onProcessSettingsContainerClose.emit({\n closeFunc,\n closeFuncArgs,\n });\n else closeFunc(closeFuncArgs);\n };\n return settingsManager.onCloseSettingsContainer.addListener(\n handleSettingsContainerClose\n );\n }, [\n openTab,\n processTabSelection,\n settingsManager,\n settingsManager.onActivateSettingsTab,\n tabs,\n ]);\n\n const labels = tabs.map((tab) => {\n return {\n label: tab.label,\n subLabel: tab.subLabel,\n icon: tab.icon,\n tooltip: tab.tooltip,\n tabId: tab.tabId,\n disabled: ConditionalBooleanValue.getValue(tab.isDisabled),\n };\n });\n const activeIndex = tabs.findIndex((tab) => tab.tabId === openTab.tabId);\n return (\n <div className=\"core-settings-container\">\n <div className=\"core-settings-container-left\">\n <VerticalTabs\n labels={labels}\n activeIndex={activeIndex}\n onActivateTab={onActivateTab}\n />\n </div>\n <div className=\"core-settings-container-right\">\n {showHeader && (\n <div className=\"core-settings-container-right-header\">\n <span className=\"core-settings-container-main-header\">\n {openTab.label}\n </span>\n {openTab.subLabel && (\n <span className=\"core-settings-container-main-sub-header\">\n {openTab.subLabel}\n </span>\n )}\n </div>\n )}\n <div className=\"core-settings-container-right-contents\">\n {openTab.page}\n </div>\n </div>\n </div>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"SettingsContainer.js","sourceRoot":"","sources":["../../../../src/core-react/settings/SettingsContainer.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 Settings\n */\n\nimport \"./SettingsContainer.scss\";\nimport * as React from \"react\";\nimport type {\n ActivateSettingsTabEventArgs,\n ProcessSettingsContainerCloseEventArgs,\n ProcessSettingsTabActivationEventArgs,\n SettingsManager,\n SettingsTabEntry,\n} from \"./SettingsManager\";\nimport { VerticalTabs } from \"../tabs/VerticalTabs\";\nimport { ConditionalBooleanValue } from \"@itwin/appui-abstract\";\n\n/* ---------------------------------------------------------------------------------------------------\n// A typical implementation of a saveFunction callback\nconst saveChanges = React.useCallback((afterSaveFunction: (args: any) => void, args?: any) => {\n if (dataIsDirty) {\n // prompt user to save changes passing in function and arguments to call after saving changes.\n UiFramework.dialogs.modal.openDialog(<CustomSavePromptModalDialog customProps={customProps}\n onDialogCloseArgs={args} onDialogClose={afterSaveFunction} />);\n return;\n }\n afterSaveFunction(args);\n}, []);\n---------------------------------------------------------------------------------------------------------- */\n\n/** Hook to use within Settings Page component to allow saving the current page's data before the Setting Container is closed.\n * @public\n */\nexport function useSaveBeforeClosingSettingsContainer(\n settingsManager: SettingsManager,\n saveFunction: (closeFunc: (args: any) => void, closeFuncArgs?: any) => void\n) {\n React.useEffect(() => {\n const handleProcessSettingsContainerClose = (\n { closeFunc, closeFuncArgs }: ProcessSettingsContainerCloseEventArgs // eslint-disable-line deprecation/deprecation\n ) => {\n saveFunction(closeFunc, closeFuncArgs);\n };\n return settingsManager.onProcessSettingsContainerClose.addListener(\n handleProcessSettingsContainerClose\n );\n }, [saveFunction, settingsManager]);\n}\n\n/** Hook to use within Settings Page component to allow saving the current page's data before loading to the requested Setting Tab's page.\n * @public\n */\nexport function useSaveBeforeActivatingNewSettingsTab(\n settingsManager: SettingsManager,\n saveFunction: (\n tabSelectionFunc: (args: any) => void,\n requestedSettingsTabId?: string\n ) => void\n) {\n React.useEffect(() => {\n const handleProcessSettingsTabActivation = (\n {\n tabSelectionFunc,\n requestedSettingsTabId,\n }: ProcessSettingsTabActivationEventArgs // eslint-disable-line deprecation/deprecation\n ) => {\n saveFunction(tabSelectionFunc, requestedSettingsTabId);\n };\n return settingsManager.onProcessSettingsTabActivation.addListener(\n handleProcessSettingsTabActivation\n );\n }, [saveFunction, settingsManager]);\n}\n\n/**\n * @public\n */\nexport interface SettingsContainerProps {\n tabs: SettingsTabEntry[];\n // sets tab to set as active tab\n currentSettingsTab?: SettingsTabEntry;\n // If plugging into a SPA and you need to modify the route, you can pass in additional logic here\n onSettingsTabSelected?: (tab: SettingsTabEntry) => void;\n // The SettingsManager that can have event handlers registered against it so pages can save its settings before the page is closed.\n settingsManager: SettingsManager;\n // if true show tab label as header above page contents.\n showHeader?: boolean;\n}\n\n/**\n * SettingsContainer component that displays Setting Tabs on Left and the P\n * Note: that SettingsContainer is not rendered if tabs array is empty\n * @public\n */\nexport const SettingsContainer = ({\n tabs,\n onSettingsTabSelected,\n currentSettingsTab,\n settingsManager,\n showHeader,\n}: SettingsContainerProps) => {\n // sort the tabs based on itemPriority\n tabs = tabs.sort((a, b) => a.itemPriority - b.itemPriority);\n\n const [openTab, setOpenTab] = React.useState(() => {\n if (\n currentSettingsTab &&\n !ConditionalBooleanValue.getValue(currentSettingsTab.isDisabled)\n )\n return currentSettingsTab;\n else return tabs[0];\n });\n\n const processTabSelection = React.useCallback(\n (tab: SettingsTabEntry) => {\n if (ConditionalBooleanValue.getValue(tab.isDisabled)) return;\n onSettingsTabSelected && onSettingsTabSelected(tab);\n setOpenTab(tab);\n },\n [onSettingsTabSelected]\n );\n\n const processTabSelectionById = React.useCallback(\n (tabId: string) => {\n const tabToActivate = tabs.find((tab) => tab.tabId === tabId);\n tabToActivate && processTabSelection(tabToActivate);\n },\n [processTabSelection, tabs]\n );\n\n const onActivateTab = React.useCallback(\n (tabIndex: number) => {\n const selectedTab = tabs[tabIndex];\n if (openTab && openTab.pageWillHandleCloseRequest)\n settingsManager.onProcessSettingsTabActivation.emit({\n requestedSettingsTabId: selectedTab.tabId,\n tabSelectionFunc: processTabSelectionById,\n });\n else processTabSelection(selectedTab);\n },\n [\n openTab,\n processTabSelection,\n processTabSelectionById,\n settingsManager,\n tabs,\n ]\n );\n\n React.useEffect(() => {\n const handleActivateSettingsTab = (\n { settingsTabId }: ActivateSettingsTabEventArgs // eslint-disable-line deprecation/deprecation\n ) => {\n const idToFind = settingsTabId.toLowerCase();\n let tabToActivate = tabs.find(\n (tab) => tab.tabId.toLowerCase() === idToFind\n );\n if (!tabToActivate)\n tabToActivate = tabs.find(\n (tab) => tab.label.toLowerCase() === idToFind\n );\n // istanbul ignore else\n if (tabToActivate) {\n if (openTab && openTab.pageWillHandleCloseRequest)\n settingsManager.onProcessSettingsTabActivation.emit({\n requestedSettingsTabId: tabToActivate.tabId,\n tabSelectionFunc: processTabSelectionById,\n });\n else processTabSelection(tabToActivate);\n }\n };\n\n return settingsManager.onActivateSettingsTab.addListener(\n handleActivateSettingsTab\n );\n }, [\n openTab,\n processTabSelection,\n processTabSelectionById,\n settingsManager,\n settingsManager.onActivateSettingsTab,\n tabs,\n ]);\n\n React.useEffect(() => {\n const handleSettingsContainerClose = (\n { closeFunc, closeFuncArgs }: ProcessSettingsContainerCloseEventArgs // eslint-disable-line deprecation/deprecation\n ) => {\n if (openTab && openTab.pageWillHandleCloseRequest)\n settingsManager.onProcessSettingsContainerClose.emit({\n closeFunc,\n closeFuncArgs,\n });\n else closeFunc(closeFuncArgs);\n };\n return settingsManager.onCloseSettingsContainer.addListener(\n handleSettingsContainerClose\n );\n }, [\n openTab,\n processTabSelection,\n settingsManager,\n settingsManager.onActivateSettingsTab,\n tabs,\n ]);\n\n const labels = tabs.map((tab) => {\n return {\n label: tab.label,\n subLabel: tab.subLabel,\n icon: tab.icon,\n tooltip: tab.tooltip,\n tabId: tab.tabId,\n disabled: ConditionalBooleanValue.getValue(tab.isDisabled),\n };\n });\n const activeIndex = tabs.findIndex((tab) => tab.tabId === openTab.tabId);\n return (\n <div className=\"core-settings-container\">\n <div className=\"core-settings-container-left\">\n {/* eslint-disable-next-line deprecation/deprecation */}\n <VerticalTabs\n labels={labels}\n activeIndex={activeIndex}\n onActivateTab={onActivateTab}\n />\n </div>\n <div className=\"core-settings-container-right\">\n {showHeader && (\n <div className=\"core-settings-container-right-header\">\n <span className=\"core-settings-container-main-header\">\n {openTab.label}\n </span>\n {openTab.subLabel && (\n <span className=\"core-settings-container-main-sub-header\">\n {openTab.subLabel}\n </span>\n )}\n </div>\n )}\n <div className=\"core-settings-container-right-contents\">\n {openTab.page}\n </div>\n </div>\n </div>\n );\n};\n"]}
|
|
@@ -29,11 +29,13 @@ export interface SettingsTabEntry {
|
|
|
29
29
|
}
|
|
30
30
|
/** Event class for [[this.onSettingsProvidersChanged]] which is emitted when a new SettingsTabsProvider is added or removed.
|
|
31
31
|
* @public
|
|
32
|
+
* @deprecated in 4.13.x. This class should not be used by applications to instantiate objects.
|
|
32
33
|
*/
|
|
33
34
|
export declare class SettingsProvidersChangedEvent extends BeUiEvent<SettingsProvidersChangedEventArgs> {
|
|
34
35
|
}
|
|
35
36
|
/** Arguments of [[this.onSettingsProvidersChanged]] event.
|
|
36
37
|
* @public
|
|
38
|
+
* @deprecated in 4.13.x. Event args are inferred from a listener. If explicit type is needed use a type helper.
|
|
37
39
|
*/
|
|
38
40
|
export interface SettingsProvidersChangedEventArgs {
|
|
39
41
|
readonly providers: ReadonlyArray<SettingsTabsProvider>;
|
|
@@ -41,11 +43,13 @@ export interface SettingsProvidersChangedEventArgs {
|
|
|
41
43
|
/** Event class for [[this.onProcessSettingsTabActivation]] which is emitted when a new Tab needs to be activated. This allows the current
|
|
42
44
|
* settings page to save its settings before activating the new SettingTab.
|
|
43
45
|
* @public
|
|
46
|
+
* @deprecated in 4.13.x. This class should not be used by applications to instantiate objects.
|
|
44
47
|
*/
|
|
45
48
|
export declare class ProcessSettingsTabActivationEvent extends BeUiEvent<ProcessSettingsTabActivationEventArgs> {
|
|
46
49
|
}
|
|
47
50
|
/** Arguments of [[this.onProcessSettingsTabActivation]] event.
|
|
48
51
|
* @public
|
|
52
|
+
* @deprecated in 4.13.x. Event args are inferred from a listener. If explicit type is needed use a type helper.
|
|
49
53
|
*/
|
|
50
54
|
export interface ProcessSettingsTabActivationEventArgs {
|
|
51
55
|
readonly tabSelectionFunc: (tabId: string) => void;
|
|
@@ -54,16 +58,13 @@ export interface ProcessSettingsTabActivationEventArgs {
|
|
|
54
58
|
/** Event class for [[this.onProcessSettingsContainerClose]] which is emitted when the settings container will be closed. This allows the current
|
|
55
59
|
* settings page to save its settings before calling the function to close the container.
|
|
56
60
|
* @public
|
|
61
|
+
* @deprecated in 4.13.x. This class should not be used by applications to instantiate objects.
|
|
57
62
|
*/
|
|
58
63
|
export declare class ProcessSettingsContainerCloseEvent extends BeUiEvent<ProcessSettingsContainerCloseEventArgs> {
|
|
59
64
|
}
|
|
60
|
-
/** Event class for [[this.onCloseSettingsContainer]] which is monitored by the settings container and indicates that some out process want to close the settings container.
|
|
61
|
-
* @internal
|
|
62
|
-
*/
|
|
63
|
-
export declare class CloseSettingsContainerEvent extends BeUiEvent<ProcessSettingsContainerCloseEventArgs> {
|
|
64
|
-
}
|
|
65
65
|
/** Arguments of [[this.onProcessSettingsContainerClose]] event.
|
|
66
66
|
* @public
|
|
67
|
+
* @deprecated in 4.13.x. Event args are inferred from a listener. If explicit type is needed use a type helper.
|
|
67
68
|
*/
|
|
68
69
|
export interface ProcessSettingsContainerCloseEventArgs {
|
|
69
70
|
readonly closeFunc: (args: any) => void;
|
|
@@ -71,11 +72,13 @@ export interface ProcessSettingsContainerCloseEventArgs {
|
|
|
71
72
|
}
|
|
72
73
|
/** Event class for [[this.onActivateSettingsTab]] which is emitted when API call needs to set the active settings tab (ie via Tool key-in).
|
|
73
74
|
* @public
|
|
75
|
+
* @deprecated in 4.13.x. This class should not be used by applications to instantiate objects.
|
|
74
76
|
*/
|
|
75
77
|
export declare class ActivateSettingsTabEvent extends BeUiEvent<ActivateSettingsTabEventArgs> {
|
|
76
78
|
}
|
|
77
79
|
/** Arguments of [[this.onActivateSettingsTab]] event.
|
|
78
80
|
* @public
|
|
81
|
+
* @deprecated in 4.13.x. Event args are inferred from a listener. If explicit type is needed use a type helper.
|
|
79
82
|
*/
|
|
80
83
|
export interface ActivateSettingsTabEventArgs {
|
|
81
84
|
readonly settingsTabId: string;
|
|
@@ -108,11 +111,11 @@ export declare class SettingsManager {
|
|
|
108
111
|
/** Event raised to change the active settings tab shown in UI. Monitored by the SettingsContainer.
|
|
109
112
|
* @internal
|
|
110
113
|
*/
|
|
111
|
-
readonly onActivateSettingsTab:
|
|
114
|
+
readonly onActivateSettingsTab: BeUiEvent<ActivateSettingsTabEventArgs>;
|
|
112
115
|
/** Event monitored by SettingsContainer to process request to close the settings container.
|
|
113
116
|
* @internal
|
|
114
117
|
*/
|
|
115
|
-
readonly onCloseSettingsContainer:
|
|
118
|
+
readonly onCloseSettingsContainer: BeUiEvent<ProcessSettingsContainerCloseEventArgs>;
|
|
116
119
|
/** @public */
|
|
117
120
|
get providers(): ReadonlyArray<SettingsTabsProvider>;
|
|
118
121
|
set providers(p: ReadonlyArray<SettingsTabsProvider>);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsManager.d.ts","sourceRoot":"","sources":["../../../../src/core-react/settings/SettingsManager.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAU,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAGrE;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0BAA0B;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,8BAA8B;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,CAAC;IAClC;gHAC4G;IAC5G,QAAQ,CAAC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAC9C,4CAA4C;IAC5C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,6CAA6C;IAC7C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,yBAAyB;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC;IAC5C,qEAAqE;IACrE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC;IAC/C,2CAA2C;IAC3C,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,uBAAuB,CAAC;CACzD;AAED
|
|
1
|
+
{"version":3,"file":"SettingsManager.d.ts","sourceRoot":"","sources":["../../../../src/core-react/settings/SettingsManager.tsx"],"names":[],"mappings":"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"}
|
|
@@ -7,38 +7,40 @@
|
|
|
7
7
|
* @module Settings
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.SettingsManager = exports.ActivateSettingsTabEvent = exports.
|
|
10
|
+
exports.SettingsManager = exports.ActivateSettingsTabEvent = exports.ProcessSettingsContainerCloseEvent = exports.ProcessSettingsTabActivationEvent = exports.SettingsProvidersChangedEvent = void 0;
|
|
11
11
|
const core_bentley_1 = require("@itwin/core-bentley");
|
|
12
12
|
const UiCore_1 = require("../UiCore");
|
|
13
13
|
/** Event class for [[this.onSettingsProvidersChanged]] which is emitted when a new SettingsTabsProvider is added or removed.
|
|
14
14
|
* @public
|
|
15
|
+
* @deprecated in 4.13.x. This class should not be used by applications to instantiate objects.
|
|
15
16
|
*/
|
|
17
|
+
// eslint-disable-next-line deprecation/deprecation
|
|
16
18
|
class SettingsProvidersChangedEvent extends core_bentley_1.BeUiEvent {
|
|
17
19
|
}
|
|
18
20
|
exports.SettingsProvidersChangedEvent = SettingsProvidersChangedEvent;
|
|
19
21
|
/** Event class for [[this.onProcessSettingsTabActivation]] which is emitted when a new Tab needs to be activated. This allows the current
|
|
20
22
|
* settings page to save its settings before activating the new SettingTab.
|
|
21
23
|
* @public
|
|
24
|
+
* @deprecated in 4.13.x. This class should not be used by applications to instantiate objects.
|
|
22
25
|
*/
|
|
26
|
+
// eslint-disable-next-line deprecation/deprecation
|
|
23
27
|
class ProcessSettingsTabActivationEvent extends core_bentley_1.BeUiEvent {
|
|
24
28
|
}
|
|
25
29
|
exports.ProcessSettingsTabActivationEvent = ProcessSettingsTabActivationEvent;
|
|
26
30
|
/** Event class for [[this.onProcessSettingsContainerClose]] which is emitted when the settings container will be closed. This allows the current
|
|
27
31
|
* settings page to save its settings before calling the function to close the container.
|
|
28
32
|
* @public
|
|
33
|
+
* @deprecated in 4.13.x. This class should not be used by applications to instantiate objects.
|
|
29
34
|
*/
|
|
35
|
+
// eslint-disable-next-line deprecation/deprecation
|
|
30
36
|
class ProcessSettingsContainerCloseEvent extends core_bentley_1.BeUiEvent {
|
|
31
37
|
}
|
|
32
38
|
exports.ProcessSettingsContainerCloseEvent = ProcessSettingsContainerCloseEvent;
|
|
33
|
-
/** Event class for [[this.onCloseSettingsContainer]] which is monitored by the settings container and indicates that some out process want to close the settings container.
|
|
34
|
-
* @internal
|
|
35
|
-
*/
|
|
36
|
-
class CloseSettingsContainerEvent extends core_bentley_1.BeUiEvent {
|
|
37
|
-
}
|
|
38
|
-
exports.CloseSettingsContainerEvent = CloseSettingsContainerEvent;
|
|
39
39
|
/** Event class for [[this.onActivateSettingsTab]] which is emitted when API call needs to set the active settings tab (ie via Tool key-in).
|
|
40
40
|
* @public
|
|
41
|
+
* @deprecated in 4.13.x. This class should not be used by applications to instantiate objects.
|
|
41
42
|
*/
|
|
43
|
+
// eslint-disable-next-line deprecation/deprecation
|
|
42
44
|
class ActivateSettingsTabEvent extends core_bentley_1.BeUiEvent {
|
|
43
45
|
}
|
|
44
46
|
exports.ActivateSettingsTabEvent = ActivateSettingsTabEvent;
|
|
@@ -50,23 +52,23 @@ class SettingsManager {
|
|
|
50
52
|
this._providers = [];
|
|
51
53
|
/** Event raised when SettingsProviders are changed.
|
|
52
54
|
*/
|
|
53
|
-
this.onSettingsProvidersChanged = new SettingsProvidersChangedEvent();
|
|
55
|
+
this.onSettingsProvidersChanged = new SettingsProvidersChangedEvent(); // eslint-disable-line deprecation/deprecation
|
|
54
56
|
/** Event raised solely for a settings page to monitor so it can save its settings before continuing tab activation.
|
|
55
57
|
* See React hook function `useSaveBeforeActivatingNewSettingsTab`.
|
|
56
58
|
*/
|
|
57
|
-
this.onProcessSettingsTabActivation = new ProcessSettingsTabActivationEvent();
|
|
59
|
+
this.onProcessSettingsTabActivation = new ProcessSettingsTabActivationEvent(); // eslint-disable-line deprecation/deprecation
|
|
58
60
|
/** Event raised when the settings container will be closed. Any setting page component that is 'modal' should register to
|
|
59
61
|
* listen to this event so that it can save its state before closing. See React hook function `useSaveBeforeClosingSettingsContainer`.
|
|
60
62
|
*/
|
|
61
|
-
this.onProcessSettingsContainerClose = new ProcessSettingsContainerCloseEvent();
|
|
63
|
+
this.onProcessSettingsContainerClose = new ProcessSettingsContainerCloseEvent(); // eslint-disable-line deprecation/deprecation
|
|
62
64
|
/** Event raised to change the active settings tab shown in UI. Monitored by the SettingsContainer.
|
|
63
65
|
* @internal
|
|
64
66
|
*/
|
|
65
|
-
this.onActivateSettingsTab = new
|
|
67
|
+
this.onActivateSettingsTab = new core_bentley_1.BeUiEvent(); // eslint-disable-line deprecation/deprecation
|
|
66
68
|
/** Event monitored by SettingsContainer to process request to close the settings container.
|
|
67
69
|
* @internal
|
|
68
70
|
*/
|
|
69
|
-
this.onCloseSettingsContainer = new
|
|
71
|
+
this.onCloseSettingsContainer = new core_bentley_1.BeUiEvent(); // eslint-disable-line deprecation/deprecation
|
|
70
72
|
}
|
|
71
73
|
/** @public */
|
|
72
74
|
get providers() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsManager.js","sourceRoot":"","sources":["../../../../src/core-react/settings/SettingsManager.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 Settings\n */\n\nimport { BeUiEvent, Logger } from \"@itwin/core-bentley\";\nimport type { ConditionalBooleanValue } from \"@itwin/appui-abstract\";\nimport { UiCore } from \"../UiCore\";\n\n/** Interface used to populate a tab entry in the SettingContainer control\n * @public\n */\nexport interface SettingsTabEntry {\n /** unique id for entry */\n readonly tabId: string;\n /** localized display label */\n readonly label: string;\n /** Setting page content to display when tab item is selected. */\n readonly page: React.ReactElement;\n /** Setting to true if page will register to watch for stage closing event so it can save any dirty settings. Page component should register and handle the events:\n * `settingsManager.onProcessSettingsTabActivation` and `settingsManager.onProcessSettingsContainerClose` */\n readonly pageWillHandleCloseRequest?: boolean;\n /** used to determine position in tablist */\n readonly itemPriority: number;\n /** Optional Subtitle to show below label. */\n readonly subLabel?: string;\n /** Icon specification */\n readonly icon?: string | React.ReactElement;\n /** Tooltip. Allows JSX|Element to support react-tooltip component */\n readonly tooltip?: string | React.ReactElement;\n /** Allows Settings entry to be disabled */\n readonly isDisabled?: boolean | ConditionalBooleanValue;\n}\n\n/** Event class for [[this.onSettingsProvidersChanged]] which is emitted when a new SettingsTabsProvider is added or removed.\n * @public\n */\nexport class SettingsProvidersChangedEvent extends BeUiEvent<SettingsProvidersChangedEventArgs> {}\n\n/** Arguments of [[this.onSettingsProvidersChanged]] event.\n * @public\n */\nexport interface SettingsProvidersChangedEventArgs {\n readonly providers: ReadonlyArray<SettingsTabsProvider>;\n}\n\n/** Event class for [[this.onProcessSettingsTabActivation]] which is emitted when a new Tab needs to be activated. This allows the current\n * settings page to save its settings before activating the new SettingTab.\n * @public\n */\nexport class ProcessSettingsTabActivationEvent extends BeUiEvent<ProcessSettingsTabActivationEventArgs> {}\n\n/** Arguments of [[this.onProcessSettingsTabActivation]] event.\n * @public\n */\nexport interface ProcessSettingsTabActivationEventArgs {\n readonly tabSelectionFunc: (tabId: string) => void;\n readonly requestedSettingsTabId: string;\n}\n\n/** Event class for [[this.onProcessSettingsContainerClose]] which is emitted when the settings container will be closed. This allows the current\n * settings page to save its settings before calling the function to close the container.\n * @public\n */\nexport class ProcessSettingsContainerCloseEvent extends BeUiEvent<ProcessSettingsContainerCloseEventArgs> {}\n\n/** Event class for [[this.onCloseSettingsContainer]] which is monitored by the settings container and indicates that some out process want to close the settings container.\n * @internal\n */\nexport class CloseSettingsContainerEvent extends BeUiEvent<ProcessSettingsContainerCloseEventArgs> {}\n\n/** Arguments of [[this.onProcessSettingsContainerClose]] event.\n * @public\n */\nexport interface ProcessSettingsContainerCloseEventArgs {\n readonly closeFunc: (args: any) => void;\n readonly closeFuncArgs?: any;\n}\n\n/** Event class for [[this.onActivateSettingsTab]] which is emitted when API call needs to set the active settings tab (ie via Tool key-in).\n * @public\n */\nexport class ActivateSettingsTabEvent extends BeUiEvent<ActivateSettingsTabEventArgs> {}\n\n/** Arguments of [[this.onActivateSettingsTab]] event.\n * @public\n */\nexport interface ActivateSettingsTabEventArgs {\n readonly settingsTabId: string;\n}\n\n/** Setting Provider interface. Implemented by classes that want to supply settings pages for display in the SettingContainer. The\n * classes that implement this interface need to be registered with the [[SettingsManager]].\n * @public\n */\nexport interface SettingsTabsProvider {\n /** Id of provider, used to remove registration. */\n readonly id: string;\n getSettingEntries(\n stageId: string,\n stageUsage: string\n ): ReadonlyArray<SettingsTabEntry> | undefined;\n}\n\n/** Settings Manager class. Hold registration of settings providers and supplies events for the provided settings pages to listen.\n * @public\n */\nexport class SettingsManager {\n private _providers: ReadonlyArray<SettingsTabsProvider> = [];\n\n /** Event raised when SettingsProviders are changed.\n */\n public readonly onSettingsProvidersChanged =\n new SettingsProvidersChangedEvent();\n\n /** Event raised solely for a settings page to monitor so it can save its settings before continuing tab activation.\n * See React hook function `useSaveBeforeActivatingNewSettingsTab`.\n */\n public readonly onProcessSettingsTabActivation =\n new ProcessSettingsTabActivationEvent();\n\n /** Event raised when the settings container will be closed. Any setting page component that is 'modal' should register to\n * listen to this event so that it can save its state before closing. See React hook function `useSaveBeforeClosingSettingsContainer`.\n */\n public readonly onProcessSettingsContainerClose =\n new ProcessSettingsContainerCloseEvent();\n\n /** Event raised to change the active settings tab shown in UI. Monitored by the SettingsContainer.\n * @internal\n */\n public readonly onActivateSettingsTab = new ActivateSettingsTabEvent();\n\n /** Event monitored by SettingsContainer to process request to close the settings container.\n * @internal\n */\n public readonly onCloseSettingsContainer = new CloseSettingsContainerEvent();\n\n /** @public */\n public get providers(): ReadonlyArray<SettingsTabsProvider> {\n return this._providers;\n }\n public set providers(p: ReadonlyArray<SettingsTabsProvider>) {\n this._providers = p;\n this.onSettingsProvidersChanged.emit({ providers: p });\n }\n\n /** Called by application when an tool, keyin, or other process want to change the active settings tab/page giving the current tab/page and opportunity\n * to save its state.\n */\n public activateSettingsTab(settingsTabId: string) {\n this.onActivateSettingsTab.emit({ settingsTabId });\n }\n\n /** Called by application when the Settings Container is to be closed. The function to invoke to actually close the Settings Container is\n * passed in and executed once the active settings tab/page has a chance to save its settings.\n */\n public closeSettingsContainer(\n closeFunc: (args: any) => void,\n closeFuncArgs?: any\n ) {\n this.onCloseSettingsContainer.emit({ closeFunc, closeFuncArgs });\n }\n\n public addSettingsProvider(settingsProvider: SettingsTabsProvider): void {\n const foundProvider = this._providers.find(\n (p) => p.id === settingsProvider.id\n );\n if (!foundProvider) {\n const updatedProviders = [...this.providers, settingsProvider];\n this.providers = updatedProviders;\n } else {\n Logger.logInfo(\n UiCore.loggerCategory(this),\n `Settings Provider with id of ${settingsProvider.id} has already been registered`\n );\n }\n }\n\n public removeSettingsProvider(providerId: string): boolean {\n let result = false;\n const updatedProviders = this._providers.filter((p) => p.id !== providerId);\n if (updatedProviders.length !== this._providers.length) {\n this.providers = updatedProviders;\n result = true;\n }\n\n return result;\n }\n\n /** Get an array of SettingsTabEntry objects to populate the settings container. */\n public getSettingEntries(\n stageId: string,\n stageUsage: string\n ): Array<SettingsTabEntry> {\n const allSettingEntries: SettingsTabEntry[] = [];\n // Consult the registered SettingsProviders\n this._providers.forEach((p) => {\n const entries = p.getSettingEntries(stageId, stageUsage);\n entries && allSettingEntries.push(...entries);\n });\n\n return allSettingEntries;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SettingsManager.js","sourceRoot":"","sources":["../../../../src/core-react/settings/SettingsManager.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 Settings\n */\n\nimport { BeUiEvent, Logger } from \"@itwin/core-bentley\";\nimport type { ConditionalBooleanValue } from \"@itwin/appui-abstract\";\nimport { UiCore } from \"../UiCore\";\n\n/** Interface used to populate a tab entry in the SettingContainer control\n * @public\n */\nexport interface SettingsTabEntry {\n /** unique id for entry */\n readonly tabId: string;\n /** localized display label */\n readonly label: string;\n /** Setting page content to display when tab item is selected. */\n readonly page: React.ReactElement;\n /** Setting to true if page will register to watch for stage closing event so it can save any dirty settings. Page component should register and handle the events:\n * `settingsManager.onProcessSettingsTabActivation` and `settingsManager.onProcessSettingsContainerClose` */\n readonly pageWillHandleCloseRequest?: boolean;\n /** used to determine position in tablist */\n readonly itemPriority: number;\n /** Optional Subtitle to show below label. */\n readonly subLabel?: string;\n /** Icon specification */\n readonly icon?: string | React.ReactElement;\n /** Tooltip. Allows JSX|Element to support react-tooltip component */\n readonly tooltip?: string | React.ReactElement;\n /** Allows Settings entry to be disabled */\n readonly isDisabled?: boolean | ConditionalBooleanValue;\n}\n\n/** Event class for [[this.onSettingsProvidersChanged]] which is emitted when a new SettingsTabsProvider is added or removed.\n * @public\n * @deprecated in 4.13.x. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class SettingsProvidersChangedEvent extends BeUiEvent<SettingsProvidersChangedEventArgs> {}\n\n/** Arguments of [[this.onSettingsProvidersChanged]] event.\n * @public\n * @deprecated in 4.13.x. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface SettingsProvidersChangedEventArgs {\n readonly providers: ReadonlyArray<SettingsTabsProvider>;\n}\n\n/** Event class for [[this.onProcessSettingsTabActivation]] which is emitted when a new Tab needs to be activated. This allows the current\n * settings page to save its settings before activating the new SettingTab.\n * @public\n * @deprecated in 4.13.x. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class ProcessSettingsTabActivationEvent extends BeUiEvent<ProcessSettingsTabActivationEventArgs> {}\n\n/** Arguments of [[this.onProcessSettingsTabActivation]] event.\n * @public\n * @deprecated in 4.13.x. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface ProcessSettingsTabActivationEventArgs {\n readonly tabSelectionFunc: (tabId: string) => void;\n readonly requestedSettingsTabId: string;\n}\n\n/** Event class for [[this.onProcessSettingsContainerClose]] which is emitted when the settings container will be closed. This allows the current\n * settings page to save its settings before calling the function to close the container.\n * @public\n * @deprecated in 4.13.x. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class ProcessSettingsContainerCloseEvent extends BeUiEvent<ProcessSettingsContainerCloseEventArgs> {}\n\n/** Arguments of [[this.onProcessSettingsContainerClose]] event.\n * @public\n * @deprecated in 4.13.x. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface ProcessSettingsContainerCloseEventArgs {\n readonly closeFunc: (args: any) => void;\n readonly closeFuncArgs?: any;\n}\n\n/** Event class for [[this.onActivateSettingsTab]] which is emitted when API call needs to set the active settings tab (ie via Tool key-in).\n * @public\n * @deprecated in 4.13.x. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class ActivateSettingsTabEvent extends BeUiEvent<ActivateSettingsTabEventArgs> {}\n\n/** Arguments of [[this.onActivateSettingsTab]] event.\n * @public\n * @deprecated in 4.13.x. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface ActivateSettingsTabEventArgs {\n readonly settingsTabId: string;\n}\n\n/** Setting Provider interface. Implemented by classes that want to supply settings pages for display in the SettingContainer. The\n * classes that implement this interface need to be registered with the [[SettingsManager]].\n * @public\n */\nexport interface SettingsTabsProvider {\n /** Id of provider, used to remove registration. */\n readonly id: string;\n getSettingEntries(\n stageId: string,\n stageUsage: string\n ): ReadonlyArray<SettingsTabEntry> | undefined;\n}\n\n/** Settings Manager class. Hold registration of settings providers and supplies events for the provided settings pages to listen.\n * @public\n */\nexport class SettingsManager {\n private _providers: ReadonlyArray<SettingsTabsProvider> = [];\n\n /** Event raised when SettingsProviders are changed.\n */\n public readonly onSettingsProvidersChanged =\n new SettingsProvidersChangedEvent(); // eslint-disable-line deprecation/deprecation\n\n /** Event raised solely for a settings page to monitor so it can save its settings before continuing tab activation.\n * See React hook function `useSaveBeforeActivatingNewSettingsTab`.\n */\n public readonly onProcessSettingsTabActivation =\n new ProcessSettingsTabActivationEvent(); // eslint-disable-line deprecation/deprecation\n\n /** Event raised when the settings container will be closed. Any setting page component that is 'modal' should register to\n * listen to this event so that it can save its state before closing. See React hook function `useSaveBeforeClosingSettingsContainer`.\n */\n public readonly onProcessSettingsContainerClose =\n new ProcessSettingsContainerCloseEvent(); // eslint-disable-line deprecation/deprecation\n\n /** Event raised to change the active settings tab shown in UI. Monitored by the SettingsContainer.\n * @internal\n */\n public readonly onActivateSettingsTab =\n new BeUiEvent<ActivateSettingsTabEventArgs>(); // eslint-disable-line deprecation/deprecation\n\n /** Event monitored by SettingsContainer to process request to close the settings container.\n * @internal\n */\n public readonly onCloseSettingsContainer =\n new BeUiEvent<ProcessSettingsContainerCloseEventArgs>(); // eslint-disable-line deprecation/deprecation\n\n /** @public */\n public get providers(): ReadonlyArray<SettingsTabsProvider> {\n return this._providers;\n }\n public set providers(p: ReadonlyArray<SettingsTabsProvider>) {\n this._providers = p;\n this.onSettingsProvidersChanged.emit({ providers: p });\n }\n\n /** Called by application when an tool, keyin, or other process want to change the active settings tab/page giving the current tab/page and opportunity\n * to save its state.\n */\n public activateSettingsTab(settingsTabId: string) {\n this.onActivateSettingsTab.emit({ settingsTabId });\n }\n\n /** Called by application when the Settings Container is to be closed. The function to invoke to actually close the Settings Container is\n * passed in and executed once the active settings tab/page has a chance to save its settings.\n */\n public closeSettingsContainer(\n closeFunc: (args: any) => void,\n closeFuncArgs?: any\n ) {\n this.onCloseSettingsContainer.emit({ closeFunc, closeFuncArgs });\n }\n\n public addSettingsProvider(settingsProvider: SettingsTabsProvider): void {\n const foundProvider = this._providers.find(\n (p) => p.id === settingsProvider.id\n );\n if (!foundProvider) {\n const updatedProviders = [...this.providers, settingsProvider];\n this.providers = updatedProviders;\n } else {\n Logger.logInfo(\n UiCore.loggerCategory(this),\n `Settings Provider with id of ${settingsProvider.id} has already been registered`\n );\n }\n }\n\n public removeSettingsProvider(providerId: string): boolean {\n let result = false;\n const updatedProviders = this._providers.filter((p) => p.id !== providerId);\n if (updatedProviders.length !== this._providers.length) {\n this.providers = updatedProviders;\n result = true;\n }\n\n return result;\n }\n\n /** Get an array of SettingsTabEntry objects to populate the settings container. */\n public getSettingEntries(\n stageId: string,\n stageUsage: string\n ): Array<SettingsTabEntry> {\n const allSettingEntries: SettingsTabEntry[] = [];\n // Consult the registered SettingsProviders\n this._providers.forEach((p) => {\n const entries = p.getSettingEntries(stageId, stageUsage);\n entries && allSettingEntries.push(...entries);\n });\n\n return allSettingEntries;\n }\n}\n"]}
|
|
@@ -7,6 +7,7 @@ import { Orientation } from "../enums/Orientation";
|
|
|
7
7
|
/** TabLabel provides ability to define label, icon, and tooltip for a tab entry. The tooltip can be defined as JSX|Element
|
|
8
8
|
* to support react-tooltip component or a string that will be use to set the title property.
|
|
9
9
|
* @public
|
|
10
|
+
* @deprecated in 4.12.x. Interface used in a deprecated component {@link Tabs}.
|
|
10
11
|
*/
|
|
11
12
|
export interface TabLabel {
|
|
12
13
|
label: string;
|
|
@@ -19,10 +20,10 @@ export interface TabLabel {
|
|
|
19
20
|
}
|
|
20
21
|
/** Properties for the [[VerticalTabs]] component
|
|
21
22
|
* @public
|
|
23
|
+
* @deprecated in 4.12.x. Props of deprecated component {@link Tabs}.
|
|
22
24
|
*/
|
|
23
25
|
export interface TabsProps extends React.AllHTMLAttributes<HTMLUListElement>, CommonProps {
|
|
24
|
-
/** Text shown for each tab
|
|
25
|
-
* @public */
|
|
26
|
+
/** Text shown for each tab */
|
|
26
27
|
labels: Array<string | TabLabel>;
|
|
27
28
|
/** Handler for activating a tab */
|
|
28
29
|
onActivateTab?: (index: number) => any;
|
|
@@ -31,14 +32,12 @@ export interface TabsProps extends React.AllHTMLAttributes<HTMLUListElement>, Co
|
|
|
31
32
|
/** Indicates whether the bar on the active tab is green instead of the default blue */
|
|
32
33
|
green?: boolean;
|
|
33
34
|
}
|
|
34
|
-
/** State for [[Tabs]] component
|
|
35
|
-
* @internal
|
|
36
|
-
*/
|
|
37
35
|
interface TabsState {
|
|
38
36
|
activeIndex: number;
|
|
39
37
|
}
|
|
40
38
|
/** Properties for the base [[Tabs]] component
|
|
41
39
|
* @public
|
|
40
|
+
* @deprecated in 4.12.x. Props of deprecated component {@link Tabs}.
|
|
42
41
|
*/
|
|
43
42
|
export interface MainTabsProps extends TabsProps {
|
|
44
43
|
/** Main CSS class name */
|
|
@@ -48,6 +47,7 @@ export interface MainTabsProps extends TabsProps {
|
|
|
48
47
|
}
|
|
49
48
|
/** Tabs meant to represent the current position in a page/section
|
|
50
49
|
* @public
|
|
50
|
+
* @deprecated in 4.12.x. Use {@link https://itwinui.bentley.com/docs/tabs iTwinUI Tabs} instead.
|
|
51
51
|
*/
|
|
52
52
|
export declare class Tabs extends React.PureComponent<MainTabsProps, TabsState> {
|
|
53
53
|
private _anchorRefs;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../../../src/core-react/tabs/Tabs.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../../../src/core-react/tabs/Tabs.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAMnD;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC;IACnC,KAAK,EAAE,MAAM,CAAoE;IACjF,uFAAuF;IACvF,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAUD;;;GAGG;AACH,MAAM,WAAW,SACf,SAAQ,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,EAC/C,WAAW;IACb,8BAA8B;IAC9B,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC;IACjC,mCAAmC;IACnC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,CAAC;IACvC,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uFAAuF;IACvF,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,UAAU,SAAS;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,aAAc,SAAQ,SAAS;IAC9C,0BAA0B;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,mCAAmC;IACnC,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED;;;GAGG;AACH,qBAAa,IAAK,SAAQ,KAAK,CAAC,aAAa,CAAC,aAAa,EAAE,SAAS,CAAC;IACrE,OAAO,CAAC,WAAW,CAAiD;IACpE,OAAO,CAAC,sBAAsB,CAAwB;gBAE1C,KAAK,EAAE,aAAa;IAiBhC,OAAO,CAAC,mBAAmB;IAM3B,gBAAgB;IACA,iBAAiB;IAKjC,gBAAgB;IACA,kBAAkB,CAAC,SAAS,EAAE,aAAa;IA4B3D,OAAO,CAAC,gBAAgB,CAItB;IAEF,OAAO,CAAC,eAAe,CAErB;IAEF,6BAA6B;IAC7B,OAAO,CAAC,mBAAmB;IAI3B,2BAA2B;IAC3B,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,YAAY,CAGlB;IAEF,gBAAgB;IACA,MAAM,IAAI,KAAK,CAAC,YAAY;CAyF7C"}
|
|
@@ -21,6 +21,7 @@ function isTabLabel(item) {
|
|
|
21
21
|
}
|
|
22
22
|
/** Tabs meant to represent the current position in a page/section
|
|
23
23
|
* @public
|
|
24
|
+
* @deprecated in 4.12.x. Use {@link https://itwinui.bentley.com/docs/tabs iTwinUI Tabs} instead.
|
|
24
25
|
*/
|
|
25
26
|
class Tabs extends React.PureComponent {
|
|
26
27
|
constructor(props) {
|