4.17.0 Change Notes
Table of contents:
@itwin/core-react
Deprecations
- All
SCSS
andCSS
variables are deprecated in all of AppUI packages. Applications should use iTwinUI variables instead. In the table below you can find the replacements for commonly used variables:
Variable | Replacement |
---|---|
--buic-accessory-hollow |
--iui-color-white |
--buic-accessory-primary |
--iui-color-background-accent-hover or rgb(000, 139, 225) |
--buic-accessory-success |
--iui-color-background-positive-hover or rgb(083, 162, 026) |
--buic-accessory-alert |
--iui-color-background-negative-hover or rgb(211, 010, 010) |
--buic-accessory-warning |
--iui-color-background-warning-hover or rgb(241, 139, 018) |
--buic-accessory-primary-tint |
--iui-color-border-informational or rgb(165, 215, 245) |
--buic-accessory-success-tint |
--iui-color-border-positive or rgb(195, 225, 175) |
--buic-accessory-alert-tint |
--iui-color-border-negative or rgb(239, 169, 169) |
--buic-accessory-warning-tint |
--iui-color-border-warning or rgb(249, 215, 171) |
--buic-background-1 |
--iui-color-background |
--buic-background-2 |
--iui-color-background-hover |
--buic-background-3 |
--iui-color-background-backdrop |
--buic-background-4 |
--iui-color-background-backdrop-hover |
--buic-background-5 |
--iui-color-background-disabled |
--buic-background-editable |
--iui-color-background |
--buic-background-primary |
--iui-color-background-accent |
--buic-background-tooltip |
hsl(var(--iui-color-background-hsl) / 0.9) |
--buic-background-scrollbar |
hsl(var(--iui-color-foreground-hsl) / var(--iui-opacity-4)) |
--buic-background-scrollbar-hover |
hsl(var(--iui-color-foreground-hsl) / var(--iui-opacity-3)) |
--buic-foreground-body-rgb |
--iui-color-foreground-hsl |
--buic-foreground-body |
--iui-color-text |
--buic-foreground-body-reverse-rgb |
--iui-color-foreground-hsl |
--buic-foreground-body-reverse |
hsl(var(--iui-color-background-hsl) / var(--iui-opacity-2)) |
--buic-foreground-muted |
--iui-color-text-muted |
--buic-foreground-disabled |
--iui-color-text-disabled |
--buic-foreground-activehover |
--iui-color-text |
--buic-inputs-border |
hsl(var(--iui-color-foreground-hsl) / var(--iui-opacity-4)) |
--buic-inputs-boxshadow |
--iui-focus-box-shadow |
--buic-popup-boxshadow |
--buic-inputs-boxshadow |
--buic-foreground-primary |
--iui-color-icon-accent |
--buic-foreground-primary-tone |
--iui-color-text-accent-hover |
--buic-foreground-focus |
--iui-color-text-accent-hover |
--buic-foreground-focus-border |
--buic-inputs-border |
--buic-focus-boxshadow |
hsl(var(--iui-color-accent-hsl) / var(--iui-opacity-4)) |
--buic-focus-boxshadow-gradient1 |
hsl(var(--buic-foreground-primary-tone-rgb) / 0) |
--buic-focus-boxshadow-gradient2 |
hsl(var(--buic-foreground-primary-rgb) / 0.65) |
--buic-foreground-accessory |
--iui-color-white |
--buic-foreground-success |
--iui-color-text-positive |
--buic-foreground-positive |
--iui-color-text-positive |
--buic-foreground-positive-rgb |
--iui-color-positive-hsl |
--buic-foreground-alert |
--iui-color-text-negative |
--buic-foreground-negative |
--iui-color-text-negative |
--buic-foreground-negative-rgb |
--iui-color-negative-hsl |
--buic-foreground-warning |
--iui-color-text-warning |
--buic-foreground-warning-rgb |
--iui-color-warning-hsl |
--buic-background-focus-overlay |
hsl(var(--iui-opacity-6)) |
--buic-background-hover-overlay |
hsl(var(--iui-color-accent-hsl) / var(--iui-opacity-5)) |
--buic-background-active-overlay |
hsl(var(--iui-color-accent-hsl) / var(--iui-opacity-5)) |
--buic-background-pressed-overlay |
hsl(var(--iui-color-accent-hsl) / 0.3) |
--buic-background-card |
hsl(var(--iui-color-background-hsl) / 0.9) |
--buic-background-striped_row |
hsl(var(--iui-color-foreground-hsl) / 0.03) |
--buic-background-titlebar |
--iui-color-background-disabled |
--buic-background-dialog-stroke |
--iui-color-background-disabled |
--buic-background-widget-stroke |
--iui-color-background-disabled |
--buic-background-control-stroke |
--iui-color-background-disabled |
--buic-background-panel-stroke |
--iui-color-background-disabled |
--buic-background-toolbutton-stroke |
--iui-color-background-disabled |
--buic-background-titlebar-outoffocus |
--iui-color-background-backdrop-hover |
--buic-background-divider |
--iui-color-background-backdrop-hover |
--buic-background-widget-element-stroke |
--iui-color-background-backdrop-hover |
--buic-background-statusbar |
--iui-color-background-backdrop-hover |
--buic-background-table-header |
--iui-color-background-backdrop-hover |
--buic-background-control-stroke-disabled |
--iui-color-background-backdrop-hover |
--buic-background-tab-inactive |
--iui-color-background-backdrop |
--buic-background-toolbutton-inactive |
--iui-color-background-backdrop |
--buic-background-context-menu |
--iui-color-background-backdrop |
--buic-background-widget-panel |
--iui-color-background-backdrop |
--buic-background-placeholder |
--iui-color-background-backdrop |
--buic-background-control-disabled |
--iui-color-background-backdrop |
--buic-background-tab-active |
--iui-color-background-hover |
--buic-background-dialog |
--iui-color-background-hover |
--buic-background-widget |
--iui-color-background-hover |
--buic-background-window |
--iui-color-background-hover |
--buic-background-toolbar |
--iui-color-background-hover |
--buic-background-panel |
--iui-color-background-hover |
--buic-background-control |
--iui-color-background |
--buic-row-selection |
--iui-color-background-accent-muted |
--buic-row-hover |
--iui-color-background-hover |
--buic-button-gradient1 |
rgba(var(--iui-color-foreground-body-invert-rgb), 0) |
--buic-button-gradient2 |
rgba(var(--iui-color-foreground-body-invert-rgb), 0.25) |
@itwin/appui-react
Deprecations
-
Deprecated
AccuDrawDialogProps
,AccuDrawFieldContainerProps
,AccuDrawInputFieldProps
,BackstageComposerProps
,ConfigurableUiContentProps
,SplitPaneProps
,StatusBarComposerProps
,ExtensibleToolbarProps
,UiSettingsProviderProps
,BasicNavigationWidgetProps
,BasicToolWidgetProps
,ContentToolWidgetComposerProps
,NavigationAidHostProps
,NavigationWidgetComposerProps
,ToolWidgetComposerProps
,ViewToolWidgetComposerProps
in favor ofReact.ComponentProps<typeof ...>
. #991
Usage example:import { AccuDrawDialog } from "@itwin/appui-react"; type AccuDrawDialogProps = React.ComponentProps<typeof AccuDrawDialog>;
-
Deprecated
FrameworkFrontstages.clearFrontstageProviders
, useFrameworkFrontstages.clearFrontstages
instead. #1022 -
Deprecated
UiFramework.setIsUiVisible
andUiFramework.getIsUiVisible
. UseUiFramework.visibility.isUiVisible
instead. #1023 -
Deprecated
BaseUiItemsProvider
,StandardContentToolsProvider
,StandardNavigationToolsProvider
,StandardStatusbarItemsProvider
classes. UseUiItemsProviderOverrides
to specify supported frontstages when registering the provider. #1024 -
Deprecated
DefaultContentToolsAppData
interface that is a remnant of discontinued frontstage APIs. #1024 -
Deprecated
StandardContentToolsUiItemsProvider.provideStatusBarItems
,StandardContentToolsUiItemsProvider.provideToolbarItems
,StandardNavigationToolsUiItemsProvider.provideToolbarItems
,StandardStatusbarUiItemsProvider.provideStatusBarItems
methods. Useget*
variants instead. #1024 -
Deprecated
floatingContentControls
getter ofFrontstageDef
class that used a deprecatedContentControl
class. Use floating widgets instead. #1030 -
Deprecated
useDefaultStatusBarItems
anduseUiItemsProviderStatusBarItems
hooks, which require an internal class as a parameter. UseStatusBarComposer
component instead. #1037 -
Deprecated
useUiItemsProviderBackstageItems
hook, which requires an internal class as a parameter. UseBackstageComposer
component instead. #1037
Additions
- Added
UiFramework.onIModelConnectionChanged
event to get notified whenever the iModel targeted byUiFramework.getIModelConnection()
changes. This is a replacement for listening to the deprecatedSessionStateActionId.SetIModelConnection
. #1027 - Added
ConditionalBooleanValue
andConditionalStringValue
class re-exports from@itwin/appui-abstract
package. #1031 - Added
StandardContentLayouts
,ContentLayoutProps
,LayoutFragmentProps
,LayoutHorizontalSplitProps
,LayoutSplitPropsBase
, andLayoutVerticalSplitProps
interfaces from@itwin/appui-abstract
package. #1033 - Added a generic
ConditionalValue<T>
interface to track the conditional value of any type. This interface can be used as a replacement for existingConditionalBooleanValue
andConditionalStringValue
classes. #1036
// Before
interface Item {
isSelected: ConditionalBooleanValue;
}
const item: Item = {
isSelected: new ConditionalBooleanValue(() => false, ["ev-1"]),
};
// After
interface Item {
isSelected: ConditionalValue<boolean>;
}
const item: Item = {
isSelected: {
getValue: () => false,
eventIds: ["ev-1"],
},
};
Additionally, any type can be used for the value.
interface Props {
isSelected: ConditionalValue<"yes" | "no">;
}
// Usage from the component
function Component({ isSelected }: Props) {
const selected = useConditionalValue(
isSelected.getValue,
isSelected.eventIds
); // "yes" | "no"
if (selected === "yes") return <div>Selected</div>;
return <div>Not selected</div>;
}
- Added
renderActiveStrip
property toContentProps
interface to control rendering of the active strip. #1036
const content: ContentProps = {
id: "test-content",
classId: "",
content: <>Content</>,
// Active strip will never be rendered for this content.
renderActiveStrip: false,
};
Alternatively, a conditional value can be used to control the rendering of the active strip.
const content: ContentProps = {
// ...
renderActiveStrip: {
getValue: () => {
// Return `true` to render the strip.
// Return `false` to hide the strip.
// Return `undefined` to use the default behavior: the strip is rendered if the content is active and multiple contents are available.
return false;
},
// `getValue()` must be called to sync the value when `ev-1` event is fired via `SyncUiEventDispatcher`.
eventIds: ["ev-1"],
},
};
Changes
- Allow to set the available snap modes in
SnapModeField
component. #974 - Bump
StandardContentToolsUiItemsProvider
,StandardStatusbarUiItemsProvider
classes to@public
. #1024 - Bump
content
property ofContentProps
interface to@public
. #1030 - Content layout will now track
ContentOverlay
components to determine if the active strip should be rendered for the active content. #1030 - Bump
useConditionalValue
hook to@public
. #1036
@itwin/components-react
Deprecations
-
Deprecated
HighlightedTextProps
,EditorContainerProps
,OkCancelProps
,FavoritePropertyListProps
,ParsedInputProps
,LinksRendererProps
,VirtualizedPropertyGridWithDataProviderProps
,ControlledSelectableContentProps
,SelectableContentProps
,TreeNodeContentProps
,TreeNodeIconProps
in favor ofReact.ComponentProps<typeof ...>
. #991Usage example:
import { HighlightedText } from "@itwin/components-react"; type HighlightedTextProps = React.ComponentProps<typeof HighlightedText>;
-
Deprecated
defaultPropertyFilterBuilderRuleValidator
. Newly addeduseDefaultPropertyFilterBuilderRuleValidator
should be used instead. #1000
Additions
- Added
useDefaultPropertyFilterBuilderRuleValidator
hook to get default validator for rules inPropertyFilterBuilder
component. #1000
Changes
- Allow last rule in rule group to be deleted by setting allowLastRuleDelete param in removeItem action in
PropertyFilterBuilder
component. #1034
@itwin/imodel-components-react
Deprecations
-
Deprecated
FormatPanelProps
,FormatPrecisionProps
,FormatSampleProps
,FormatTypeOptionProps
,FormatUnitLabelProps
,FormatUnitsProps
,MiscFormatOptionsProps
,QuantityFormatPanelProps
in favor ofReact.ComponentProps<typeof ...>
. #991Usage example:
import { FormatUnits } from "@itwin/imodel-components-react"; type FormatUnitsProps = React.ComponentProps<typeof FormatUnits>;