Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"changes": [
{
"packageName": "office-ui-fabric-react",
"comment": "Added overflowMenuProps property to CommandBar",
"type": "minor"
}
],
"packageName": "office-ui-fabric-react",
"email": "[email protected]"
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ import {
getId,
getNativeProps,
KeyCodes,
createRef
createRef,
css
} from '../../Utilities';
import { Icon } from '../../Icon';
import { DirectionalHint } from '../../common/DirectionalHint';
Expand Down Expand Up @@ -431,7 +432,7 @@ export class BaseButton extends BaseComponent<IBaseButtonProps, IBaseButtonState
directionalHint={ DirectionalHint.bottomLeftEdge }
{ ...menuProps }
shouldFocusOnContainer={ this.state.menuProps ? this.state.menuProps.shouldFocusOnContainer : undefined }
className={ 'ms-BaseButton-menuhost ' + menuProps.className }
className={ css('ms-BaseButton-menuhost', menuProps.className) }
target={ this._isSplitButton ? this._splitButtonContainer.current : this._buttonElement.current }
labelElementId={ this._labelId }
onDismiss={ onDismiss }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ export class CommandBar extends BaseComponent<ICommandBarProps, ICommandBarState
</FocusZone>
{ (contextualMenuProps) ?
(<ContextualMenu
className={ css('ms-CommandBar-menuHost') }
className={ 'ms-CommandBar-menuHost' }
directionalHint={ DirectionalHint.bottomAutoEdge }
{ ...contextualMenuProps }
target={ contextualMenuTarget }
Expand Down Expand Up @@ -386,7 +386,7 @@ export class CommandBar extends BaseComponent<ICommandBarProps, ICommandBarState
}

private _updateRenderedItems(): void {
const { items, overflowItems } = this.props;
const { items, overflowItems, overflowMenuProps } = this.props;
const commandSurface = this._commandSurface.current;
const farCommandSurface = this._farCommandSurface.current;
const commandBarRegion = this._commandBarRegion.current;
Expand Down Expand Up @@ -436,8 +436,10 @@ export class CommandBar extends BaseComponent<ICommandBarProps, ICommandBarState
}

const renderedContextualMenuProps = this._getContextualMenuPropsAfterUpdate(
renderedItems.concat(this.state.renderedFarItems!),
renderedOverflowItems!);
renderedItems.concat(this.state.renderedFarItems!),
renderedOverflowItems!,
overflowMenuProps!
);

this.setState({
renderedItems: renderedItems,
Expand Down Expand Up @@ -477,7 +479,7 @@ export class CommandBar extends BaseComponent<ICommandBarProps, ICommandBarState
this.setState({
expandedMenuId: ev.currentTarget.id,
expandedMenuItemKey: OVERFLOW_KEY,
contextualMenuProps: { items: this.state.renderedOverflowItems! },
contextualMenuProps: { ...this.props.overflowMenuProps!, items: this.state.renderedOverflowItems! },
contextualMenuTarget: ev.currentTarget
});
}
Expand All @@ -490,7 +492,7 @@ export class CommandBar extends BaseComponent<ICommandBarProps, ICommandBarState
const { contextualMenuProps } = this.state;

if (contextualMenuProps && contextualMenuProps.onDismiss) {
this.state.contextualMenuProps!.onDismiss!(ev);
contextualMenuProps!.onDismiss!(ev);
}

this.setState({
Expand All @@ -509,16 +511,17 @@ export class CommandBar extends BaseComponent<ICommandBarProps, ICommandBarState
renderedItems: nextProps.items || [],
contextualMenuProps: this._getContextualMenuPropsAfterUpdate(
nextProps.items.concat(nextProps.farItems!),
nextProps.overflowItems!)!,
nextProps.overflowItems!,
nextProps.overflowMenuProps!)!,
renderedFarItems: nextProps.farItems || undefined
};
}

private _getContextualMenuPropsAfterUpdate(renderedItems: IContextualMenuItem[], overflowItems: IContextualMenuItem[]): IContextualMenuProps | undefined {
private _getContextualMenuPropsAfterUpdate(renderedItems: IContextualMenuItem[], overflowItems: IContextualMenuItem[], overflowMenuProps: Partial<IContextualMenuProps>): IContextualMenuProps | undefined {
if (this.state && this.state.expandedMenuItemKey) {
if (this.state.expandedMenuItemKey === OVERFLOW_KEY) {
// Keep the overflow menu open
return { items: overflowItems };
return { ...overflowMenuProps, items: overflowItems };
} else {
// Find the currently open key in the new props
const matchingItem = renderedItems.filter(item => item.key === this.state.expandedMenuItemKey);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import * as React from 'react';
import { IContextualMenuItem } from '../ContextualMenu/index';
import { IContextualMenuItem, IContextualMenuProps } from '../ContextualMenu/index';

export interface ICommandBar {
/**
Expand Down Expand Up @@ -36,6 +36,11 @@ export interface ICommandBarProps extends React.HTMLAttributes<HTMLDivElement> {
*/
overflowItems?: IContextualMenuItem[];

/**
* Menu props to be passed to overflow elipsis
*/
overflowMenuProps?: Partial<IContextualMenuProps>;

/**
* Text to be read by screen readers if there are overflow items and focus is on elipsis button
*/
Expand Down