diff --git a/CHANGELOG.md b/CHANGELOG.md index 71ea670ac3..cbb12e4d18 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -47,6 +47,7 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm - Add `target` prop to `EventListener` component and `useEventListener()` hook @layershifter ([#2287](https://github.com/microsoft/fluent-ui-react/pull/2287)) - Add `disabled` prop accordion title @jurokapsiar ([#2290](https://github.com/microsoft/fluent-ui-react/pull/2290)) - Allow custom values for `size` in `FlexItem` @silviuavram ([#2313](https://github.com/microsoft/fluent-ui-react/pull/2313)) +- Move `zIndex` values from default variable values and styles to siteVariables object in Teams theme @pompomon ([#2311](https://github.com/microsoft/fluent-ui-react/pull/2311)) ### Documentation - Add per-component performance charts @miroslavstastny ([#2240](https://github.com/microsoft/fluent-ui-react/pull/2240)) diff --git a/packages/react/src/themes/teams/components/Chat/chatMessageStyles.ts b/packages/react/src/themes/teams/components/Chat/chatMessageStyles.ts index 3690ede409..c21c2a7d42 100644 --- a/packages/react/src/themes/teams/components/Chat/chatMessageStyles.ts +++ b/packages/react/src/themes/teams/components/Chat/chatMessageStyles.ts @@ -94,7 +94,7 @@ const chatMessageStyles: ComponentSlotStylesPrepared< borderRadius: v.borderRadius, boxShadow: v.actionMenuBoxShadow, // we need higher zIndex for the action menu in order to be displayed above the focus border of the chat message - zIndex: 1000, + zIndex: v.overlayZIndex, ...(initialPopperStyles as ICSSInJSStyle), @@ -163,7 +163,7 @@ const chatMessageStyles: ComponentSlotStylesPrepared< width: 'auto', borderRadius: '50%', top: pxToRem(4), - zIndex: 1, + zIndex: v.zIndex, [sidePosition]: 0, transform: p.badgePosition === 'start' ? 'translateX(-50%)' : 'translateX(50%)', } diff --git a/packages/react/src/themes/teams/components/Chat/chatMessageVariables.ts b/packages/react/src/themes/teams/components/Chat/chatMessageVariables.ts index b1bee0ca75..0e57d41ada 100644 --- a/packages/react/src/themes/teams/components/Chat/chatMessageVariables.ts +++ b/packages/react/src/themes/teams/components/Chat/chatMessageVariables.ts @@ -29,6 +29,8 @@ export interface ChatMessageVariables { reactionGroupBorderColor: string showActionMenu?: boolean timestampColorMine: string + zIndex: number + overlayZIndex: number } export default (siteVars): ChatMessageVariables => ({ @@ -60,4 +62,6 @@ export default (siteVars): ChatMessageVariables => ({ reactionGroupBorderColor: 'transparent', showActionMenu: undefined, timestampColorMine: siteVars.colors.grey[500], + zIndex: siteVars.zIndexes.foreground, + overlayZIndex: siteVars.zIndexes.overlay, }) diff --git a/packages/react/src/themes/teams/components/Dialog/dialogVariables.ts b/packages/react/src/themes/teams/components/Dialog/dialogVariables.ts index 46125fa610..d7edbbd95c 100644 --- a/packages/react/src/themes/teams/components/Dialog/dialogVariables.ts +++ b/packages/react/src/themes/teams/components/Dialog/dialogVariables.ts @@ -38,7 +38,7 @@ export default (siteVariables): Partial => ({ headerMargin: `0 0 ${pxToRem(8)} 0`, overlayBackground: 'rgba(37, 36, 36, .75)', // todo: update to a palette value when daisy has mapped one - overlayZIndex: 1000, + overlayZIndex: siteVariables.zIndexes.overlay, headerActionMargin: `${pxToRem(-3)} ${pxToRem(-8)} 0 0`, }) diff --git a/packages/react/src/themes/teams/components/Dropdown/dropdownStyles.ts b/packages/react/src/themes/teams/components/Dropdown/dropdownStyles.ts index 97b441ebe1..63ae3beee5 100644 --- a/packages/react/src/themes/teams/components/Dropdown/dropdownStyles.ts +++ b/packages/react/src/themes/teams/components/Dropdown/dropdownStyles.ts @@ -148,7 +148,7 @@ const dropdownStyles: ComponentSlotStylesPrepared pxToRem(v)) @@ -82,6 +83,7 @@ export default (siteVars): DropdownVariables => ({ toggleIndicatorSize: pxToRem(32), triggerButtonColorHover: siteVars.bodyColor, width: pxToRem(356), + overlayZIndex: siteVars.zIndexes.overlay, // these should only apply when there is content in the image/media slot: listItemHeaderFontSize: siteVars.fontSizes.medium, diff --git a/packages/react/src/themes/teams/components/Embed/embedStyles.ts b/packages/react/src/themes/teams/components/Embed/embedStyles.ts index 41650535e5..db1e0e4106 100644 --- a/packages/react/src/themes/teams/components/Embed/embedStyles.ts +++ b/packages/react/src/themes/teams/components/Embed/embedStyles.ts @@ -29,7 +29,7 @@ export default { ':hover': { [`& .${Embed.slotClassNames.control}`]: { opacity: 1, - zIndex: 1, + zIndex: v.zIndex, }, }, } diff --git a/packages/react/src/themes/teams/components/Embed/embedVariables.ts b/packages/react/src/themes/teams/components/Embed/embedVariables.ts index a2592cee96..cc9ea5461b 100644 --- a/packages/react/src/themes/teams/components/Embed/embedVariables.ts +++ b/packages/react/src/themes/teams/components/Embed/embedVariables.ts @@ -4,6 +4,7 @@ export interface EmbedVariables { width: string height: string focusBorderColor: string + zIndex: number } export default (siteVariables): EmbedVariables => ({ @@ -13,4 +14,5 @@ export default (siteVariables): EmbedVariables => ({ width: undefined, height: undefined, focusBorderColor: siteVariables.colors.brand[500], + zIndex: siteVariables.zIndexes.foreground, }) diff --git a/packages/react/src/themes/teams/components/List/listItemStyles.ts b/packages/react/src/themes/teams/components/List/listItemStyles.ts index a013736dd1..d54efcb050 100644 --- a/packages/react/src/themes/teams/components/List/listItemStyles.ts +++ b/packages/react/src/themes/teams/components/List/listItemStyles.ts @@ -72,7 +72,7 @@ const listItemStyles: ComponentSlotStylesPrepared { return { minHeight: pxToRem(48), rootPadding: `0 ${pxToRem(18)} 0 ${pxToRem(20)}`, + zIndex: siteVariables.zIndexes.foreground, // Header // TODO: prod app uses 17.5px here, it should be 16px per the design guide! diff --git a/packages/react/src/themes/teams/components/Menu/menuItemStyles.ts b/packages/react/src/themes/teams/components/Menu/menuItemStyles.ts index 081c70bc9c..896cf78122 100644 --- a/packages/react/src/themes/teams/components/Menu/menuItemStyles.ts +++ b/packages/react/src/themes/teams/components/Menu/menuItemStyles.ts @@ -134,14 +134,14 @@ const pointingBeak = ({ height: pxToRem(10), border: 'none', ...borders, - zIndex: 2, + zIndex: v.beakZIndex, transition: 'background .1s ease', }, } } const menuItemStyles: ComponentSlotStylesPrepared = { - wrapper: ({ props, variables: v, theme }): ICSSInJSStyle => { + wrapper: ({ props, variables: v }): ICSSInJSStyle => { const { active, disabled, @@ -425,7 +425,7 @@ const menuItemStyles: ComponentSlotStylesPrepared ({ zIndex: 1000 }), + menu: ({ variables: v }) => ({ zIndex: v.menuZIndex }), indicator: ({ props: p }) => ({ position: 'relative', diff --git a/packages/react/src/themes/teams/components/Menu/menuVariables.ts b/packages/react/src/themes/teams/components/Menu/menuVariables.ts index 8ea319c5c3..d4680ac5dd 100644 --- a/packages/react/src/themes/teams/components/Menu/menuVariables.ts +++ b/packages/react/src/themes/teams/components/Menu/menuVariables.ts @@ -57,6 +57,9 @@ export interface MenuVariables { dividerHeight: string borderWidth: string + + menuZIndex: number + beakZIndex: number } export default (siteVars: any): MenuVariables => { @@ -122,5 +125,7 @@ export default (siteVars: any): MenuVariables => { dividerHeight: pxToRem(1), borderWidth: pxToRem(1), + menuZIndex: siteVars.zIndexes.overlay, + beakZIndex: siteVars.zIndexes.menuItem, } } diff --git a/packages/react/src/themes/teams/components/Popup/popupVariables.ts b/packages/react/src/themes/teams/components/Popup/popupVariables.ts index 7e311d2280..4e1d1e682f 100644 --- a/packages/react/src/themes/teams/components/Popup/popupVariables.ts +++ b/packages/react/src/themes/teams/components/Popup/popupVariables.ts @@ -5,7 +5,7 @@ export interface PopupVariables { } export default (siteVars: any): PopupVariables => ({ - zIndex: 1000, + zIndex: siteVars.zIndexes.overlay, contentColor: siteVars.colorScheme.default.foreground, contentBackgroundColor: siteVars.colorScheme.default.background, }) diff --git a/packages/react/src/themes/teams/components/Toolbar/toolbarMenuStyles.ts b/packages/react/src/themes/teams/components/Toolbar/toolbarMenuStyles.ts index 9fd3fafd52..d8afa903cb 100644 --- a/packages/react/src/themes/teams/components/Toolbar/toolbarMenuStyles.ts +++ b/packages/react/src/themes/teams/components/Toolbar/toolbarMenuStyles.ts @@ -7,7 +7,6 @@ const toolbarMenuStyles = { return { display: 'flex', - zIndex: 1000, flexDirection: 'column', listStyleType: 'none', margin: 0, @@ -19,6 +18,7 @@ const toolbarMenuStyles = { borderWidth: v.menuBorderWidth, borderRadius: v.menuBorderRadius, width: v.menuWidth, + zIndex: v.overlayZIndex, } }, } diff --git a/packages/react/src/themes/teams/components/Toolbar/toolbarVariables.ts b/packages/react/src/themes/teams/components/Toolbar/toolbarVariables.ts index e9b1520a92..339f4ea210 100644 --- a/packages/react/src/themes/teams/components/Toolbar/toolbarVariables.ts +++ b/packages/react/src/themes/teams/components/Toolbar/toolbarVariables.ts @@ -65,6 +65,8 @@ export interface ToolbarVariables { customItemHorizontalPadding: string customItemVerticalPadding: string + + overlayZIndex: number } export default (siteVars: any): ToolbarVariables => ({ @@ -120,4 +122,6 @@ export default (siteVars: any): ToolbarVariables => ({ customItemHorizontalPadding: pxToRem(16), customItemVerticalPadding: pxToRem(4), + + overlayZIndex: siteVars.zIndexes.overlay, }) diff --git a/packages/react/src/themes/teams/components/Tooltip/tooltipVariables.ts b/packages/react/src/themes/teams/components/Tooltip/tooltipVariables.ts index e4ae68c059..df59974d64 100644 --- a/packages/react/src/themes/teams/components/Tooltip/tooltipVariables.ts +++ b/packages/react/src/themes/teams/components/Tooltip/tooltipVariables.ts @@ -3,5 +3,5 @@ export interface TooltipVariables { } export default (siteVars: any): TooltipVariables => ({ - zIndex: 1000, + zIndex: siteVars.zIndexes.overlay, }) diff --git a/packages/react/src/themes/teams/getBorderFocusStyles.ts b/packages/react/src/themes/teams/getBorderFocusStyles.ts index ce78a1d596..c668a19f17 100644 --- a/packages/react/src/themes/teams/getBorderFocusStyles.ts +++ b/packages/react/src/themes/teams/getBorderFocusStyles.ts @@ -55,14 +55,14 @@ const getBorderFocusStyles = (args: BorderFocusStyles): ICSSInJSStyle => { borderColor: 'transparent', ':before': getPseudoElementStyles({ - zIndex: '1', + zIndex: sv.zIndexes.foreground, borderEdgeValue: borderPadding == null ? '0' : `-${borderPadding}`, borderColor: focusInnerBorderColor, ...defaultBorderStyles, }), ':after': getPseudoElementStyles({ - zIndex: '1', + zIndex: sv.zIndexes.foreground, borderEdgeValue: borderPadding == null ? `-${borderWidth}` diff --git a/packages/react/src/themes/teams/siteVariables.ts b/packages/react/src/themes/teams/siteVariables.ts index 2703f88f72..46b80466d0 100644 --- a/packages/react/src/themes/teams/siteVariables.ts +++ b/packages/react/src/themes/teams/siteVariables.ts @@ -61,6 +61,18 @@ export const lineHeightMedium = 1.4286 export const lineHeightLarge = 1.3333 export const lineHeightLarger = 1.3333 +// +// Z-INDEX +// Used to maintain proper stack order of components +// +export const zIndexes: Record = { + background: 0, // Default value + foreground: 1, // Put a component in front + menuItem: 2, // Currently used only for menu item beak element + overlay: 1000, // Dialog/popup/menu overlays + debug: 999999999, // for debug purposes +} + // // SEMANTIC ASSIGNMENTS //