diff --git a/common/changes/office-ui-fabric-react/cell-padding_2018-08-01-22-04.json b/common/changes/office-ui-fabric-react/cell-padding_2018-08-01-22-04.json new file mode 100644 index 0000000000000..db0bedb31a1d0 --- /dev/null +++ b/common/changes/office-ui-fabric-react/cell-padding_2018-08-01-22-04.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "packageName": "office-ui-fabric-react", + "comment": "Align cell and column padding in DetailsList", + "type": "minor" + } + ], + "packageName": "office-ui-fabric-react", + "email": "tmichon@microsoft.com" +} diff --git a/packages/office-ui-fabric-react/src/components/DetailsList/DetailsColumn.tsx b/packages/office-ui-fabric-react/src/components/DetailsList/DetailsColumn.tsx index 73f1cceeda01a..ca11c6b276b97 100644 --- a/packages/office-ui-fabric-react/src/components/DetailsList/DetailsColumn.tsx +++ b/packages/office-ui-fabric-react/src/components/DetailsList/DetailsColumn.tsx @@ -6,9 +6,9 @@ import { IColumn, ColumnActionsMode } from './DetailsList.types'; import { ITooltipHostProps } from '../../Tooltip'; import { IDragDropHelper, IDragDropOptions } from './../../utilities/dragdrop/interfaces'; import { IDetailsHeaderStyles } from './DetailsHeader.types'; +import { DEFAULT_CELL_STYLE_PROPS } from './DetailsRow.styles'; +import { ICellStyleProps } from './DetailsRow.types'; -const INNER_PADDING = 16; // Account for padding around the cell. -const ISPADDED_WIDTH = 24; const MOUSEDOWN_PRIMARY_BUTTON = 0; // for mouse down event we are using ev.button property, 0 means left button export interface IDetailsColumnProps extends React.Props { @@ -24,6 +24,7 @@ export interface IDetailsColumnProps extends React.Props { setDraggedItemIndex?: (itemIndex: number) => void; isDropped?: boolean; headerClassNames: IClassNames; + cellStyleProps?: ICellStyleProps; } export class DetailsColumn extends BaseComponent { @@ -40,7 +41,14 @@ export class DetailsColumn extends BaseComponent { } public render(): JSX.Element { - const { column, columnIndex, parentId, isDraggable, headerClassNames } = this.props; + const { + column, + columnIndex, + parentId, + isDraggable, + headerClassNames, + cellStyleProps = DEFAULT_CELL_STYLE_PROPS + } = this.props; const { onRenderColumnHeaderTooltip = this._onRenderColumnHeaderTooltip } = this.props; return ( @@ -62,7 +70,13 @@ export class DetailsColumn extends BaseComponent { )} data-is-draggable={isDraggable} draggable={isDraggable} - style={{ width: column.calculatedWidth! + INNER_PADDING + (column.isPadded ? ISPADDED_WIDTH : 0) }} + style={{ + width: + column.calculatedWidth! + + cellStyleProps.cellLeftPadding + + cellStyleProps.cellRightPadding + + (column.isPadded ? cellStyleProps.cellExtraRightPadding : 0) + }} data-automationid={'ColumnsHeaderColumn'} data-item-key={column.key} > diff --git a/packages/office-ui-fabric-react/src/components/DetailsList/DetailsHeader.base.tsx b/packages/office-ui-fabric-react/src/components/DetailsList/DetailsHeader.base.tsx index 2ad192c5bafa5..9a951cafc44b9 100644 --- a/packages/office-ui-fabric-react/src/components/DetailsList/DetailsHeader.base.tsx +++ b/packages/office-ui-fabric-react/src/components/DetailsList/DetailsHeader.base.tsx @@ -251,7 +251,7 @@ export class DetailsHeaderBase extends BaseComponent 0 && this.props.collapseAllVisibility === CollapseAllVisibility.visible ? ( -
+
) : null} @@ -276,6 +276,7 @@ export class DetailsHeaderBase extends BaseComponent, column.isResizable && this._renderColumnSizer(columnIndex) ]; diff --git a/packages/office-ui-fabric-react/src/components/DetailsList/DetailsHeader.styles.ts b/packages/office-ui-fabric-react/src/components/DetailsList/DetailsHeader.styles.ts index 9a6f565538822..18d42fcfae21c 100644 --- a/packages/office-ui-fabric-react/src/components/DetailsList/DetailsHeader.styles.ts +++ b/packages/office-ui-fabric-react/src/components/DetailsList/DetailsHeader.styles.ts @@ -10,6 +10,7 @@ import { keyframes } from '../../Styling'; import { IsFocusVisibleClassName } from '../../Utilities'; +import { DEFAULT_CELL_STYLE_PROPS } from './DetailsRow.styles'; const GlobalClassNames = { tooltipHost: 'ms-TooltipHost', @@ -31,13 +32,21 @@ const GlobalClassNames = { }; const values = { - rowHeight: 32, - cellPadding: 8, - isPaddedMargin: 24 + rowHeight: 32 }; export const getStyles = (props: IDetailsHeaderStyleProps): IDetailsHeaderStyles => { - const { theme, className, isSelectAllHidden, isAllSelected, isResizingColumn, isSizing, isAllCollapsed } = props; + const { + theme, + className, + isSelectAllHidden, + isAllSelected, + isResizingColumn, + isSizing, + isAllCollapsed, + cellStyleProps = DEFAULT_CELL_STYLE_PROPS + } = props; + const { semanticColors, palette } = theme; const classNames = getGlobalClassNames(GlobalClassNames, theme); @@ -84,7 +93,7 @@ export const getStyles = (props: IDetailsHeaderStyleProps): IDetailsHeaderStyles position: 'relative', display: 'inline-block;', boxSizing: 'border-box', - padding: `0 ${values.cellPadding}px`, + padding: `0 ${cellStyleProps.cellRightPadding}px 0 ${cellStyleProps.cellLeftPadding}px`, border: 'none', lineHeight: 'inherit', margin: '0', @@ -149,7 +158,7 @@ export const getStyles = (props: IDetailsHeaderStyleProps): IDetailsHeaderStyles cellWrapperPadded: [ { - paddingRight: values.isPaddedMargin + values.cellPadding + paddingRight: cellStyleProps.cellExtraRightPadding + cellStyleProps.cellRightPadding } ], @@ -168,6 +177,15 @@ export const getStyles = (props: IDetailsHeaderStyleProps): IDetailsHeaderStyles } ], + cellIsGroupExpander: [ + cellStyles, + { + paddingLeft: '8px', + paddingRight: '8px', + width: '36px' + } + ], + cellIsActionable: [ { selectors: { @@ -318,7 +336,7 @@ export const getStyles = (props: IDetailsHeaderStyleProps): IDetailsHeaderStyles alignItems: 'stretch', boxSizing: 'border-box', overflow: 'hidden', - padding: '0 8px 0 12px' + padding: `0 ${cellStyleProps.cellRightPadding}px 0 ${cellStyleProps.cellLeftPadding}px` } ], diff --git a/packages/office-ui-fabric-react/src/components/DetailsList/DetailsHeader.types.ts b/packages/office-ui-fabric-react/src/components/DetailsList/DetailsHeader.types.ts index 443e8c439ac58..4f12059badeda 100644 --- a/packages/office-ui-fabric-react/src/components/DetailsList/DetailsHeader.types.ts +++ b/packages/office-ui-fabric-react/src/components/DetailsList/DetailsHeader.types.ts @@ -7,6 +7,7 @@ import { ISelection, SelectionMode } from '../../utilities/selection/interfaces' import { ITheme, IStyle } from '../../Styling'; import { DetailsHeaderBase } from './DetailsHeader.base'; import { IColumn, DetailsListLayoutMode, IColumnReorderOptions } from './DetailsList.types'; +import { ICellStyleProps } from './DetailsRow.types'; export interface IDetailsHeader { /** sets focus into the header */ @@ -91,6 +92,8 @@ export interface IDetailsHeaderProps extends React.Props { /** Overriding class name */ className?: string; + + cellStyleProps?: ICellStyleProps; } export enum SelectAllVisibility { @@ -139,6 +142,8 @@ export type IDetailsHeaderStyleProps = Required